diff --git a/development/comfy-router/api.mdx b/development/comfy-router/api.mdx index c93737b31..2cdf94520 100644 --- a/development/comfy-router/api.mdx +++ b/development/comfy-router/api.mdx @@ -172,6 +172,8 @@ Persist the key with the model ID and request body **before sending**. Reuse it Keys are shared within the workspace carried by the credential, or scoped to the user when it carries no workspace. Use a UUID unique across that scope and retry with the same credential. Reusing another workspace member's key can return their recorded result or a conflict; changing credentials can start a separate, billable call. +### Timeouts and collection {#timeouts-and-collection} + Router retains keyed response or collection state for 24 hours; a retry does not start a new retention window. Once that state expires, do not expect the old key to recover a result or prevent a new dispatch. A key also does not make an expired asset URL usable again. ### Retry outcomes diff --git a/docs.json b/docs.json index 07acbbfd9..ee71e91fe 100644 --- a/docs.json +++ b/docs.json @@ -6674,9 +6674,370 @@ "group": "Comfy Router", "pages": [ "zh/development/comfy-router/quickstart", - "zh/development/comfy-router/models", + "zh/development/comfy-router/api", + "zh/development/comfy-router/headers", "zh/development/comfy-router/reference", - "zh/development/comfy-router/limitations" + "zh/development/comfy-router/limitations", + { + "group": "Models", + "pages": [ + "zh/development/comfy-router/models", + { + "group": "Anthropic", + "pages": [ + "zh/development/comfy-router/models/anthropic/claude-fable-5-1/code", + "zh/development/comfy-router/models/anthropic/claude-fable-5/code", + "zh/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code", + "zh/development/comfy-router/models/anthropic/claude-opus-4-6/code", + "zh/development/comfy-router/models/anthropic/claude-opus-4-7/code", + "zh/development/comfy-router/models/anthropic/claude-opus-4-8/code", + "zh/development/comfy-router/models/anthropic/claude-opus-5/code", + "zh/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code", + "zh/development/comfy-router/models/anthropic/claude-sonnet-4-6/code", + "zh/development/comfy-router/models/anthropic/claude-sonnet-5/code" + ] + }, + { + "group": "Beeble", + "pages": [ + "zh/development/comfy-router/models/beeble/switchx/code" + ] + }, + { + "group": "Black Forest Labs", + "pages": [ + "zh/development/comfy-router/models/black-forest-labs/erase-v1/code", + "zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code", + "zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code", + "zh/development/comfy-router/models/black-forest-labs/flux-2-max/code", + "zh/development/comfy-router/models/black-forest-labs/flux-2-pro/code", + "zh/development/comfy-router/models/black-forest-labs/flux-3-video/code", + "zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code", + "zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code", + "zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code", + "zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code", + "zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code", + "zh/development/comfy-router/models/black-forest-labs/video-edit-v1/code", + "zh/development/comfy-router/models/black-forest-labs/vto-v1/code" + ] + }, + { + "group": "Bria", + "pages": [ + "zh/development/comfy-router/models/bria/fibo/code", + "zh/development/comfy-router/models/bria/image-edit-erase/code", + "zh/development/comfy-router/models/bria/image-edit-expand/code", + "zh/development/comfy-router/models/bria/image-edit-gen-fill/code", + "zh/development/comfy-router/models/bria/image-edit-increase-resolution/code", + "zh/development/comfy-router/models/bria/image-edit-remove-background/code", + "zh/development/comfy-router/models/bria/structured-instruction/code", + "zh/development/comfy-router/models/bria/video-edit-green-screen/code", + "zh/development/comfy-router/models/bria/video-edit-remove-background/code", + "zh/development/comfy-router/models/bria/video-edit-replace-background/code" + ] + }, + { + "group": "BytePlus", + "pages": [ + "zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code", + "zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code", + "zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code", + "zh/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code", + "zh/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code", + "zh/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code", + "zh/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code", + "zh/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code", + "zh/development/comfy-router/models/byteplus/seed-audio-1-0/code", + "zh/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code", + "zh/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code", + "zh/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code", + "zh/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code", + "zh/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code", + "zh/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code", + "zh/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code", + "zh/development/comfy-router/models/byteplus/seedream-4-0-250828/code", + "zh/development/comfy-router/models/byteplus/seedream-4-5-251128/code", + "zh/development/comfy-router/models/byteplus/seedream-5-0-260128/code", + "zh/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code" + ] + }, + { + "group": "Elevenlabs", + "pages": [ + "zh/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code", + "zh/development/comfy-router/models/elevenlabs/eleven-v3/code" + ] + }, + { + "group": "fal", + "pages": [ + "zh/development/comfy-router/models/fal/h3-max-turbo/code", + "zh/development/comfy-router/models/fal/h3-max/code", + "zh/development/comfy-router/models/fal/patina/code" + ] + }, + { + "group": "Freepik", + "pages": [ + "zh/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code", + "zh/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code", + "zh/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code", + "zh/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code" + ] + }, + { + "group": "Gemini Interactions", + "pages": [ + "zh/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code", + "zh/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code" + ] + }, + { + "group": "Google", + "pages": [ + "zh/development/comfy-router/models/google/gemini-2-5-flash-image/code", + "zh/development/comfy-router/models/google/gemini-3-1-flash-lite/code", + "zh/development/comfy-router/models/google/gemini-3-7-flash/code", + "zh/development/comfy-router/models/google/gemini-3-8-flash/code", + "zh/development/comfy-router/models/google/gemini/code", + "zh/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code", + "zh/development/comfy-router/models/google/imagen-3-0-generate-001/code", + "zh/development/comfy-router/models/google/imagen-3-0-generate-002/code", + "zh/development/comfy-router/models/google/nano-banana-2-lite/code", + "zh/development/comfy-router/models/google/nano-banana-2/code", + "zh/development/comfy-router/models/google/nano-banana-pro/code" + ] + }, + { + "group": "HeyGen", + "pages": [ + "zh/development/comfy-router/models/heygen/starfish/code" + ] + }, + { + "group": "Ideogram", + "pages": [ + "zh/development/comfy-router/models/ideogram/ideogram-v3/code", + "zh/development/comfy-router/models/ideogram/ideogram-v4/code", + "zh/development/comfy-router/models/ideogram/p-image-ideogram/code" + ] + }, + { + "group": "Kling", + "pages": [ + "zh/development/comfy-router/models/kling/kling-3-0-turbo/code", + "zh/development/comfy-router/models/kling/kling-image-o1/code", + "zh/development/comfy-router/models/kling/kling-v1-5/code", + "zh/development/comfy-router/models/kling/kling-v1-6/code", + "zh/development/comfy-router/models/kling/kling-v1/code", + "zh/development/comfy-router/models/kling/kling-v2-1-master/code", + "zh/development/comfy-router/models/kling/kling-v2-1/code", + "zh/development/comfy-router/models/kling/kling-v2-5-turbo/code", + "zh/development/comfy-router/models/kling/kling-v2-6/code", + "zh/development/comfy-router/models/kling/kling-v2-master/code", + "zh/development/comfy-router/models/kling/kling-v3-omni/code", + "zh/development/comfy-router/models/kling/kling-v3/code", + "zh/development/comfy-router/models/kling/kling-video-o1/code", + "zh/development/comfy-router/models/kling/videos-avatar-image2video/code", + "zh/development/comfy-router/models/kling/videos-lip-sync/code", + "zh/development/comfy-router/models/kling/videos-video-extend/code" + ] + }, + { + "group": "Krea", + "pages": [ + "zh/development/comfy-router/models/krea/krea-2-large/code", + "zh/development/comfy-router/models/krea/krea-2-medium-turbo/code", + "zh/development/comfy-router/models/krea/krea-2-medium/code", + "zh/development/comfy-router/models/krea/krea-2/code" + ] + }, + { + "group": "LTX", + "pages": [ + "zh/development/comfy-router/models/ltx/ltx-2-5-fast/code", + "zh/development/comfy-router/models/ltx/ltx-2-5-pro/code" + ] + }, + { + "group": "Luma", + "pages": [ + "zh/development/comfy-router/models/luma/photon-1/code", + "zh/development/comfy-router/models/luma/photon-flash-1/code", + "zh/development/comfy-router/models/luma/ray-2/code", + "zh/development/comfy-router/models/luma/ray-flash-2/code" + ] + }, + { + "group": "Luma 2", + "pages": [ + "zh/development/comfy-router/models/luma_2/uni-1-max/code", + "zh/development/comfy-router/models/luma_2/uni-1/code" + ] + }, + { + "group": "Meshy", + "pages": [ + "zh/development/comfy-router/models/meshy/animations/code", + "zh/development/comfy-router/models/meshy/meshy-5/code", + "zh/development/comfy-router/models/meshy/meshy-6/code", + "zh/development/comfy-router/models/meshy/meshy-7/code", + "zh/development/comfy-router/models/meshy/remesh/code", + "zh/development/comfy-router/models/meshy/rigging/code" + ] + }, + { + "group": "MiniMax", + "pages": [ + "zh/development/comfy-router/models/minimax/minimax-h3/code" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "zh/development/comfy-router/models/moonvalley/image-to-video/code", + "zh/development/comfy-router/models/moonvalley/text-to-image/code", + "zh/development/comfy-router/models/moonvalley/text-to-video/code", + "zh/development/comfy-router/models/moonvalley/video-to-video-resize/code", + "zh/development/comfy-router/models/moonvalley/video-to-video/code" + ] + }, + { + "group": "OpenAI", + "pages": [ + "zh/development/comfy-router/models/openai/gpt-4-1-mini/code", + "zh/development/comfy-router/models/openai/gpt-4-1-nano/code", + "zh/development/comfy-router/models/openai/gpt-4-1/code", + "zh/development/comfy-router/models/openai/gpt-4o/code", + "zh/development/comfy-router/models/openai/gpt-5-5-pro/code", + "zh/development/comfy-router/models/openai/gpt-5-5/code", + "zh/development/comfy-router/models/openai/gpt-5-6-luna/code", + "zh/development/comfy-router/models/openai/gpt-5-6-sol/code", + "zh/development/comfy-router/models/openai/gpt-5-6-terra/code", + "zh/development/comfy-router/models/openai/gpt-5-mini/code", + "zh/development/comfy-router/models/openai/gpt-5-nano/code", + "zh/development/comfy-router/models/openai/gpt-5/code", + "zh/development/comfy-router/models/openai/gpt-6-astra/code", + "zh/development/comfy-router/models/openai/gpt-image-1-5/code", + "zh/development/comfy-router/models/openai/gpt-image-1/code", + "zh/development/comfy-router/models/openai/gpt-image-2-5-flare/code", + "zh/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code", + "zh/development/comfy-router/models/openai/gpt-image-2/code", + "zh/development/comfy-router/models/openai/o1-pro/code", + "zh/development/comfy-router/models/openai/o1/code", + "zh/development/comfy-router/models/openai/o3/code", + "zh/development/comfy-router/models/openai/o4-mini/code" + ] + }, + { + "group": "Pruna", + "pages": [ + "zh/development/comfy-router/models/pruna/p-video-2/code" + ] + }, + { + "group": "Qwen", + "pages": [ + "zh/development/comfy-router/models/qwen/qwen-image-3-0-pro/code", + "zh/development/comfy-router/models/qwen/qwen-image-3-0/code" + ] + }, + { + "group": "Recraft", + "pages": [ + "zh/development/comfy-router/models/recraft/recraftv2/code", + "zh/development/comfy-router/models/recraft/recraftv3/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-pro/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-utility/code", + "zh/development/comfy-router/models/recraft/recraftv4-1-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-1/code", + "zh/development/comfy-router/models/recraft/recraftv4-pro/code", + "zh/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-styles-pro/code", + "zh/development/comfy-router/models/recraft/recraftv4-styles-vector/code", + "zh/development/comfy-router/models/recraft/recraftv4-styles/code", + "zh/development/comfy-router/models/recraft/recraftv4/code" + ] + }, + { + "group": "Runway", + "pages": [ + "zh/development/comfy-router/models/runway/aleph2/code", + "zh/development/comfy-router/models/runway/gen4-image/code", + "zh/development/comfy-router/models/runway/gen4-turbo/code" + ] + }, + { + "group": "Tencent", + "pages": [ + "zh/development/comfy-router/models/tencent/hunyuan-3d-part/code", + "zh/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code", + "zh/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code", + "zh/development/comfy-router/models/tencent/hunyuan-3d-uv/code" + ] + }, + { + "group": "Veo", + "pages": [ + "zh/development/comfy-router/models/veo/veo-2-0-generate-001/code", + "zh/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code", + "zh/development/comfy-router/models/veo/veo-3-0-generate-001/code", + "zh/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code", + "zh/development/comfy-router/models/veo/veo-3-1-generate-001/code", + "zh/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code" + ] + }, + { + "group": "Wan", + "pages": [ + "zh/development/comfy-router/models/wan/happyhorse-1-0-i2v/code", + "zh/development/comfy-router/models/wan/happyhorse-1-0-r2v/code", + "zh/development/comfy-router/models/wan/happyhorse-1-0-t2v/code", + "zh/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code", + "zh/development/comfy-router/models/wan/happyhorse-1-1-i2v/code", + "zh/development/comfy-router/models/wan/happyhorse-1-1-r2v/code", + "zh/development/comfy-router/models/wan/happyhorse-1-1-t2v/code", + "zh/development/comfy-router/models/wan/wan2-5-i2i-preview/code", + "zh/development/comfy-router/models/wan/wan2-5-i2v-preview/code", + "zh/development/comfy-router/models/wan/wan2-5-t2i-preview/code", + "zh/development/comfy-router/models/wan/wan2-5-t2v-preview/code", + "zh/development/comfy-router/models/wan/wan2-6-i2v/code", + "zh/development/comfy-router/models/wan/wan2-6-r2v/code", + "zh/development/comfy-router/models/wan/wan2-6-t2v/code", + "zh/development/comfy-router/models/wan/wan2-7-i2v/code", + "zh/development/comfy-router/models/wan/wan2-7-r2v/code", + "zh/development/comfy-router/models/wan/wan2-7-t2v/code", + "zh/development/comfy-router/models/wan/wan2-7-videoedit/code", + "zh/development/comfy-router/models/wan/wan3-0-video-prime/code", + "zh/development/comfy-router/models/wan/wan3-0-video/code" + ] + }, + { + "group": "WaveSpeed", + "pages": [ + "zh/development/comfy-router/models/wavespeed/flashvsr/code", + "zh/development/comfy-router/models/wavespeed/seedvr2/code", + "zh/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code" + ] + }, + { + "group": "xAI", + "pages": [ + "zh/development/comfy-router/models/xai/grok-imagine-image-2-0/code", + "zh/development/comfy-router/models/xai/grok-imagine-image-pro/code", + "zh/development/comfy-router/models/xai/grok-imagine-image-quality/code", + "zh/development/comfy-router/models/xai/grok-imagine-image/code", + "zh/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code", + "zh/development/comfy-router/models/xai/grok-imagine-video-1-5/code", + "zh/development/comfy-router/models/xai/grok-imagine-video/code" + ] + } + ] + } ] }, { @@ -9984,9 +10345,370 @@ "group": "Comfy Router", "pages": [ "ja/development/comfy-router/quickstart", - "ja/development/comfy-router/models", + "ja/development/comfy-router/api", + "ja/development/comfy-router/headers", "ja/development/comfy-router/reference", - "ja/development/comfy-router/limitations" + "ja/development/comfy-router/limitations", + { + "group": "Models", + "pages": [ + "ja/development/comfy-router/models", + { + "group": "Anthropic", + "pages": [ + "ja/development/comfy-router/models/anthropic/claude-fable-5-1/code", + "ja/development/comfy-router/models/anthropic/claude-fable-5/code", + "ja/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code", + "ja/development/comfy-router/models/anthropic/claude-opus-4-6/code", + "ja/development/comfy-router/models/anthropic/claude-opus-4-7/code", + "ja/development/comfy-router/models/anthropic/claude-opus-4-8/code", + "ja/development/comfy-router/models/anthropic/claude-opus-5/code", + "ja/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code", + "ja/development/comfy-router/models/anthropic/claude-sonnet-4-6/code", + "ja/development/comfy-router/models/anthropic/claude-sonnet-5/code" + ] + }, + { + "group": "Beeble", + "pages": [ + "ja/development/comfy-router/models/beeble/switchx/code" + ] + }, + { + "group": "Black Forest Labs", + "pages": [ + "ja/development/comfy-router/models/black-forest-labs/erase-v1/code", + "ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code", + "ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code", + "ja/development/comfy-router/models/black-forest-labs/flux-2-max/code", + "ja/development/comfy-router/models/black-forest-labs/flux-2-pro/code", + "ja/development/comfy-router/models/black-forest-labs/flux-3-video/code", + "ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code", + "ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code", + "ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code", + "ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code", + "ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code", + "ja/development/comfy-router/models/black-forest-labs/video-edit-v1/code", + "ja/development/comfy-router/models/black-forest-labs/vto-v1/code" + ] + }, + { + "group": "Bria", + "pages": [ + "ja/development/comfy-router/models/bria/fibo/code", + "ja/development/comfy-router/models/bria/image-edit-erase/code", + "ja/development/comfy-router/models/bria/image-edit-expand/code", + "ja/development/comfy-router/models/bria/image-edit-gen-fill/code", + "ja/development/comfy-router/models/bria/image-edit-increase-resolution/code", + "ja/development/comfy-router/models/bria/image-edit-remove-background/code", + "ja/development/comfy-router/models/bria/structured-instruction/code", + "ja/development/comfy-router/models/bria/video-edit-green-screen/code", + "ja/development/comfy-router/models/bria/video-edit-remove-background/code", + "ja/development/comfy-router/models/bria/video-edit-replace-background/code" + ] + }, + { + "group": "BytePlus", + "pages": [ + "ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code", + "ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code", + "ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code", + "ja/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code", + "ja/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code", + "ja/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code", + "ja/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code", + "ja/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code", + "ja/development/comfy-router/models/byteplus/seed-audio-1-0/code", + "ja/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code", + "ja/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code", + "ja/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code", + "ja/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code", + "ja/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code", + "ja/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code", + "ja/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code", + "ja/development/comfy-router/models/byteplus/seedream-4-0-250828/code", + "ja/development/comfy-router/models/byteplus/seedream-4-5-251128/code", + "ja/development/comfy-router/models/byteplus/seedream-5-0-260128/code", + "ja/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code" + ] + }, + { + "group": "Elevenlabs", + "pages": [ + "ja/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code", + "ja/development/comfy-router/models/elevenlabs/eleven-v3/code" + ] + }, + { + "group": "fal", + "pages": [ + "ja/development/comfy-router/models/fal/h3-max-turbo/code", + "ja/development/comfy-router/models/fal/h3-max/code", + "ja/development/comfy-router/models/fal/patina/code" + ] + }, + { + "group": "Freepik", + "pages": [ + "ja/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code", + "ja/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code", + "ja/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code", + "ja/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code" + ] + }, + { + "group": "Gemini Interactions", + "pages": [ + "ja/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code", + "ja/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code" + ] + }, + { + "group": "Google", + "pages": [ + "ja/development/comfy-router/models/google/gemini-2-5-flash-image/code", + "ja/development/comfy-router/models/google/gemini-3-1-flash-lite/code", + "ja/development/comfy-router/models/google/gemini-3-7-flash/code", + "ja/development/comfy-router/models/google/gemini-3-8-flash/code", + "ja/development/comfy-router/models/google/gemini/code", + "ja/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code", + "ja/development/comfy-router/models/google/imagen-3-0-generate-001/code", + "ja/development/comfy-router/models/google/imagen-3-0-generate-002/code", + "ja/development/comfy-router/models/google/nano-banana-2-lite/code", + "ja/development/comfy-router/models/google/nano-banana-2/code", + "ja/development/comfy-router/models/google/nano-banana-pro/code" + ] + }, + { + "group": "HeyGen", + "pages": [ + "ja/development/comfy-router/models/heygen/starfish/code" + ] + }, + { + "group": "Ideogram", + "pages": [ + "ja/development/comfy-router/models/ideogram/ideogram-v3/code", + "ja/development/comfy-router/models/ideogram/ideogram-v4/code", + "ja/development/comfy-router/models/ideogram/p-image-ideogram/code" + ] + }, + { + "group": "Kling", + "pages": [ + "ja/development/comfy-router/models/kling/kling-3-0-turbo/code", + "ja/development/comfy-router/models/kling/kling-image-o1/code", + "ja/development/comfy-router/models/kling/kling-v1-5/code", + "ja/development/comfy-router/models/kling/kling-v1-6/code", + "ja/development/comfy-router/models/kling/kling-v1/code", + "ja/development/comfy-router/models/kling/kling-v2-1-master/code", + "ja/development/comfy-router/models/kling/kling-v2-1/code", + "ja/development/comfy-router/models/kling/kling-v2-5-turbo/code", + "ja/development/comfy-router/models/kling/kling-v2-6/code", + "ja/development/comfy-router/models/kling/kling-v2-master/code", + "ja/development/comfy-router/models/kling/kling-v3-omni/code", + "ja/development/comfy-router/models/kling/kling-v3/code", + "ja/development/comfy-router/models/kling/kling-video-o1/code", + "ja/development/comfy-router/models/kling/videos-avatar-image2video/code", + "ja/development/comfy-router/models/kling/videos-lip-sync/code", + "ja/development/comfy-router/models/kling/videos-video-extend/code" + ] + }, + { + "group": "Krea", + "pages": [ + "ja/development/comfy-router/models/krea/krea-2-large/code", + "ja/development/comfy-router/models/krea/krea-2-medium-turbo/code", + "ja/development/comfy-router/models/krea/krea-2-medium/code", + "ja/development/comfy-router/models/krea/krea-2/code" + ] + }, + { + "group": "LTX", + "pages": [ + "ja/development/comfy-router/models/ltx/ltx-2-5-fast/code", + "ja/development/comfy-router/models/ltx/ltx-2-5-pro/code" + ] + }, + { + "group": "Luma", + "pages": [ + "ja/development/comfy-router/models/luma/photon-1/code", + "ja/development/comfy-router/models/luma/photon-flash-1/code", + "ja/development/comfy-router/models/luma/ray-2/code", + "ja/development/comfy-router/models/luma/ray-flash-2/code" + ] + }, + { + "group": "Luma 2", + "pages": [ + "ja/development/comfy-router/models/luma_2/uni-1-max/code", + "ja/development/comfy-router/models/luma_2/uni-1/code" + ] + }, + { + "group": "Meshy", + "pages": [ + "ja/development/comfy-router/models/meshy/animations/code", + "ja/development/comfy-router/models/meshy/meshy-5/code", + "ja/development/comfy-router/models/meshy/meshy-6/code", + "ja/development/comfy-router/models/meshy/meshy-7/code", + "ja/development/comfy-router/models/meshy/remesh/code", + "ja/development/comfy-router/models/meshy/rigging/code" + ] + }, + { + "group": "MiniMax", + "pages": [ + "ja/development/comfy-router/models/minimax/minimax-h3/code" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "ja/development/comfy-router/models/moonvalley/image-to-video/code", + "ja/development/comfy-router/models/moonvalley/text-to-image/code", + "ja/development/comfy-router/models/moonvalley/text-to-video/code", + "ja/development/comfy-router/models/moonvalley/video-to-video-resize/code", + "ja/development/comfy-router/models/moonvalley/video-to-video/code" + ] + }, + { + "group": "OpenAI", + "pages": [ + "ja/development/comfy-router/models/openai/gpt-4-1-mini/code", + "ja/development/comfy-router/models/openai/gpt-4-1-nano/code", + "ja/development/comfy-router/models/openai/gpt-4-1/code", + "ja/development/comfy-router/models/openai/gpt-4o/code", + "ja/development/comfy-router/models/openai/gpt-5-5-pro/code", + "ja/development/comfy-router/models/openai/gpt-5-5/code", + "ja/development/comfy-router/models/openai/gpt-5-6-luna/code", + "ja/development/comfy-router/models/openai/gpt-5-6-sol/code", + "ja/development/comfy-router/models/openai/gpt-5-6-terra/code", + "ja/development/comfy-router/models/openai/gpt-5-mini/code", + "ja/development/comfy-router/models/openai/gpt-5-nano/code", + "ja/development/comfy-router/models/openai/gpt-5/code", + "ja/development/comfy-router/models/openai/gpt-6-astra/code", + "ja/development/comfy-router/models/openai/gpt-image-1-5/code", + "ja/development/comfy-router/models/openai/gpt-image-1/code", + "ja/development/comfy-router/models/openai/gpt-image-2-5-flare/code", + "ja/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code", + "ja/development/comfy-router/models/openai/gpt-image-2/code", + "ja/development/comfy-router/models/openai/o1-pro/code", + "ja/development/comfy-router/models/openai/o1/code", + "ja/development/comfy-router/models/openai/o3/code", + "ja/development/comfy-router/models/openai/o4-mini/code" + ] + }, + { + "group": "Pruna", + "pages": [ + "ja/development/comfy-router/models/pruna/p-video-2/code" + ] + }, + { + "group": "Qwen", + "pages": [ + "ja/development/comfy-router/models/qwen/qwen-image-3-0-pro/code", + "ja/development/comfy-router/models/qwen/qwen-image-3-0/code" + ] + }, + { + "group": "Recraft", + "pages": [ + "ja/development/comfy-router/models/recraft/recraftv2/code", + "ja/development/comfy-router/models/recraft/recraftv3/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-pro/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-utility/code", + "ja/development/comfy-router/models/recraft/recraftv4-1-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-1/code", + "ja/development/comfy-router/models/recraft/recraftv4-pro/code", + "ja/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-styles-pro/code", + "ja/development/comfy-router/models/recraft/recraftv4-styles-vector/code", + "ja/development/comfy-router/models/recraft/recraftv4-styles/code", + "ja/development/comfy-router/models/recraft/recraftv4/code" + ] + }, + { + "group": "Runway", + "pages": [ + "ja/development/comfy-router/models/runway/aleph2/code", + "ja/development/comfy-router/models/runway/gen4-image/code", + "ja/development/comfy-router/models/runway/gen4-turbo/code" + ] + }, + { + "group": "Tencent", + "pages": [ + "ja/development/comfy-router/models/tencent/hunyuan-3d-part/code", + "ja/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code", + "ja/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code", + "ja/development/comfy-router/models/tencent/hunyuan-3d-uv/code" + ] + }, + { + "group": "Veo", + "pages": [ + "ja/development/comfy-router/models/veo/veo-2-0-generate-001/code", + "ja/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code", + "ja/development/comfy-router/models/veo/veo-3-0-generate-001/code", + "ja/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code", + "ja/development/comfy-router/models/veo/veo-3-1-generate-001/code", + "ja/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code" + ] + }, + { + "group": "Wan", + "pages": [ + "ja/development/comfy-router/models/wan/happyhorse-1-0-i2v/code", + "ja/development/comfy-router/models/wan/happyhorse-1-0-r2v/code", + "ja/development/comfy-router/models/wan/happyhorse-1-0-t2v/code", + "ja/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code", + "ja/development/comfy-router/models/wan/happyhorse-1-1-i2v/code", + "ja/development/comfy-router/models/wan/happyhorse-1-1-r2v/code", + "ja/development/comfy-router/models/wan/happyhorse-1-1-t2v/code", + "ja/development/comfy-router/models/wan/wan2-5-i2i-preview/code", + "ja/development/comfy-router/models/wan/wan2-5-i2v-preview/code", + "ja/development/comfy-router/models/wan/wan2-5-t2i-preview/code", + "ja/development/comfy-router/models/wan/wan2-5-t2v-preview/code", + "ja/development/comfy-router/models/wan/wan2-6-i2v/code", + "ja/development/comfy-router/models/wan/wan2-6-r2v/code", + "ja/development/comfy-router/models/wan/wan2-6-t2v/code", + "ja/development/comfy-router/models/wan/wan2-7-i2v/code", + "ja/development/comfy-router/models/wan/wan2-7-r2v/code", + "ja/development/comfy-router/models/wan/wan2-7-t2v/code", + "ja/development/comfy-router/models/wan/wan2-7-videoedit/code", + "ja/development/comfy-router/models/wan/wan3-0-video-prime/code", + "ja/development/comfy-router/models/wan/wan3-0-video/code" + ] + }, + { + "group": "WaveSpeed", + "pages": [ + "ja/development/comfy-router/models/wavespeed/flashvsr/code", + "ja/development/comfy-router/models/wavespeed/seedvr2/code", + "ja/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code" + ] + }, + { + "group": "xAI", + "pages": [ + "ja/development/comfy-router/models/xai/grok-imagine-image-2-0/code", + "ja/development/comfy-router/models/xai/grok-imagine-image-pro/code", + "ja/development/comfy-router/models/xai/grok-imagine-image-quality/code", + "ja/development/comfy-router/models/xai/grok-imagine-image/code", + "ja/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code", + "ja/development/comfy-router/models/xai/grok-imagine-video-1-5/code", + "ja/development/comfy-router/models/xai/grok-imagine-video/code" + ] + } + ] + } ] }, { @@ -13207,9 +13929,370 @@ "group": "Comfy Router", "pages": [ "ko/development/comfy-router/quickstart", - "ko/development/comfy-router/models", + "ko/development/comfy-router/api", + "ko/development/comfy-router/headers", "ko/development/comfy-router/reference", - "ko/development/comfy-router/limitations" + "ko/development/comfy-router/limitations", + { + "group": "Models", + "pages": [ + "ko/development/comfy-router/models", + { + "group": "Anthropic", + "pages": [ + "ko/development/comfy-router/models/anthropic/claude-fable-5-1/code", + "ko/development/comfy-router/models/anthropic/claude-fable-5/code", + "ko/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code", + "ko/development/comfy-router/models/anthropic/claude-opus-4-6/code", + "ko/development/comfy-router/models/anthropic/claude-opus-4-7/code", + "ko/development/comfy-router/models/anthropic/claude-opus-4-8/code", + "ko/development/comfy-router/models/anthropic/claude-opus-5/code", + "ko/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code", + "ko/development/comfy-router/models/anthropic/claude-sonnet-4-6/code", + "ko/development/comfy-router/models/anthropic/claude-sonnet-5/code" + ] + }, + { + "group": "Beeble", + "pages": [ + "ko/development/comfy-router/models/beeble/switchx/code" + ] + }, + { + "group": "Black Forest Labs", + "pages": [ + "ko/development/comfy-router/models/black-forest-labs/erase-v1/code", + "ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code", + "ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code", + "ko/development/comfy-router/models/black-forest-labs/flux-2-max/code", + "ko/development/comfy-router/models/black-forest-labs/flux-2-pro/code", + "ko/development/comfy-router/models/black-forest-labs/flux-3-video/code", + "ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code", + "ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code", + "ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code", + "ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code", + "ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code", + "ko/development/comfy-router/models/black-forest-labs/video-edit-v1/code", + "ko/development/comfy-router/models/black-forest-labs/vto-v1/code" + ] + }, + { + "group": "Bria", + "pages": [ + "ko/development/comfy-router/models/bria/fibo/code", + "ko/development/comfy-router/models/bria/image-edit-erase/code", + "ko/development/comfy-router/models/bria/image-edit-expand/code", + "ko/development/comfy-router/models/bria/image-edit-gen-fill/code", + "ko/development/comfy-router/models/bria/image-edit-increase-resolution/code", + "ko/development/comfy-router/models/bria/image-edit-remove-background/code", + "ko/development/comfy-router/models/bria/structured-instruction/code", + "ko/development/comfy-router/models/bria/video-edit-green-screen/code", + "ko/development/comfy-router/models/bria/video-edit-remove-background/code", + "ko/development/comfy-router/models/bria/video-edit-replace-background/code" + ] + }, + { + "group": "BytePlus", + "pages": [ + "ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code", + "ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code", + "ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code", + "ko/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code", + "ko/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code", + "ko/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code", + "ko/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code", + "ko/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code", + "ko/development/comfy-router/models/byteplus/seed-audio-1-0/code", + "ko/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code", + "ko/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code", + "ko/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code", + "ko/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code", + "ko/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code", + "ko/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code", + "ko/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code", + "ko/development/comfy-router/models/byteplus/seedream-4-0-250828/code", + "ko/development/comfy-router/models/byteplus/seedream-4-5-251128/code", + "ko/development/comfy-router/models/byteplus/seedream-5-0-260128/code", + "ko/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code" + ] + }, + { + "group": "Elevenlabs", + "pages": [ + "ko/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code", + "ko/development/comfy-router/models/elevenlabs/eleven-v3/code" + ] + }, + { + "group": "fal", + "pages": [ + "ko/development/comfy-router/models/fal/h3-max-turbo/code", + "ko/development/comfy-router/models/fal/h3-max/code", + "ko/development/comfy-router/models/fal/patina/code" + ] + }, + { + "group": "Freepik", + "pages": [ + "ko/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code", + "ko/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code", + "ko/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code", + "ko/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code" + ] + }, + { + "group": "Gemini Interactions", + "pages": [ + "ko/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code", + "ko/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code" + ] + }, + { + "group": "Google", + "pages": [ + "ko/development/comfy-router/models/google/gemini-2-5-flash-image/code", + "ko/development/comfy-router/models/google/gemini-3-1-flash-lite/code", + "ko/development/comfy-router/models/google/gemini-3-7-flash/code", + "ko/development/comfy-router/models/google/gemini-3-8-flash/code", + "ko/development/comfy-router/models/google/gemini/code", + "ko/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code", + "ko/development/comfy-router/models/google/imagen-3-0-generate-001/code", + "ko/development/comfy-router/models/google/imagen-3-0-generate-002/code", + "ko/development/comfy-router/models/google/nano-banana-2-lite/code", + "ko/development/comfy-router/models/google/nano-banana-2/code", + "ko/development/comfy-router/models/google/nano-banana-pro/code" + ] + }, + { + "group": "HeyGen", + "pages": [ + "ko/development/comfy-router/models/heygen/starfish/code" + ] + }, + { + "group": "Ideogram", + "pages": [ + "ko/development/comfy-router/models/ideogram/ideogram-v3/code", + "ko/development/comfy-router/models/ideogram/ideogram-v4/code", + "ko/development/comfy-router/models/ideogram/p-image-ideogram/code" + ] + }, + { + "group": "Kling", + "pages": [ + "ko/development/comfy-router/models/kling/kling-3-0-turbo/code", + "ko/development/comfy-router/models/kling/kling-image-o1/code", + "ko/development/comfy-router/models/kling/kling-v1-5/code", + "ko/development/comfy-router/models/kling/kling-v1-6/code", + "ko/development/comfy-router/models/kling/kling-v1/code", + "ko/development/comfy-router/models/kling/kling-v2-1-master/code", + "ko/development/comfy-router/models/kling/kling-v2-1/code", + "ko/development/comfy-router/models/kling/kling-v2-5-turbo/code", + "ko/development/comfy-router/models/kling/kling-v2-6/code", + "ko/development/comfy-router/models/kling/kling-v2-master/code", + "ko/development/comfy-router/models/kling/kling-v3-omni/code", + "ko/development/comfy-router/models/kling/kling-v3/code", + "ko/development/comfy-router/models/kling/kling-video-o1/code", + "ko/development/comfy-router/models/kling/videos-avatar-image2video/code", + "ko/development/comfy-router/models/kling/videos-lip-sync/code", + "ko/development/comfy-router/models/kling/videos-video-extend/code" + ] + }, + { + "group": "Krea", + "pages": [ + "ko/development/comfy-router/models/krea/krea-2-large/code", + "ko/development/comfy-router/models/krea/krea-2-medium-turbo/code", + "ko/development/comfy-router/models/krea/krea-2-medium/code", + "ko/development/comfy-router/models/krea/krea-2/code" + ] + }, + { + "group": "LTX", + "pages": [ + "ko/development/comfy-router/models/ltx/ltx-2-5-fast/code", + "ko/development/comfy-router/models/ltx/ltx-2-5-pro/code" + ] + }, + { + "group": "Luma", + "pages": [ + "ko/development/comfy-router/models/luma/photon-1/code", + "ko/development/comfy-router/models/luma/photon-flash-1/code", + "ko/development/comfy-router/models/luma/ray-2/code", + "ko/development/comfy-router/models/luma/ray-flash-2/code" + ] + }, + { + "group": "Luma 2", + "pages": [ + "ko/development/comfy-router/models/luma_2/uni-1-max/code", + "ko/development/comfy-router/models/luma_2/uni-1/code" + ] + }, + { + "group": "Meshy", + "pages": [ + "ko/development/comfy-router/models/meshy/animations/code", + "ko/development/comfy-router/models/meshy/meshy-5/code", + "ko/development/comfy-router/models/meshy/meshy-6/code", + "ko/development/comfy-router/models/meshy/meshy-7/code", + "ko/development/comfy-router/models/meshy/remesh/code", + "ko/development/comfy-router/models/meshy/rigging/code" + ] + }, + { + "group": "MiniMax", + "pages": [ + "ko/development/comfy-router/models/minimax/minimax-h3/code" + ] + }, + { + "group": "Moonvalley", + "pages": [ + "ko/development/comfy-router/models/moonvalley/image-to-video/code", + "ko/development/comfy-router/models/moonvalley/text-to-image/code", + "ko/development/comfy-router/models/moonvalley/text-to-video/code", + "ko/development/comfy-router/models/moonvalley/video-to-video-resize/code", + "ko/development/comfy-router/models/moonvalley/video-to-video/code" + ] + }, + { + "group": "OpenAI", + "pages": [ + "ko/development/comfy-router/models/openai/gpt-4-1-mini/code", + "ko/development/comfy-router/models/openai/gpt-4-1-nano/code", + "ko/development/comfy-router/models/openai/gpt-4-1/code", + "ko/development/comfy-router/models/openai/gpt-4o/code", + "ko/development/comfy-router/models/openai/gpt-5-5-pro/code", + "ko/development/comfy-router/models/openai/gpt-5-5/code", + "ko/development/comfy-router/models/openai/gpt-5-6-luna/code", + "ko/development/comfy-router/models/openai/gpt-5-6-sol/code", + "ko/development/comfy-router/models/openai/gpt-5-6-terra/code", + "ko/development/comfy-router/models/openai/gpt-5-mini/code", + "ko/development/comfy-router/models/openai/gpt-5-nano/code", + "ko/development/comfy-router/models/openai/gpt-5/code", + "ko/development/comfy-router/models/openai/gpt-6-astra/code", + "ko/development/comfy-router/models/openai/gpt-image-1-5/code", + "ko/development/comfy-router/models/openai/gpt-image-1/code", + "ko/development/comfy-router/models/openai/gpt-image-2-5-flare/code", + "ko/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code", + "ko/development/comfy-router/models/openai/gpt-image-2/code", + "ko/development/comfy-router/models/openai/o1-pro/code", + "ko/development/comfy-router/models/openai/o1/code", + "ko/development/comfy-router/models/openai/o3/code", + "ko/development/comfy-router/models/openai/o4-mini/code" + ] + }, + { + "group": "Pruna", + "pages": [ + "ko/development/comfy-router/models/pruna/p-video-2/code" + ] + }, + { + "group": "Qwen", + "pages": [ + "ko/development/comfy-router/models/qwen/qwen-image-3-0-pro/code", + "ko/development/comfy-router/models/qwen/qwen-image-3-0/code" + ] + }, + { + "group": "Recraft", + "pages": [ + "ko/development/comfy-router/models/recraft/recraftv2/code", + "ko/development/comfy-router/models/recraft/recraftv3/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-pro/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-utility/code", + "ko/development/comfy-router/models/recraft/recraftv4-1-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-1/code", + "ko/development/comfy-router/models/recraft/recraftv4-pro/code", + "ko/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-styles-pro/code", + "ko/development/comfy-router/models/recraft/recraftv4-styles-vector/code", + "ko/development/comfy-router/models/recraft/recraftv4-styles/code", + "ko/development/comfy-router/models/recraft/recraftv4/code" + ] + }, + { + "group": "Runway", + "pages": [ + "ko/development/comfy-router/models/runway/aleph2/code", + "ko/development/comfy-router/models/runway/gen4-image/code", + "ko/development/comfy-router/models/runway/gen4-turbo/code" + ] + }, + { + "group": "Tencent", + "pages": [ + "ko/development/comfy-router/models/tencent/hunyuan-3d-part/code", + "ko/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code", + "ko/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code", + "ko/development/comfy-router/models/tencent/hunyuan-3d-uv/code" + ] + }, + { + "group": "Veo", + "pages": [ + "ko/development/comfy-router/models/veo/veo-2-0-generate-001/code", + "ko/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code", + "ko/development/comfy-router/models/veo/veo-3-0-generate-001/code", + "ko/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code", + "ko/development/comfy-router/models/veo/veo-3-1-generate-001/code", + "ko/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code" + ] + }, + { + "group": "Wan", + "pages": [ + "ko/development/comfy-router/models/wan/happyhorse-1-0-i2v/code", + "ko/development/comfy-router/models/wan/happyhorse-1-0-r2v/code", + "ko/development/comfy-router/models/wan/happyhorse-1-0-t2v/code", + "ko/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code", + "ko/development/comfy-router/models/wan/happyhorse-1-1-i2v/code", + "ko/development/comfy-router/models/wan/happyhorse-1-1-r2v/code", + "ko/development/comfy-router/models/wan/happyhorse-1-1-t2v/code", + "ko/development/comfy-router/models/wan/wan2-5-i2i-preview/code", + "ko/development/comfy-router/models/wan/wan2-5-i2v-preview/code", + "ko/development/comfy-router/models/wan/wan2-5-t2i-preview/code", + "ko/development/comfy-router/models/wan/wan2-5-t2v-preview/code", + "ko/development/comfy-router/models/wan/wan2-6-i2v/code", + "ko/development/comfy-router/models/wan/wan2-6-r2v/code", + "ko/development/comfy-router/models/wan/wan2-6-t2v/code", + "ko/development/comfy-router/models/wan/wan2-7-i2v/code", + "ko/development/comfy-router/models/wan/wan2-7-r2v/code", + "ko/development/comfy-router/models/wan/wan2-7-t2v/code", + "ko/development/comfy-router/models/wan/wan2-7-videoedit/code", + "ko/development/comfy-router/models/wan/wan3-0-video-prime/code", + "ko/development/comfy-router/models/wan/wan3-0-video/code" + ] + }, + { + "group": "WaveSpeed", + "pages": [ + "ko/development/comfy-router/models/wavespeed/flashvsr/code", + "ko/development/comfy-router/models/wavespeed/seedvr2/code", + "ko/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code" + ] + }, + { + "group": "xAI", + "pages": [ + "ko/development/comfy-router/models/xai/grok-imagine-image-2-0/code", + "ko/development/comfy-router/models/xai/grok-imagine-image-pro/code", + "ko/development/comfy-router/models/xai/grok-imagine-image-quality/code", + "ko/development/comfy-router/models/xai/grok-imagine-image/code", + "ko/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code", + "ko/development/comfy-router/models/xai/grok-imagine-video-1-5/code", + "ko/development/comfy-router/models/xai/grok-imagine-video/code" + ] + } + ] + } ] }, { diff --git a/ja/development/comfy-router/api.mdx b/ja/development/comfy-router/api.mdx new file mode 100644 index 000000000..1abcea1c4 --- /dev/null +++ b/ja/development/comfy-router/api.mdx @@ -0,0 +1,281 @@ +--- +title: "Comfy Router API の使用" +sidebarTitle: "Router API の使用" +description: "モデルの選択、スキーマの確認、Router の安全な呼び出し、そして結果、エラー、リトライ、課金の処理方法について説明します。" +translationSourceHash: cd661025 +translationFrom: development/comfy-router/api.mdx +translationBlockHashes: + "_intro": 1b554933 + "Discover the catalog": f4cd9b87 + "Read one model": 6d96021f + "Read input and output schemas": 0b7e6eaa + "Validation and fallback schemas": 0f3cb67c + "Read the result": fab75186 + "Handle errors, retries, and billing": 41a1e0ab + "Per-model examples": ed06edba + "Next": 30e39619 +--- +モデルを選択し、そのスキーマを確認して、`POST /v2/models/{provider}/{model}` を呼び出します。ルートと認証はモデル間で変わりません。 + +## カタログの検出 + +生成に使用するのと同じAPIキーでモデルを一覧表示します: + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + "https://api.comfy.org/v2/models?limit=50" +``` + +省略したカタログレスポンス: + +### モデルの課金に関する事実 {#model-billing-facts} + +```json +{ + "data": [ + { + "id": "bfl/flux-2-pro", + "provider": "bfl", + "model": "flux-2-pro", + "billing": { "charges_on_policy_rejection": "no" } + } + ], + "has_more": true, + "next_cursor": "example-cursor", + "limit": 50 +} +``` + +呼び出しパスでは `id` を使用します。`billing` オブジェクトには価格ではなく、課金に関する事実が含まれます。それに依存する前に、[ポリシー拒否時の課金](/ja/development/comfy-router/api#model-billing-facts) を読んでください。 + +### ページネーション + +- `has_more` が `true` の場合は、返された `next_cursor` を `cursor` として渡します。`has_more` が `false` になったら、前のページが要求より短かったとしても停止します。 +- カーソルは不透明なものとして扱います。値は URL エンコードします。たとえば cURL では `--get --data-urlencode "cursor=$NEXT_CURSOR"` を使用します。オフセットを計算したり、カーソルを変更したりしないでください。 +- `limit` のデフォルトは 20 で、上限は 100 です。上限を超える値はクランプされます。ゼロとネガティブな値はデフォルトを選択します。レスポンスには、実際に使用された limit が報告されます。 +- 無効なカーソルは `400` / `invalid_input` を返します。リストを暗黙的に再起動することはありません。 +- カーソルはカタログの更新をまたいでも有効なままである可能性がありますが、走査はスナップショットではありません。現在位置より前に追加されたモデルは、その走査に現れないことがあります。 + +`503` / `service_unavailable` は一時的なものです。バックオフしながら再試行してください。空のカタログとして扱わないでください。SDK の run メソッドは、選択済みのモデルを直接呼び出します。 + +## 1つのモデルを読み取る + +モデル ID がわかっている場合は、カタログエントリを直接取得します。 + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro +``` + +モデル詳細エンドポイントを使えば、カタログ全体をたどる必要はありません。エントリの完全なフィールドについては [API リファレンス](/ja/development/comfy-router/reference) を参照してください。 + +## 入力スキーマと出力スキーマを読み取る {#read-input-and-output-schemas} + +各モデルはスタンドアロンの OpenAPI ドキュメントを公開しています: + +```bash +curl --dump-header schema-headers.txt \ + -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +モデルのオペレーション内では、`requestBody` が入力を表し、`200` レスポンスは、出力スキーマが作成されている場合に出力を表します。入力の検証と出力のドキュメント化は別物です。Router は自身の入力スキーマに対して検証を行いますが、返されたプロバイダーの結果を出力スキーマに対して検証しません。 + +出力のフィールドだけでなく、メディアタイプも確認してください。作成されていない出力は `*/*` を使用することがあり、一部のモデルは JSON ではなくバイナリデータを返します。 + +### スキーマをキャッシュする {#cache-a-schema} + +スキーマとその `ETag` を保存します。後でスキーマを取得する際に、その ETag を `If-None-Match` で渡します。`304` にはボディがありません。キャッシュしたドキュメントを保持してください。`200` は置き換え用のドキュメントと ETag を提供します。 + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + -H 'If-None-Match: "previous-etag-value"' \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +スキーマルートは `Cache-Control: private, must-revalidate` を使用します。認証済みレスポンスは共有キャッシュに保存しないでください。この ETag/304 の動作はスキーマエンドポイントにのみ適用されます。 + +## 検証とフォールバックスキーマ + +作成済みの入力スキーマは、プロバイダーの呼び出し前に不正なフィールドを `422` と `detail[]` 配列で拒否します。`loc` 内のフィールドパスを確認してください。詳細は[検証エラー](/ja/development/comfy-router/api#validation-errors)を参照してください。 + +一部のスキーマは任意の JSON オブジェクトを受け入れ、`x-comfy-input-schema-authored: false` を設定します。ルーターはそれらのリクエストをモデル固有の検証なしで転送するため、プロバイダー側で拒否される可能性があります。 + +`bfl/flux-2-pro` は現在このフォールバックを使用しています。必須フィールドについては、プロバイダーのドキュメントまたはそのモデルページを確認してください。 + +## 結果を読み取る + +Router は各モデルのターミナル結果の形状を返します。共通の画像、ビデオ、テキストのエンベロープはありません。BFL の画像出力は `result.sample` を使用しますが、他のモデルは URL のリストやインラインバイトを返すことがあります。 + +一部のアセット URL は Comfy によって再ホストされますが、それ以外はプロバイダーの URL やインラインバイトのままです。[結果アセット](/ja/development/comfy-router/reference#結果アセット)を確認し、有効期限のあるアセットは速やかにダウンロードしてください。リプレイでは URL は更新されません。 + +## エラー、リトライ、課金の処理 {#handle-errors-retries-and-billing} + +### エラーを防御的に読み取る + +失敗したリクエストは、プロキシの HTML エラーページ、切り詰められた JSON、またはプレーンテキストを返すことがあります。JSON パースエラーによって HTTP ステータスやリクエスト ID が隠れないようにしてください。以下のヘルパーは、Python では `httpx.Response`、TypeScript では Fetch の `Response` を使用します。SDK は通常の SDK 呼び出しに対してすでにエラーフィールドを公開しています。 + + + +```python +def read_router_error(response): + body = None + if response.headers.get("content-type", "").startswith("application/json"): + try: + body = response.json() + except ValueError: + body = None + + detail = body.get("detail") if isinstance(body, dict) else None + return { + "status": response.status_code, + "request_id": response.headers.get("X-Comfy-Request-Id"), + "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), + "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", + "validation": detail if isinstance(detail, list) else [], + } +``` + +```typescript +async function readRouterError(response: Response) { + let body: unknown; + try { + body = JSON.parse(await response.text()); + } catch { + body = undefined; + } + + const detail = + typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; + + return { + status: response.status, + requestId: response.headers.get("X-Comfy-Request-Id"), + errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", + message: typeof detail === "string" ? detail : `HTTP ${response.status}`, + validation: Array.isArray(detail) ? detail : [], + }; +} +``` + + + +### バリデーションエラー {#validation-errors} + +Router の `422` は、プロバイダーの呼び出し前に検証に失敗したことを意味し、課金されません。そのボディには `detail[]` 配列があり、拒否されたフィールドごとに 1 つのエントリが含まれます。エラーカテゴリはボディではなく `X-Comfy-Error-Type` にあります。例: + +```json +{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} +``` + +これは一例の形状です。寛容な入力スキーマを持つモデルは、Router の `422` を返す代わりに、不足しているフィールドをプロバイダーに転送することがあります。 + +| フィールド | 意味 | +| --- | --- | +| `loc` | 拒否されたフィールドへのパス。最も外側のセグメントが先頭になります。 | +| `msg` | 失敗の理由を人間が読める形式で示したもの。 | +| `type` | `missing`、`greater_than`、`image_too_small` など、プロバイダー固有の理由。 | +| `ctx` | そのプロバイダーエラーの任意の境界値または追加データ。 | + +`400` は、このフィールド単位の検証ボディではなく、不正な形式のカーソルなど、リクエストレベルの問題を表します。サポートされているカテゴリは[エラーリファレンス](/ja/development/comfy-router/reference#エラーバケット)に記載されています。制御フローでは、不明なカテゴリを `internal_error` として扱いますが、診断用にオリジナルの値は保持してください。新しいエラー値を厳密に拒否したり、予測されるエラーカテゴリがすでに発生しているかのように実装したりしないでください。### 安全にリトライする + +### リトライの結果 {#retry-outcomes} + +**送信する前に**、キーをモデル ID とリクエストボディとともに永続化します。その論理呼び出しのすべての試行で同じキーを再利用します。Router はレスポンスで `Idempotency-Key` を返しません。Python SDK は発生した例外にキーを含めますが、TypeScript では自分で指定したキーを自分で保持しておく必要があります。 + +キーは、認証情報が持つワークスペース内で共有され、ワークスペースを持たない場合はユーザーにスコープされます。そのスコープ内で一意な UUID を使用し、同じ認証情報でリトライしてください。別のワークスペースメンバーのキーを再利用すると、そのメンバーの記録済みの結果が返されたり、競合が発生したりする可能性があります。認証情報を変更すると、別の課金対象呼び出しが開始されることがあります。 + +Router はキー付きのレスポンスまたはコレクションの状態を 24 時間保持します。リトライしても新しい保持ウィンドウは開始されません。その状態が期限切れになった後は、古いキーで結果を復元できることや、新しいディスパッチを防げることを期待しないでください。また、キーがあっても期限切れのアセット URL が再び使用可能になるわけではありません。 + +### タイムアウトと収集 {#timeouts-and-collection} + +### リトライの結果 {#retry-outcomes} + + +| ステータス | バケット | 意味 | 対処 | +| --- | --- | --- | --- | +| `200` | `Idempotent-Replayed: true` ヘッダー | Router が結果を再生したか、収集済みの生成を返しました。 | 結果を使用します。再生は 2 回目の Comfy 課金ではありません。 | +| `409` | `concurrency_limit_exceeded` | そのキーの元の呼び出しがまだ実行中です。 | `Retry-After` を待ってから、同じキーを再送信します。 | +| `504` | `deadline_exceeded`(`Retry-After` 付き) | Router が、受け入れられたプロバイダー処理へのハンドルを保持しました。 | 指定された間隔を待ち、同じリクエストとキーを再送信して収集します。まだ実行中である可能性があります。 | +| `429` | `rate_limited` | リクエストの許容量を使い切りました。 | `Retry-After` を待ってから、同じキーでリトライします。 | +| `429` | `concurrency_limit_exceeded` | 同時呼び出しまたは確定済み支出の上限がリクエストを拒否しました。 | 同時実行数を減らし、同じキーでリトライします。支出ヘッダーを確認してください。 | +| `409` | `invalid_input` | リクエストがキーの元のリクエストと異なるか、その記録を再生できません。 | 競合を確認します。リクエストが変更されている場合は元のリクエストに戻します。新しく課金される可能性のある呼び出しを意図する場合にのみ、新しいキーを開始してください。 | +| 収集のヒントがない `504`、その他の `5xx`、またはレスポンスなし | さまざま | ステータスだけでは、処理が受け入れられたのか、保持されたのか、解放されたのかを特定できません。 | 同じキーとリクエストを保持します。上限付きのリトライポリシーを使用してください。回復は保証されません。 | + +競合は method、model パス、クエリ、ボディを比較します。過大なレスポンス、レスポンスの書き込み失敗、または安全に再生できないアセットの後、キーは再生不能になることがあります。待機しても消費された結果は回復しません。新しいキーは新しい呼び出しを開始するものであり、古い出力を取得するものではありません。 + +プロバイダーへのディスパッチ前の拒否はキーを解放します。ディスパッチされた呼び出しはプロバイダーハンドルを保持するか、再生不能になる可能性があります。ステータスコードだけからキーの状態や課金を推測しないでください。 + +呼び出しがタイムアウトした、または接続が切断されたという理由だけで、まったく新しいキーを発行しないでください。Router がすでに生成を受け入れていた場合、新しいキーは 2 つ目の論理実行を作成し、したがって 2 つ目の課金対象の結果を生む可能性があります。元の呼び出しが回復不能であるとわかるまで、同じキーを再利用してください。 + +#### タイムアウトと収集 + +1 回の Router 呼び出しは、デフォルトで接続を 10 分間保持することがあります。クライアントのタイムアウトをその上限より上に設定すると、不透明なローカルアボートではなく、型付きの `504` とリクエスト ID を取得できます。 + +`deadline_exceeded` は Router の待機制限で、`provider_timeout` はプロバイダーの期限です。完了したプロバイダーの生成は、呼び出し元がタイムアウトを受け取ったか切断されたとしても、課金される可能性があります。クライアントのキャンセルは待機と SDK のリトライを停止しますが、受け入れられたプロバイダー処理を必ずしもキャンセルするわけではありません。 + +送信とポーリングを行うプロバイダーの場合、保持されたハンドルにより、同じキーのリクエストが元の生成の収集を続けることができます。回復可能なハンドルなしで遮断されたディスパッチ済み呼び出しは、再生可能な結果なしにキーを消費する可能性があり、同じキーでのリトライは `409` を返します。成功が捕捉されていないプロバイダー起因の一時的な失敗でも、別の試行のためにキーを解放することがあります。ハンドルが存在しないだけでは、どの結果が該当するかはわかりません。 + +SDK は一部の失敗を限られた予算内でリトライします。エラーを返したら、新しいものを生成するのではなく、リクエストとキーを保持してください。生の HTTP の場合、この例では 2 つの明示的な収集ヒントのみをリトライします: + +```python +import os +import time + +import httpx + + +def collect(model, arguments, key, attempts=3): + with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: + for attempt in range(attempts): + response = client.post( + f"https://api.comfy.org/v2/models/{model}", + headers={"X-API-Key": os.environ["COMFY_API_KEY"], + "Idempotency-Key": key}, + json=arguments, + ) + if response.is_success: + return response.json() + + category = response.headers.get("X-Comfy-Error-Type") + collecting = (response.status_code, category) in { + (409, "concurrency_limit_exceeded"), + (504, "deadline_exceeded"), + } + delay = response.headers.get("Retry-After", "") + if not collecting or not delay.isdigit() or attempt == attempts - 1: + response.raise_for_status() + time.sleep(int(delay)) + raise ValueError("attempts must be positive") +``` + +元のモデル、ボディ、保存したキーを渡します。これは試行回数を制限するもので、合計の実時間を制限するものではありません。各呼び出しはクライアントのタイムアウトまで続く可能性があり、各待機は `Retry-After` に従います。HTTP エラーは検査用にレスポンスを保持し、トランスポートエラーはキーを置き換えることなく伝播します。アプリケーションがより長い回復ウィンドウを必要とする場合は、保存したキーで後で収集をスケジュールしてください。### モデル課金の仕様 + +`GET /v2/models` とモデル詳細レスポンスには `billing.charges_on_policy_rejection` が含まれます。これはポリシーによる拒否について説明するものであり、すべての失敗や価格の見積もりを表すものではありません。 + +| 値 | 意味 | +| --- | --- | +| `yes` | ポリシーによる拒否に対して課金されます。 | +| `no` | ポリシーによる拒否に対して課金されません。 | +| `unknown` | まだ誰も挙動を確定していません。課金される可能性があるものとして扱ってください。 | + +これらの文字列は明示的に比較してください。`"no"` は Python と JavaScript では真値(truthy)です。認識できない値はすべて `unknown`(不明)として扱ってください。クレジット不足により拒否されたリクエストは `insufficient_credits` を返します。 + +プロバイダーのペイロードには独自のコストや使用量の数値が含まれることがありますが、それらは Comfy の課金ではありません。`X-Comfy-Credits-Used` は許可リストに登録されたプロバイダーでは表示されることがありますが、すべてに共通するものではなく、再送もされません。突き合わせには[ワークスペースの使用量と請求書](https://platform.comfy.org)を使用してください。課金を調査する際はリクエスト ID を保持してください。 + +## モデル別の例 + +- [Google Gemini](/ja/development/comfy-router/models/google/gemini/code) +- [Nano Banana 2](/ja/development/comfy-router/models/google/nano-banana-2/code) +- [Nano Banana 2 Lite](/ja/development/comfy-router/models/google/nano-banana-2-lite/code) +- [Nano Banana Pro](/ja/development/comfy-router/models/google/nano-banana-pro/code) +- [FLUX 1.1 Pro Ultra](/ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code) +- [FLUX Kontext](/ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code) +- [FLUX Video Upscale](/ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code) +- [FLUX 3 Video](/ja/development/comfy-router/models/black-forest-labs/flux-3-video/code) +- [Ideogram 4](/ja/development/comfy-router/models/ideogram/ideogram-v4/code) + +## 次へ + +- [クイックスタート](/ja/development/comfy-router/quickstart): インストール、呼び出し、画像の保存。 +- [API リファレンス](/ja/development/comfy-router/reference): エンドポイントのパラメータ、スキーマ、レスポンスコード。 diff --git a/ja/development/comfy-router/headers.mdx b/ja/development/comfy-router/headers.mdx new file mode 100644 index 000000000..6eef9410a --- /dev/null +++ b/ja/development/comfy-router/headers.mdx @@ -0,0 +1,96 @@ +--- +title: "Comfy Router ヘッダー" +sidebarTitle: "ヘッダー" +description: "Comfy Router に送信できるリクエストヘッダーと、すべてのモデルで返されるレスポンスヘッダーについて説明します。認証、冪等性、リクエスト ID、エラーバケット、リトライのペーシング、支出上限を取り扱います。" +translationSourceHash: ea8cad67 +translationFrom: development/comfy-router/headers.mdx +translationBlockHashes: + "_intro": 6e9409a3 + "Request headers": 1a4e6df7 + "Response headers": 4504c25b + "Status codes that carry two meanings": f390ff0e + "Next": 31f315d9 +--- +すべての Router モデルは、それぞれ独自の JSON ボディを持つ `POST /v2/models/{provider}/{model}` を使用します。このページでは、モデル間で共通のヘッダーについて説明します。[API リファレンス](/ja/development/comfy-router/reference)には生成済みのコントラクトが記載されています。 + +Comfy SDK(Python 用の `comfy-sdk`、TypeScript 用の `@comfyorg/sdk`)は認証を処理し、冪等性キーを生成します。以下で説明するように、選択済みのレスポンスメタデータを公開します。生の HTTP クライアントは、ヘッダーを自身で送信し、読み取る必要があります。 + +## リクエストヘッダー + + + [Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)で作成した Comfy APIキー(`comfyui-...`)です。ワークスペースのモデルアクセスとクレジット残高を使用します。`Authorization: Bearer comfyui-...` として送信することもできます。両方のヘッダーが存在する場合は `X-API-Key` が優先されます。 + + + + `Bearer `。`comfyui-` で始まる値はAPIキーです。それ以外の値は Comfy Cloud の JWT として扱われます。 + + + + 1つの論理的な生成を識別します。呼び出しの前にUUIDを生成して保存し、変更していないリクエストの再試行時にそれを再利用します。このキーは最大24時間のあいだ、結果を再生したり、受け付けた処理を収集したりできます。SDK はキーを生成しますが、独自のキーを指定することもできます(Python では `idempotency_key=`、TypeScript では `idempotencyKey`)。競合、有効期限、再生できない結果については、[再試行の結果](/ja/development/comfy-router/api#retry-outcomes)を参照してください。 + + + + `application/json`。モデル固有のJSON入力を送信します。フィールドと検証要件はモデルによって異なります。[Router API の使用](/ja/development/comfy-router/api)を参照してください。 + + + + `GET /v2/models/{provider}/{model}/openapi.json` でのみ使用します。以前の `200` で受け取った `ETag` を送信します。それがまだ一致する場合、応答は同じ `ETag` を持つボディなしの `304` になります。モデルのスキーマはプロセスの存続期間中キャッシュし、呼び出しのたびに読み直すのではなく、この方法で再検証してください。 + + +## レスポンスヘッダー + + + この HTTP リクエストを識別します。サポートに問い合わせる際はこれを含めてください。TypeScript では `requestId` として公開され、Python ではエラー時に `request_id` として公開されます。 + + + + 機械可読なエラーカテゴリ。`422` の場合は、検証ボディに `detail[]` があり `error_type` がないため、このヘッダーを使用します。HTTP ステータスと結合して、どう処理するかを判断してください。不明な値は制御フローでは `internal_error` として扱い、診断用にはそのまま保持してください。 + + + + Router がモデルを再実行せずに保存済みの結果を返す場合に存在し、`true` になります。新規実行時には存在しません。 + + + + 再試行する前に待機する秒数。`409` / `concurrency_limit_exceeded` または `504` / `deadline_exceeded` の場合は、待機後に同じリクエストと同じキーで再試行してください。`429` / `rate_limited` の場合は、レート制限がいつリセットされるかを示します。 + + + + まだ実行中の呼び出しに対して確定したパートナー支出の上限(USD セント)。強制する spend gate は、許可されたレスポンスとその `429` 拒否の両方でこれを返すことがあります。gate が強制していない場合、または別の制御がリクエストを拒否した場合は存在しません。 + + + + 現在実行中の呼び出しに対して確定している USD セント。許可されたレスポンスには自身の呼び出しが含まれ、`429` には拒否された呼び出しは含まれません。`X-Committed-Spend-Limit` とともに送信されます。 + + + + 確定支出の上限を下回って残っている USD セント。要求された呼び出しのコストが残量を超える場合、拒否時でも正の値になることがあります。 + + + + `GET /v2/models/{provider}/{model}/openapi.json` に対して。これを保存し、キャッシュされたスキーマを再検証するために `If-None-Match` として送り返してください。 + + + + スキーマルートに対しては `private, must-revalidate`。レスポンスをプライベートキャッシュに保持し、古いコピーを `ETag` で再検証してください。 + + +## 2つの意味を持つステータスコード + +3つのステータスが2つのバケットで共有されており、それらを見分けるのがこのヘッダーです: + +| ステータス | `X-Comfy-Error-Type` | 対処方法 | +| --- | --- | --- | +| `409` | `concurrency_limit_exceeded` | このキーに対するオリジナルの呼び出しがまだ実行中です。`Retry-After` 待ってから、同じキーを再送してください。 | +| `409` | `invalid_input` | 競合の内容を確認してください。リクエストを変更した場合は、オリジナルのリクエストに戻してください。消費済みでリプレイ不能なキーは結果を復元できません。新規の、課金される可能性がある生成を意図する場合にのみ、新しいキーを使用してください。 | +| `429` | `concurrency_limit_exceeded` | 実行中の呼び出しが多すぎるか、コミット済み支出の上限(`X-Committed-Spend-*` ヘッダーを参照)に達しています。自身の呼び出しのいずれかが完了すると解除されます。 | +| `429` | `rate_limited` | 再試行する前に `Retry-After` を待ってください。 | +| `504` | `deadline_exceeded` | Router 自体の10分間の制限です。`Retry-After` がある場合は、同じキーを再送して実行中の生成結果を回収してください。 | +| `504` | `provider_timeout` | パートナーがタイムアウトしました。[再試行と課金のガイダンス](/ja/development/comfy-router/api#retry-outcomes)に従ってください。課金されないことの保証として扱わないでください。 | + +## 次のステップ + +- [クイックスタート](/ja/development/comfy-router/quickstart): リクエストを送信して結果を読み取ります。 +- [Comfy Router API の使用](/ja/development/comfy-router/api): モデルの検出、スキーマ、エラー、リトライ、課金について。 +- [API リファレンス](/ja/development/comfy-router/reference): これらのヘッダーが定義されている生成済みコントラクト。 +- [制限事項](/ja/development/comfy-router/limitations): Router が現時点で行わないこと、および代わりに使用すべきもの。 diff --git a/ja/development/comfy-router/limitations.mdx b/ja/development/comfy-router/limitations.mdx index a0c9be2c1..a9838e88d 100644 --- a/ja/development/comfy-router/limitations.mdx +++ b/ja/development/comfy-router/limitations.mdx @@ -1,125 +1,97 @@ --- title: "Comfy Router の制限事項" description: "Comfy Router が現在できないこと、代替手段が存在する場合に代わりに使用すべきもの、およびこれらの制限のうち変更される見込みのあるものについて説明します。" -translationSourceHash: b9e78b52 +translationSourceHash: ecf5198e translationFrom: development/comfy-router/limitations.mdx translationBlockHashes: - "_intro": 9eea7f43 - "At a glance": fc2ff613 - "No queued submission": f72af0fd - "No cost or credit figures on a response": ba168aa9 - "No way to resume a call you lost": a783a987 - "Calls are cut off at a server deadline": 45bacfca - "Requests are rate limited per caller": 01f2a8c8 - "No progress while a call runs": be9de68d - "Three forecast buckets are not in the vocabulary": f85a2589 - "Router does not cover every partner operation": 9ecc10d1 - "Next": 2d3bb742 + "_intro": 877ad705 + "What Router supports": 7cbf53c7 + "No queued submission": 74107d82 + "Calls are cut off at a server deadline": 2466a237 + "Recovery depends on the provider": 610f0ec8 + "Requests are rate limited per caller": 421194d9 + "No progress while a call runs": 75d42d8d + "Comfy charges and usage": 90cd7670 + "Router does not cover every partner operation": 4de37c36 + "Model outputs and stored assets": 06c737c1 + "Next": be85b789 --- - -**Comfy Router はまだ一般提供されていません。** 以下で参照されるルート(`POST /v1/models/{provider}/{model}` と、そのカタログおよびスキーマ関連ルート)は、まだリクエストを処理していません。現時点では、認証済みの呼び出しでも `404` が返ります。このページは、それらのルートが提供する予定の契約について説明したものであり、既知の形状に対して統合を記述できるよう、その展開に先立って公開されています。以下の内容はすべて、その契約に関する記述であり、現在実際に試すことができる動作に関するものではありません。 - -Comfy Router は1回の同期呼び出しです。パートナーモデルのネイティブな入力を、1つの認証情報で1つのホストに送信し、接続は開いたままになり、`200` がそのモデルのネイティブな出力を運びます。この形状こそが最初の統合を短くするものであり、また、このページに記載されたすべての制限の由来でもあります。Router を中心に設計する前に、このページを読んでください。後ではなく前です。以下に続く内容のほとんどには単純明快な代替手段があり、代替手段のないものは、Router が保持しない前提に基づいて構築する前に知っておく価値があります。 +Router はパートナーモデルを1回の同期 HTTP 呼び出しで実行します。アプリケーションが完了した結果を待つことができ、モデル自身の入力フィールドと出力フィールドを処理できる場合に使用します。 -## 概要 +## Router がサポートするもの -各行は、その制限を説明するセクションへのリンクになっています。**Deliberate(意図的)** は、その制限がRouterの動作の一部であり、今後の実装を待つものではないことを意味します。**Not yet(未対応)** は、Routerがこの機能を獲得する見込みがあることを意味しますが、このページは時期についての約束をするものではありません。 - -| 制限 | 代替手段 | ステータス | +| 要件 | Router のサポート | 代替案または次のステップ | | --- | --- | --- | -| [キュー中の送信はない: 呼び出しは同期](#キュー投入はありません) | 接続を開いたままにするか、送信とポーリングを行うパートナープロキシルートを使用してください | 未対応 | -| [レスポンスにコストやクレジットの情報がない](#レスポンスにコストやクレジットの情報がない) | Comfyプラットフォームで残高と使用量を確認してください。呼び出し前にモデルのカタログエントリの`billing`を確認してください | 未対応 | -| [失った呼び出しを再開する方法がない](#失った呼び出しを再開する方法がない) | `Idempotency-Key`を送信すると、リトライの課金が最大でも1回に抑えられます。ただし、失われた結果を回復することはできません | 未対応 | -| [サーバーの期限で呼び出しが切断される](#呼び出しはサーバーの期限で打ち切られる) | クライアントに期限を超えるタイムアウトを設定してください。期限内に完了できない作業は分割してください | 意図的 | -| [リクエストは呼び出し元ごとにレート制限される](#リクエストは呼び出し元ごとにレート制限される) | `429` `rate_limited` では `Retry-After` の分だけバックオフしてください。カタログの読み取りは呼び出しごとに再取得せずキャッシュしてください | 意図的 | -| [呼び出し実行中に進行状況がない](#呼び出し実行中は進捗がありません) | 現在Routerにはありません。パートナープロキシルートが独自の進行状況を公開する場合があります | 未対応 | -| [3つの予測バケットが語彙にない](#3つの予測バケットは語彙に含まれていない) | Routerが公開する15のバケットを処理してください。認識できないものはすべて`internal_error`として扱ってください | 未対応 | -| [Routerはすべてのパートナー操作をカバーしていない](#routerはすべてのパートナー操作をカバーしていない) | 同じホストの`/proxy/…`配下にあるパートナープロキシルートを使用してください | 意図的 | - -## キュー投入はありません - -モデルの実行方法は1つだけです。`POST /v1/models/{provider}/{model}` は、生成が完了するまで接続を保持し、レスポンスで結果を返します。ジョブを受け付けて識別子を返し、後で結果を取得できるようにするエンドポイントはなく、完了時のコールバックやウェブフックもありません。 - -**代わりにすべきこと。** ほとんどのモデルではこれは問題になりません。接続を開いたままにして結果を読み取ってください。高速な画像モデルは数秒で結果を返します。長時間のビデオ生成は数分かかることもありますが、Routerはその間接続を保持します。クライアントの読み取りタイムアウトは、[Router自身の期限](#呼び出しはサーバーの期限で打ち切られる) よりも長い余裕のある値に設定し、この呼び出しを高速なリクエストではなく長時間実行として扱ってください。アーキテクチャ上、どうしても接続を開いたままにできない場合(実行時間の上限が短いサーバーレス関数や、ユーザーが閉じることを想定しているブラウザタブなど)は、接続を保持できる自分が管理するワーカーから呼び出しを実行するか、独自の送信・ポーリングのペアを備えたプロバイダー向けのパートナープロキシルートを使用してください。[最後のセクション](#routerはすべてのパートナー操作をカバーしていない) を参照してください。 - -**ステータス: 未実装。** キュー投入のパスは予定されていますが、このページでは時期については何も約束していません。 - -## レスポンスにコストやクレジットの情報がない - -Router のレスポンスはモデルが生成したものを伝えるだけで、その契約にはコストに関する情報が一切ありません。レスポンスボディに請求額・クレジット残高・使用量の数字はなく、ルートもコストヘッダーを宣言しません。1つ注意点があります。Router はパートナープロキシルートと課金パスを共有しており、そのパスは許可リストに載っているプロバイダーの課金済みレスポンスに `X-Comfy-Credits-Used` を付与するため、その1つに対する Router 呼び出しにはこのヘッダーが現れることがあります。これは Router の契約の一部ではありません。許可リスト外のプロバイダーには常に存在せず、べき等リトライでは意図的に*再送されません*。これは、このヘッダーを合算するクライアントが、1回しか支払われていない呼び出しを二重に数えられないようにするためです。これに基づいて照合処理を構築しないでください。モデルカタログも同様で、呼び出し前に必要な課金*ファクト*だけを伝え、価格は決して含みません。したがって、Router のレスポンスだけから支出を照合することはできず、X をどこか別の場所から取得しない限り、ユーザーに「この呼び出しのコストは X」と表示することもできません。 - -**代わりにすべきこと。** 残高・使用量・請求書は [platform.comfy.org](https://platform.comfy.org) の Comfy プラットフォームにあります。ここが、使った額と残っている額の真実の情報源であり、このページの内容に影響されません。呼び出し時に Router が教えてくれる価値のある2つのことを挙げます。クレジット不足で拒否された呼び出しは `insufficient_credits` として返るため、残高を事前確認する代わりに、クレジット切れを型付きエラーとして処理できます。また、各モデルのカタログエントリには `billing.charges_on_policy_rejection` があり、そのモデルがコンテンツポリシー上の理由で拒否した生成に対して課金するかどうかを示します。これはブール値ではなく、**3つの値を持つ文字列**です。`yes`、`no`、`unknown` です。`unknown` は「課金されるかもしれない」と読みます。つまり、まだ誰もそのモデルの挙動を確認していないということであり、未確認のモデルが `no` として公開されないようにするために正確に存在します。`no` は主張だからです。このフィールドは意図的に `enum` ではなく、認識できない値も `unknown` として扱ってください。また、この値に対して真偽値チェックを書かないでください。文字列 `"no"` はほとんどの言語で真と評価され、そのチェックは、このフィールドが存在する目的であるケースを逆にしてしまうからです。プロバイダーによってこの挙動は異なり、その違いは呼び出し時には見えません。呼び出し前にこれを読むことが、後から説明できない課金を避ける方法です。 - -**ステータス: 未対応**(呼び出しごとの数字について)。*カタログ*には意図的に価格が含まれていないことに注意してください。価格は価格が管理される場所に属するものであり、そこから乖離しうるモデルリストに複製されるべきではありません。 - -## 失った呼び出しを再開する方法がない +| 1回のリクエストで生成 | `POST /v2/models/{provider}/{model}` が完了した結果を返します。 | [クイックスタート](/ja/development/comfy-router/quickstart)から始めてください。 | +| ジョブを送信して後で受け取る | 一般的なジョブ/ステータス API や完了 webhook はありません。 | ワーカーから Router を実行するか、送信とポーリングの操作に対応したパートナープロキシを使用してください。 | +| 進捗の表示や出力のストリーミング | 呼び出し中にライブ進捗、ストリーミング、プレビューフレームはありません。 | 不確定な状態を表示するか、サポートされているプロキシ操作を使用してください。 | +| 接続が失われた後の復旧 | Router が受け付けた生成のハンドルを保持していた場合、同じキーでの収集が可能です。 | キーを保持し、[再試行ガイダンス](/ja/development/comfy-router/api#retry-outcomes)に従ってください。 | +| Comfy の課金を照合する | レスポンスに汎用的な Comfy のコストやクレジット残高のフィールドはありません。 | [ワークスペースの請求](https://platform.comfy.org)を使用してください。 | +| 結果を永続的に保存する | 再ホストされた URL や再生された URL を含め、アセット URL は期限切れになる可能性があります。 | アセットをダウンロードしてください。詳細は[結果アセット](/ja/development/comfy-router/reference#結果アセット)を参照してください。 | -Router は実行中の呼び出しの再開可能な記録を保持しません。ステータスルートもジョブ識別子も再接続先もありません。呼び出しの途中で接続が切れた場合(クライアントのクラッシュ、ネットワークの分断、プロセスを再起動するデプロイ)はレスポンスが失われ、その呼び出しについて後から問い合わせることもできません。*生成*が完了して課金されたかどうかは、それを受け取ったかどうかとは別の問いであり、接続が切れただけではどちらも確実には分かりません。 +## キュー中の送信はありません -**代わりにすべきこと。** すべての呼び出しに `Idempotency-Key` ヘッダーを送ってください。失われた呼び出しを再開可能にはしませんが、再試行を安全にします。Router は呼び出しの間キーを予約し、呼び出しが実際に回答を届けた場合、そのレスポンスをキーに対応付けて24時間記録します。**同じ**キーで再試行すると、記録されたレスポンスが再生され、プロバイダーへの2回目のディスパッチ(と再課金)は行われません。`Idempotent-Replayed: true` が付くので、再生と新しい実行を区別できます。論理的な呼び出しごとに新しいキーを生成してください。試行ごとではなく。*異なる*リクエストボディで同じキーを提示すると、静かな上書きではなく `409` になります。 +Routerはモデルの実行中、接続を保持します。非同期のプロバイダーの場合、ジョブを送信して内部でポーリングします。RouterのジョブID、ステータスエンドポイント、コールバック、ウェブフックは公開していません。 -これが何をもたらすかを正確に理解してください。これは**課金**の性質であり、配信の性質ではありません。**キーは最大でも1回しか課金されません。** キーがプロバイダーに最大でも1回しかディスパッチされないという約束でもありません。Router は、実際に回答を受け取った場合にキーを保持します。課金されなかった結果はキーを解放し、呼び出しを再度行えるようにします。`5xx`、`408`/`425`/`429`、そして(ここが重要なケースです)何も届かなかった呼び出し。これらはすべてキーを解放し、そのキーでの再試行は本当に再実行され、プロバイダーに再ディスパッチされます。 - -**つまり、接続が切れた場合は、べき等性が*救えない*ケースです。** 呼び出し途中の接続喪失は通常、レスポンスが一度もコミットされなかったことを意味し、それはまさに上記の解放経路です。同じキーでの再試行は、失った結果を渡すのではなく、新しい実行を開始します。元の生成がすでにディスパッチされていた場合、プロバイダーは2回目に実行するかもしれません。これは正しいデフォルトです。受け取っていない未課金の呼び出しは再実行可能であるべきです。ただし「再試行は新しい実行を生む」と計画してください。「再試行が失った実行を回収する」のではありません。 - -Router がキーに対して何かを*保持*している場合、再試行は再実行ではなく回答として扱われます。元のレスポンスが再生されるか、できない理由を説明する `409` が返ります。元の呼び出しがまだ実行中のときに送られた再試行は `Retry-After` 付きの `409` になるので、待ってから同じキーを再送してください。完了したが Router が忠実なコピーを保持できなかった呼び出しへの再試行も `409` です。これはレスポンスが大きすぎる場合だけではありません。再生上限を超えたレスポンス、回答後に失敗またはパニックしたハンドラー、あなたへの書き込みが失敗または不足した場合。これらはすべてキーを「消費済みだが再生不可」として記録し、同じ `409` を返します。サイズの問題を探しに行かないでください。これらのすべての場合の指針は同じです。**新しい**キーを使ってください。元の呼び出しは完了して課金されており、Router はそのレスポンスを捏造もせず、古いキーで再実行もさせません。 - - -**生成された契約にはまだありません。** ここで説明する `Idempotency-Key` リクエストヘッダー、`409` レスポンス、`Idempotent-Replayed` と `Retry-After` レスポンスヘッダーは、リファレンスの生成元である OpenAPI 契約の `POST /v1/models/{provider}/{model}` には宣言されていません。そのため、生成された API リファレンスには登場せず、SDK もこれらをモデル化しません。正式にサポートされるまで、これらを自分で送受信してください。 - - -**ステータス: 未対応。** 永続的で再開可能な実行は、キュー投入パスとともに登場する見込みです。そこならリクエスト記録の置き場所があります。べき等リトライは今日の答えであり、一時しのぎではありません。いずれにせよ組み込む価値があります。 +リクエストを必要な時間だけ開いたままにできない場合は、ワーカーからRouterを呼び出し、アプリケーション側でジョブを追跡してください。プロバイダーの送信・ポーリングの制御が必要な場合は、[パートナープロキシ](#routerはすべてのパートナー操作をカバーしていない)を使用してください。 ## 呼び出しはサーバーの期限で打ち切られる -Router の1回の呼び出しは、接続を **10分間** 保持することがあります。これがデフォルト値です。これは固定定数ではなく、サーバー側の設定値であるため、契約に刻まれた保証ではなく、設計上の想定値として扱ってください。これを過ぎると、Router は待機を停止し、プロバイダーへの進行中のリクエストをキャンセルして、`X-Comfy-Error-Type: deadline_exceeded` を伴う `504` を返します。**`deadline_exceeded` の呼び出しは課金されません**: 制限は当社側のものであり、そのコストも当社側が負担します。 +Router のデフォルトの期限は **10分** で、デプロイメント側で設定できます。クライアントのタイムアウトはそれより長く設定してください。そうすれば Router が先にエラーとリクエスト ID を返せます。 -キャンセルが行わないことが2つあり、どちらも再試行する前に知っておく価値があります。キャンセルは、プロバイダーがすでに受け付けた生成を取り消すことはありません。Router がジョブを送信してポーリングする方式で駆動するパートナーの場合、期限の満了は Router 自身の待機を終了させるだけで、プロバイダーの作業は終了しません。そのため、そのジョブは完了まで実行され、再試行によって **2回目の生成** が発生する可能性があります(その場合も、タイムアウトした呼び出しに対しては課金されません)。また、送信済みの回答を取り消すこともできません。ハンドラーが競争に勝ち、期限が切れるちょうどその瞬間に応答をコミットした場合、`504` ではなくその応答が保持されます。 +`504` / `deadline_exceeded` は Router が待機を停止したことを意味し、`504` / `provider_timeout` はプロバイダーがタイムアウトしたことを意味します。タイムアウトや接続の切断は、生成が課金されなかった証拠にはならず、プロバイダーが受け付けた作業をキャンセルするものでもありません。再試行する前に [timeouts and collection](/ja/development/comfy-router/api#timeouts-and-collection) を読んでください。 -これを、もう一方の `504` と混同しないでください。`provider_timeout` はパートナーが時間内に応答しなかったことを意味し、こちら **は** 課金されます。一方、`deadline_exceeded` は Router 自身の制限が満了したことを意味します。原因が2つ、課金結果も2つあるからこそ、同じステータスコード上に2つのバケットが存在します。`X-Comfy-Error-Type` で分岐し、ステータスコードのみで判断してはいけません。 + -**代わりにすべきこと。** クライアントの読み取りタイムアウトは、期限より *上* に余裕を持って設定してください。期限より下に設定してはいけません。先に諦めるクライアントは、リクエスト識別子を伴う型付きの `504` を不透明なローカル中断に変えてしまい、サポートが追跡できる唯一の証跡を失うことになります。単一の生成が期限内にどうしても完了できない場合、Router は現時点ではその用途に適していません。その場合は、ジョブを送信してポーリングするパートナープロキシルート経由で実行するか、作業を、それぞれが期限内に完了する複数の呼び出しに分割してください。 +## リカバリはプロバイダーに依存する -**ステータス: 意図的な設計。** 制限は存在しなければなりません。制限がなければ、スタックしたアップストリームが接続と並行処理スロットを無期限に保持することになります。具体的な数値は調整される可能性がありますが、期限の存在自体がなくなることはありません。 +Router は、承認された送信とポーリング形式の生成に対して、プロバイダーのハンドルを保持できます。同じ `Idempotency-Key` を再利用すると、後でそれを回収できます。完了した再生可能なレスポンスも、キーの記録から取得できます。 -## リクエストは呼び出し元ごとにレート制限される +切断されたすべての呼び出しがリカバリできるわけではありません。送信する前にリクエストとキーを保存しておき、[リトライ結果テーブル](/ja/development/comfy-router/api#retry-outcomes)を使用してください。新しいキーは新しい呼び出しを作成し、別途課金が発生する可能性があります。 -Router はトラフィックについて 2 つの異なるものを制限しており、同じ `429` に対して 2 つの異なるバケットで応答します。並行数制限は同時に**実行中**にできる呼び出しの数を制限し、`concurrency_limit_exceeded` で応答します。これは自分の呼び出しのいずれかが完了した瞬間に解消されるため、数秒後に再試行するのが正解です。レート制限は、Router のサーフェスにそもそもどれだけ**頻繁に**アクセスできるかを制限し(`POST /v1/models/{provider}/{model}` と `/v1/models` 配下の 3 つのカタログ読み取りのいずれも対象で、呼び出しがモデルを実行したか、その前に拒否されたかは問いません)、`rate_limited` で応答します。こちらは 1 分間のウィンドウで継続的に補充される割り当てなので、何をしても早く消化することはできません。レスポンスには待機すべき秒数を示す `Retry-After` ヘッダーが含まれ、`detail` にウィンドウが記載されます。分岐はステータスだけではなく、必ず `X-Comfy-Error-Type` に基づいて行ってください。 +## リクエストは呼び出し元ごとにレート制限される -制限は送信元アドレスではなく、認証された呼び出し元をキーにしているため、ホストをまたいでも資格情報に付いて回ります。自分のプロバイダーキー(bring-your-own-key)で実行される呼び出しは対象外です。そのスループットはあなた自身のものだからです。割り当て量は公開された定数ではなくサーバー側の設定値であり、このページでは意図的に数値を記載していません。数値ではなくバックオフを前提に設計してください。 +| レスポンス | 原因 | 対応 | +| --- | --- | --- | +| `429` / `concurrency_limit_exceeded` | 同時呼び出しが多すぎるか、コミット済み支出の上限に対する余裕が不十分です。 | 並行作業を減らしてください。支出ヘッダーは、支出上限と呼び出し回数の制限を区別します。 | +| `429` / `rate_limited` | リクエストの割り当てを使い切りました。 | 再試行する前に `Retry-After` を待ってください。 | -**代わりにすべきこと。** `Retry-After` を尊重してください。その時間内の再試行は同じ拒否に当たります。`GET /v1/models` とモデルの `openapi.json` は一度取得してプロセスの生存期間中キャッシュし、呼び出しのたびに読み直さないようにしてください。これらはデプロイ時にしか変わりません。`429` からリクエスト識別子を保持しておくクライアントは、サポートが追跡できる証跡を持つことになります。 +リクエストレートの制限は、呼び出しとカタログ/スキーマの読み取りに適用され、生成前に拒否されたリクエストも含まれます。これはソース IP ではなく、認証された呼び出し元に従います。呼び出し元のプロバイダーキーを使用した呼び出しは対象外ですが、プロバイダーの制限は引き続き適用されます。 -**ステータス: 意図的な設計。** 呼び出し元ごとのリクエストレートの上限は、期限と同じ理由で存在しなければなりません。数値は調整可能ですが、制限の存在自体がなくなることはありません。 +カタログとスキーマの読み取りはキャッシュしてください。スキーマは `ETag` と `If-None-Match` で再検証してください。再試行とコミット済み支出のフィールドについては[ヘッダー](/ja/development/comfy-router/headers)を参照してください。 ## 呼び出し実行中は進捗がありません -`POST /v1/models/{provider}/{model}` は、最後に一度だけ応答を返します。ストリーミング応答も、サーバー送信イベントも、進捗率も、部分的なフレームやプレビューフレームもありません。これは、自社のAPIが送信とポーリング方式であるパートナーについても当てはまります。Routerはそのポーリングを、あなたの1回の呼び出しの中で内部的に実行し、そこで見られる中間状態はあなたには転送されません。外から見ると、3秒の画像と6分のビデオは同じ形状です。つまり、1つのリクエスト、1つのレスポンス、その間に何もない、ということです。 - -**代わりにできること。** 現在のRouterでは、何もできません。取得できないパーセンテージの代わりに、不確定な進捗状態を表示してください。特定のプロバイダーで進捗が必須要件である場合は、そのプロバイダーのパートナープロキシルートが独自のポーリングやストリーミングを公開しているかどうかを確認し、それらを直接使用してください。実際にいくつかのプロバイダーは対応しており、それらは変更されておらず、完全にサポートされています。 +Routerは最終的な応答を返し、ストリーミングされるトークン、サーバー送信イベント、進捗率の更新、中間のプレビューフレームはありません。プロバイダーの内部ポーリング状態は、リクエスト中には転送されません。 -**ステータス: 未対応。** これはキュー中パスに結びついています。進捗を報告するための場所が必要ですが、それを提供するのはキュー中の送信であり、単一の同期呼び出しではありません。 +不確定な進捗インジケーターを表示してください。進捗やストリーミングが必要な場合は、それを公開しているパートナープロキシのオペレーションを使用してください。 -## 3つの予測バケットは語彙に含まれていない + -Routerの`error_type`語彙は**15個のバケットからなる閉じた集合**です。その15個とは、[APIリファレンス](/ja/development/comfy-router/reference)が列挙し、クイックスタートが指し示すものです。さらに3つが、そのリファレンスの本文で追加が見込まれるものとして名指しされています:`file_download_error`、`cancelled`、`queue_timeout` です。それらは名指しされているだけで、それ以上のものではありません。それらは**現在の集合のメンバーではありません**。Routerのレスポンスがそのいずれかを運ぶことはなく、コントラクトから生成されたクライアントはこれらを認識せず、Routerが内部的にそのいずれかを受け取った場合、レスポンスとして送信する代わりに`internal_error`に置き換えます。したがって、今日これらに対して書く分岐は決して実行されない分岐であり、リファレンスに登場することは、Routerが呼び出しをキャンセルしたりキューに入れたりする証拠ではありません。Routerはどちらも行いません。 +## Comfy の課金と使用量 -これらが完全に省かれるのではなく文書で予測されているのは、`error_type`が意図的に単なる文字列であり`enum`ではないためです。認識できないバケットを厳格に拒否するクライアントは、何かがすでにうまくいかなくなったまさにそのときに、最も深刻な失敗をします。追加分を前もって名指しすることで、読者はこの集合が設計上オープンエンドであることを知ることができます。 +レスポンスにはプロバイダーの使用量やコストのフィールドが含まれる場合があります。これらは Comfy の一律の課金を表すものではありません。`X-Comfy-Credits-Used` はオプションであり、リプレイされません。残高、使用量、請求書については Comfy プラットフォームを使用してください。 -**代わりにすべきこと。** Routerが実際に公開する15個のバケットを処理してください。その完全なリストは[APIリファレンス](/ja/development/comfy-router/reference)にあります。そして、認識できない値を`internal_error`として扱うフォールバック分岐を1つ書いてください。そのフォールバックが仕組み全体です。これにより、この3つと、クライアント作成後に追加される任意のバケットが、あなたを壊さずに届きます。制御フローには大まかなバケットで分岐し、具体的な理由が必要な場合は`422`ボディ内のフィールドごとの`type`を読んでください。 - -**ステータス:未実装。** この3つのそれぞれは、Routerがまだ持っていない動作に対応しており、それぞれがそれを出力し始めるのと同じ変更で語彙に加わります。それより前には決して加わりません。 +カタログは価格ではなく、`billing.charges_on_policy_rejection` などの請求に関する事実を提供します。`yes`、`no`、`unknown` を明示的に処理してください。詳細は [billing](/ja/development/comfy-router/api#model-billing-facts) を参照してください。 ## Routerはすべてのパートナー操作をカバーしていない -Routerはパートナーの*モデル*を実行します。Routerは、パートナーが公開するすべての操作をカバーするわけではありません。ファイルのアップロード、アカウントとアセットの読み取り、プロバイダー固有の管理呼び出し、ストリーミングチャットエンドポイント、一部のパートナーが公開する送信とポーリングのペアなどは対象外です。また、Routerはそれらを再形成することもありません。モデルのネイティブな入力を転送し、ネイティブな出力をそのまま返すため、サポートされていない操作を移植するための統一エンベロープはありません。 +Routerはモデルを実行します。ファイルのアップロード、アカウントの読み取り、アセット管理、ストリーミング、プロバイダーのジョブ制御には、`/proxy/…` 配下のパートナープロキシルートが必要になる場合があります。[Comfy API specification](/ja/openapi-v2.yaml) を確認してください。サポートはプロバイダーによって異なります。 + +## モデルの出力と保存されたアセット -**代わりにすべきこと。** `/proxy/…` のパートナープロキシルートは、同じホスト上で同じ認証情報を使い、引き続き完全にサポートされています。Routerがカバーしないものには、このルートが答えです。これらは非推奨でも、廃止予定でもありません。同じ統合内でRouterと併用することは、回避策ではなく想定された使い方です。多くのモデルにわたって1つのルート形状と1つの認証情報を使いたい場合はRouterを選んでください。特定のパートナー操作、プロバイダー独自のストリーミング応答、またはRouterが意図的に隠している送信・ポーリング制御が必要な場合は、`/proxy/…` を選んでください。 +入力フィールドと出力フィールドはモデルによって異なります。プロバイダー SDK やプロキシから移行すると、ルートと結果の読み取り方法の両方が変わる可能性があります。 -**ステータス: 意図的な設計です。** Routerは対象範囲を意図的に絞っています。1つのルート形状がその機能です。プロキシの対象範囲は現状のままです。 +一部のアセットは Comfy ストレージに再ホストされます。その他はプロバイダーの URL またはインラインバイトです。有効期間とリプレイ動作については、[結果アセット](/ja/development/comfy-router/reference#結果アセット) を参照してください。 ## 次のステップ -- [Comfy Router クイックスタート](/ja/development/comfy-router/quickstart): Python または TypeScript で最初に動作する呼び出しを紹介します。 -- [Comfy Router API リファレンス](/ja/development/comfy-router/reference): Router が送信するすべてのエンドポイント、すべてのパラメータ、すべてのエラーバケットを網羅しています。 + + + Comfy Router を通じて最初の画像を生成します。 + + + モデルを選択し、そのスキーマを確認して、結果と再試行を処理します。 + + diff --git a/ja/development/comfy-router/models.mdx b/ja/development/comfy-router/models.mdx index 9d410477c..024e565b1 100644 --- a/ja/development/comfy-router/models.mdx +++ b/ja/development/comfy-router/models.mdx @@ -2,277 +2,337 @@ title: "Comfy Router APIの使用" sidebarTitle: "Router APIの使用" description: "モデルの選択、スキーマの確認、Routerの安全な呼び出し、結果・エラー・再試行・請求の処理について説明します。" -translationSourceHash: 0d8c3756 +translationSourceHash: 7bca7f7c translationFrom: development/comfy-router/models.mdx translationBlockHashes: - "_intro": 1b554933 - "Discover the catalog": 9264e92d - "Read one model": 6d96021f - "Read input and output schemas": 0b7e6eaa - "Validation and fallback schemas": 9e039521 - "Read the result": fab75186 - "Handle errors, retries, and billing": 563281f5 - "Per-model examples": ed06edba - "Next": 30e39619 + "_intro": f10928e2 + "Anthropic": 6b3a82aa + "Beeble": 3dbc8f79 + "Black Forest Labs": f9ec2193 + "Bria": 524538b9 + "BytePlus": 153e22f7 + "Elevenlabs": d6122bad + "fal": 8962295e + "Freepik": 9b9fc279 + "Gemini Interactions": 772301fb + "Google": 5fb1cd15 + "HeyGen": e63b341c + "Ideogram": a5b5a0ab + "Kling": 78f8dd06 + "Krea": c09355fb + "LTX": 0454756a + "Luma": aaec5c26 + "Luma 2": 7d46b851 + "Meshy": ac9742cb + "MiniMax": 871fec64 + "Moonvalley": 1bafd9a3 + "OpenAI": 1ecffa94 + "Pruna": 29b758ff + "Qwen": 07ff7742 + "Recraft": b75cce53 + "Runway": ec0c741f + "Tencent": 3b746819 + "Veo": 886ab7ad + "Wan": fbd864f4 + "WaveSpeed": 08c44be9 + "xAI": ac264069 --- -モデルを選択し、そのスキーマを確認して、`POST /v2/models/{provider}/{model}` を呼び出します。ルートと認証は、どのモデルでも同じです。 -## カタログを確認する -生成に使用したのと同じAPIキーでモデルを一覧表示します: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v2/models?limit=50" -``` - -簡略化したカタログのレスポンス: - -```json -{ - "data": [ - { - "id": "bfl/flux-2-pro", - "provider": "bfl", - "model": "flux-2-pro", - "billing": { "charges_on_policy_rejection": "no" } - } - ], - "has_more": true, - "next_cursor": "example-cursor", - "limit": 50 -} -``` - -呼び出しパスには `id` を使用します。`billing` オブジェクトには価格ではなく請求に関する事実が含まれます。これに依存する前に、[ポリシー拒否時の請求](/ja/development/comfy-router/models#モデルの課金に関する事実) をお読みください。 - -### ページネーション - -- `has_more` が `true` の場合、返された `next_cursor` を `cursor` として渡します。`has_more` が `false` の場合、前のページが要求した件数より短くても停止します。 -- カーソルは不透明な値として扱います。値をURLエンコードしてください。たとえば、cURL の `--get --data-urlencode "cursor=$NEXT_CURSOR"` を使用します。オフセットを計算したり、カーソルを変更したりしないでください。 -- `limit` はデフォルトで20で、上限は100です。上限を超える値は上限値にクランプされます。0 および負の値はデフォルトが使用されます。レスポンスには、実際に使用された limit が報告されます。 -- 無効なカーソルは `400` / `invalid_input` を返します。リストを黙って先頭からやり直すことはありません。 -- カーソルはカタログの更新をまたいで有効なままの場合がありますが、走査はスナップショットではありません。現在位置より前に追加されたモデルは、その走査では表示されない場合があります。 - -`503` / `service_unavailable` は一時的なものです。バックオフしながら再試行してください。空のカタログとして扱わないでください。SDK の run メソッドは選択済みモデルを直接呼び出します。 - -## モデルを1件読み込む - -モデルIDがわかっている場合は、カタログエントリを直接取得できます: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro -``` - -モデル詳細エンドポイントを使えば、カタログ全体を走査する必要はありません。完全なエントリフィールドについては、[APIリファレンス](/ja/development/comfy-router/reference)を参照してください。 - -## 入力スキーマと出力スキーマを読む - -各モデルはスタンドアロンのOpenAPIドキュメントを公開しています: - -```bash -curl --dump-header schema-headers.txt \ - -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -モデルオペレーション内では、出力スキーマが作成されている場合、`requestBody`が入力を記述し、`200`レスポンスが出力を記述します。入力検証と出力ドキュメントは異なります:Routerは入力スキーマに基づいて検証しますが、返されたプロバイダー結果を出力スキーマに基づいて検証することはありません。 - -出力のメディアタイプとそのフィールドを確認してください。未作成の出力は`*/*`を使用でき、一部のモデルはJSONではなくバイナリデータを返します。 - -### スキーマをキャッシュする - -スキーマとその`ETag`を保存します。後でスキーマを取得する際は、そのETagを`If-None-Match`で渡します。`304`にはボディがないため、キャッシュされたドキュメントを保持します。`200`は置き換え用のドキュメントとETagを提供します。 - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - -H 'If-None-Match: "previous-etag-value"' \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -スキーマルートは`Cache-Control: private, must-revalidate`を使用します。認証済みレスポンスを共有キャッシュに保存しないでください。このETag/304の動作はスキーマエンドポイントにのみ適用されます。 - -## 検証とフォールバックスキーマ - -オーサリングされた入力スキーマは、プロバイダー呼び出しの前に無効なフィールドを `422` と `detail[]` 配列で拒否します。`loc` 内のフィールドパスを読み取ってください。[検証エラー](/ja/development/comfy-router/models#検証エラー) を参照してください。 - -一部のスキーマは任意の JSON オブジェクトを受け入れ、`x-comfy-input-schema-authored: false` を設定します。ルーターはモデル固有の検証を行わずにこれらのリクエストを転送するため、プロバイダーがそれらを拒否できます。 - -`bfl/flux-2-pro` は現在このフォールバックを使用しています。必須フィールドについては、プロバイダーのドキュメントまたはそのモデルページを確認してください。 - -## 結果を読み取る - -Router は各モデルのターミナル結果の形状を返します。画像、ビデオ、テキストに共通のエンベロープはありません。BFL の画像出力は `result.sample` を使用しますが、他のモデルは URL リストやインラインバイトを返すことができます。 - -一部のアセット URL は Comfy によってリホストされ、その他はプロバイダー URL またはインラインバイトのままです。[結果アセット](/ja/development/comfy-router/reference) を確認し、有効期限のあるアセットは速やかにダウンロードしてください。リプレイしても URL が更新されることはありません。 - -## エラー・再試行・課金の処理 - -### エラーの防御的な読み取り - -失敗したリクエストは、プロキシの HTML エラーページ、切り詰められた JSON、またはプレーンテキストを返すことがあります。JSON パースエラーで HTTP ステータスやリクエスト ID を見逃さないでください。これらのヘルパーは Python では `httpx.Response` を、TypeScript では Fetch `Response` を使用します。通常の SDK 呼び出しでは、SDK がすでにエラーフィールドを公開しています。 - - - -```python -def read_router_error(response): - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - - detail = body.get("detail") if isinstance(body, dict) else None - return { - "status": response.status_code, - "request_id": response.headers.get("X-Comfy-Request-Id"), - "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), - "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", - "validation": detail if isinstance(detail, list) else [], - } -``` - -```typescript -async function readRouterError(response: Response) { - let body: unknown; - try { - body = JSON.parse(await response.text()); - } catch { - body = undefined; - } - - const detail = - typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; - - return { - status: response.status, - requestId: response.headers.get("X-Comfy-Request-Id"), - errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", - message: typeof detail === "string" ? detail : `HTTP ${response.status}`, - validation: Array.isArray(detail) ? detail : [], - }; -} -``` - - - -### 検証エラー - -Router の `422` は、プロバイダー呼び出しの前に検証が失敗し、課金されないことを意味します。レスポンスボディには `detail[]` 配列があり、拒否されたフィールドごとに 1 つのエントリが含まれます。エラーカテゴリはボディではなく `X-Comfy-Error-Type` にあります。例: - -```json -{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} -``` - -これは例示用の形状です。寛容な入力スキーマを持つモデルは、Router の `422` を返す代わりに、不足しているフィールドをプロバイダーに転送することがあります。 - -| Field | Meaning | -| --- | --- | -| `loc` | Path to the rejected field, outermost segment first. | -| `msg` | Human-readable reason for the failure. | -| `type` | Provider-specific reason, such as `missing`, `greater_than` or `image_too_small`. | -| `ctx` | Optional bound or extra data for that provider error. | - -`400` は、このフィールドごとの検証ボディではなく、不正なカーソルなどのリクエストレベルの問題を示します。対応しているカテゴリは[エラーリファレンス](/ja/development/comfy-router/reference#エラーバケット)に一覧されています。未知のカテゴリは制御フローでは `internal_error` として扱いますが、診断用に元の値は保持してください。新しいエラー値を無条件に拒否したり、まだ発生していない予定のエラーカテゴリを既に存在するものとして実装したりしないでください。 - -### 安全な再試行 - -キーは**送信する前に**、モデル ID とリクエストボディと共に保存してください。その論理呼び出しのすべての試行で同じキーを再利用します。Router はレスポンスで `Idempotency-Key` を返しません。Python SDK は送出された例外にキーを含めますが、TypeScript では指定したキーを自分で保持してください。 - -キーは、資格情報が属するワークスペース内で共有されます。ワークスペースがない場合はユーザーがスコープになります。そのスコープ内で一意の UUID を使用し、同じ資格情報で再試行してください。別のワークスペースメンバーのキーを再利用すると、そのメンバーが記録した結果が返ったり競合が発生したりします。資格情報を変更すると、別の課金対象の呼び出しが始まることがあります。 - -Router はキーごとのレスポンスまたは収集状態を 24 時間保持します。再試行しても新しい保持期間は始まりません。その状態が失効した後は、古いキーで結果を復元したり新しいディスパッチを防止したりできると期待しないでください。キーによって失効したアセット URL が再び使えるようになることもありません。 - -### 再試行の結果 - -| Status | Bucket | What it means | What to do | -| --- | --- | --- | --- | -| `200` | `Idempotent-Replayed: true` header | Router replayed a result or returned a collected generation. | Use the result; the replay is not a second Comfy charge. | -| `409` | `concurrency_limit_exceeded` | The original call for that key is still running. | Wait `Retry-After`, then resend the same key. | -| `504` | `deadline_exceeded`, with `Retry-After` | Router retained a handle to accepted provider work. | Wait the stated interval and resend the same request and key to collect it. It may still be running. | -| `429` | `rate_limited` | The request allowance is exhausted. | Wait `Retry-After`, then retry with the same key. | -| `429` | `concurrency_limit_exceeded` | The concurrent-call or committed-spend limit refused the request. | Reduce concurrency and retry with the same key. Inspect the spend headers. | -| `409` | `invalid_input` | The request differs from the key's original request, or its record cannot be replayed. | Inspect the conflict. Restore the original request if it changed. Start a new key only when you intend a new, potentially billable call. | -| `504` without a collection hint, another `5xx`, or no response | Varies | The status alone does not identify whether work was accepted, retained, or released. | Preserve the same key and request. Use a bounded retry policy; recovery is not guaranteed. | - -競合の判定では、メソッド、モデルパス、クエリ、ボディが比較されます。 oversized なレスポンス、レスポンス書き込みの失敗、安全に再生できないアセットの後では、キーは再生不可になることがあります。待っていても消費された結果は復元されません。新しいキーは新しい呼び出しを開始するものであり、古い出力を取得するものではありません。 - -プロバイダーへのディスパッチ前の拒否はキーを解放します。ディスパッチ済みの呼び出しは、プロバイダーのハンドルを保持するか、再生不可になる可能性があります。ステータスコードだけでキーの状態や課金を推測しないでください。 - -呼び出しのタイムアウトや接続の切断を理由に、まったく新しいキーを作成しないでください。Router がすでに生成を受け付けている場合、新しいキーは 2 つ目の論理ランを作成し、その結果 2 つ目の課金対象の結果を生む可能性があります。元の呼び出しが回復不可能だと分かるまで、同じキーを再利用してください。 - -#### タイムアウトと収集 - -1 回の Router 呼び出しは、デフォルトで最大 10 分間接続を保持することがあります。クライアントのタイムアウトをこの上限より長く設定すれば、不透明なローカル中断ではなく、型付きの `504` とリクエスト ID を受け取れます。 - -`deadline_exceeded` is Router's waiting limit; `provider_timeout` is the provider's deadline. A provider generation that completes can be billed even if the caller received a timeout or disconnected. Client cancellation stops the wait and SDK retries, but does not necessarily cancel accepted provider work. - -送信してポーリングするタイプのプロバイダーでは、保持されたハンドルにより、同じキーのリクエストが元の生成の収集を続けられます。回復可能なハンドルなしに切断されたディスパッチ済み呼び出しは、再生可能な結果なしにキーを消費することがあります。この場合、同じキーでの再試行は `409` を返します。成功を捕捉できなかったプロバイダー起因の一時的な障害でも、キーが解放されて再試行できる場合があります。ハンドルがないという事実だけでは、どの結果が該当するかは判断できません。 - -SDK は限られた予算内で一部の障害を再試行します。エラーが返されたら、新しいリクエストを作成するのではなく、リクエストとキーを保持してください。生の HTTP の場合、この例では 2 つの明示的な収集ヒントのみを再試行します。 - -```python -import os -import time - -import httpx - - -def collect(model, arguments, key, attempts=3): - with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: - for attempt in range(attempts): - response = client.post( - f"https://api.comfy.org/v2/models/{model}", - headers={"X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": key}, - json=arguments, - ) - if response.is_success: - return response.json() - - category = response.headers.get("X-Comfy-Error-Type") - collecting = (response.status_code, category) in { - (409, "concurrency_limit_exceeded"), - (504, "deadline_exceeded"), - } - delay = response.headers.get("Retry-After", "") - if not collecting or not delay.isdigit() or attempt == attempts - 1: - response.raise_for_status() - time.sleep(int(delay)) - raise ValueError("attempts must be positive") -``` - -元のモデル、ボディ、保存したキーを渡します。これで制限されるのは試行回数であり、総経過時間ではありません。各呼び出しはクライアントのタイムアウトまで実行でき、各待機は `Retry-After` に従います。HTTP エラーは検査用にレスポンスを保持し、トランスポートエラーはキーを置き換えずに伝播します。アプリケーションにより長い回復期間が必要な場合は、保存したキーで後日の収集を予約してください。 - -### モデルの課金に関する事実 - -`GET /v2/models` and the model detail response include `billing.charges_on_policy_rejection`. This describes a policy refusal, not every failure or a price estimate. - -| Value | Meaning | -| --- | --- | -| `yes` | A policy refusal is charged. | -| `no` | A policy refusal is not charged. | -| `unknown` | Nobody has established the behavior yet. Treat it as maybe charged. | - -Compare these strings explicitly: `"no"` is truthy in Python and JavaScript. Treat any unrecognized value as `unknown`. A request refused for lack of credits reports `insufficient_credits`. - -Provider payloads may include their own cost or usage numbers; those are not the Comfy charge. `X-Comfy-Credits-Used` may appear for an allowlist of providers but is not universal and is not replayed. Use [workspace usage and invoices](https://platform.comfy.org) for reconciliation. Preserve the request ID when investigating a charge. - -## モデル別の例 - -- Google Gemini -- Nano Banana 2 -- Nano Banana 2 Lite -- Nano Banana Pro -- FLUX 1.1 Pro Ultra -- FLUX Kontext -- FLUX Video Upscale -- FLUX 3 Video -- Ideogram 4 - -## 関連項目 - -- [クイックスタート](/ja/development/comfy-router/quickstart): インストール、呼び出し、画像の保存。 -- [APIリファレンス](/ja/development/comfy-router/reference): エンドポイントのパラメータ、スキーマ、レスポンスコード。 +{/* 生成済みファイル。Router カタログから `pnpm code-pages:gen` によって生成されます。 */} + +以下に挙げるすべてのモデルは、同じルート `POST /v2/models/{provider}/{model}` で提供され、それぞれのモデル固有の JSON ボディを使用します。各ページには、Python、TypeScript、cURL での動作するリクエスト例を掲載しています。ディスカバリー、スキーマ、エラー、リトライ、課金については、[Comfy Router API の使用](/ja/development/comfy-router/api) を参照してください。 + +## Anthropic + +- [Claude Fable 5.1](/ja/development/comfy-router/models/anthropic/claude-fable-5-1/code): `anthropic/claude-fable-5-1` +- [Claude Fable 5](/ja/development/comfy-router/models/anthropic/claude-fable-5/code): `anthropic/claude-fable-5` +- [Claude Haiku 4.5 20251001](/ja/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code): `anthropic/claude-haiku-4-5-20251001` +- [Claude Opus 4.6](/ja/development/comfy-router/models/anthropic/claude-opus-4-6/code): `anthropic/claude-opus-4-6` +- [Claude Opus 4.7](/ja/development/comfy-router/models/anthropic/claude-opus-4-7/code): `anthropic/claude-opus-4-7` +- [Claude Opus 4.8](/ja/development/comfy-router/models/anthropic/claude-opus-4-8/code): `anthropic/claude-opus-4-8` +- [Claude Opus 5](/ja/development/comfy-router/models/anthropic/claude-opus-5/code): `anthropic/claude-opus-5` +- [Claude Sonnet 4.5 20250929](/ja/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code): `anthropic/claude-sonnet-4-5-20250929` +- [Claude Sonnet 4.6](/ja/development/comfy-router/models/anthropic/claude-sonnet-4-6/code): `anthropic/claude-sonnet-4-6` +- [Claude Sonnet 5](/ja/development/comfy-router/models/anthropic/claude-sonnet-5/code): `anthropic/claude-sonnet-5` + +## Beeble + +- [SwitchX](/ja/development/comfy-router/models/beeble/switchx/code): `beeble/switchx` + +## Black Forest Labs + +- [Erase V1](/ja/development/comfy-router/models/black-forest-labs/erase-v1/code): `bfl/erase-v1` +- [Flux 1.1 Pro Ultra Image](/ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code): `bfl/flux-pro-1.1-ultra` +- [FLUX.1 Kontext](/ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code): `bfl/flux-kontext-pro` +- [FLUX 2 Max](/ja/development/comfy-router/models/black-forest-labs/flux-2-max/code): `bfl/flux-2-max` +- [FLUX 2 Pro](/ja/development/comfy-router/models/black-forest-labs/flux-2-pro/code): `bfl/flux-2-pro` +- [FLUX 3 Video](/ja/development/comfy-router/models/black-forest-labs/flux-3-video/code): `bfl/flux-3-video` +- [FLUX Pro 1.0 Canny](/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code): `bfl/flux-pro-1.0-canny` +- [FLUX Pro 1.0 Depth](/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code): `bfl/flux-pro-1.0-depth` +- [FLUX Pro 1.0 Expand](/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code): `bfl/flux-pro-1.0-expand` +- [FLUX Pro 1.0 Fill](/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code): `bfl/flux-pro-1.0-fill` +- [FLUX Video Upscale](/ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code): `bfl/video-upscale-v1` +- [Video Edit V1](/ja/development/comfy-router/models/black-forest-labs/video-edit-v1/code): `bfl/video-edit-v1` +- [VTO V1](/ja/development/comfy-router/models/black-forest-labs/vto-v1/code): `bfl/vto-v1` + +## Bria + +- [Fibo](/ja/development/comfy-router/models/bria/fibo/code): `bria/fibo` +- [画像編集 消去](/ja/development/comfy-router/models/bria/image-edit-erase/code): `bria/image-edit-erase` +- [画像編集 展開](/ja/development/comfy-router/models/bria/image-edit-expand/code): `bria/image-edit-expand` +- [画像編集 生成塗りつぶし](/ja/development/comfy-router/models/bria/image-edit-gen-fill/code): `bria/image-edit-gen-fill` +- [画像編集 解像度を上げる](/ja/development/comfy-router/models/bria/image-edit-increase-resolution/code): `bria/image-edit-increase-resolution` +- [画像編集 背景を除去](/ja/development/comfy-router/models/bria/image-edit-remove-background/code): `bria/image-edit-remove-background` +- [構造化指示](/ja/development/comfy-router/models/bria/structured-instruction/code): `bria/structured-instruction` +- [ビデオ編集 グリーンスクリーン](/ja/development/comfy-router/models/bria/video-edit-green-screen/code): `bria/video-edit-green-screen` +- [ビデオ編集 背景を除去](/ja/development/comfy-router/models/bria/video-edit-remove-background/code): `bria/video-edit-remove-background` +- [ビデオ編集 背景を置き換え](/ja/development/comfy-router/models/bria/video-edit-replace-background/code): `bria/video-edit-replace-background` + +## BytePlus + +- [Dreamina Seedance 2.0 260128](/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code): `byteplus/dreamina-seedance-2-0-260128` +- [Dreamina Seedance 2.0 Fast 260128](/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code): `byteplus/dreamina-seedance-2-0-fast-260128` +- [Dreamina Seedance 2.0 Mini](/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code): `byteplus/dreamina-seedance-2-0-mini` +- [Dreamina Seedance 2.5 260628](/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code): `byteplus/dreamina-seedance-2-5-260628` +- [Seed 2.0 Lite 260228](/ja/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code): `byteplus/seed-2-0-lite-260228` +- [Seed 2.0 Mini 260215](/ja/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code): `byteplus/seed-2-0-mini-260215` +- [Seed 2.0 Pro 260328](/ja/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code): `byteplus/seed-2-0-pro-260328` +- [Seed Audio 1.0 Multilingual](/ja/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code): `byteplus/seed-audio-1.0-multilingual` +- [Seed Audio 1.0](/ja/development/comfy-router/models/byteplus/seed-audio-1-0/code): `byteplus/seed-audio-1.0` +- [Seedance 1.0 Lite I2V 250428](/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code): `byteplus/seedance-1-0-lite-i2v-250428` +- [Seedance 1.0 Lite T2V 250428](/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code): `byteplus/seedance-1-0-lite-t2v-250428` +- [Seedance 1.0 Pro 250528](/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code): `byteplus/seedance-1-0-pro-250528` +- [Seedance 1.0 Pro Fast 251015](/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code): `byteplus/seedance-1-0-pro-fast-251015` +- [Seedance 1.5 Pro 251215](/ja/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code): `byteplus/seedance-1-5-pro-251215` +- [Seededit 3.0 I2I 250628](/ja/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code): `byteplus/seededit-3-0-i2i-250628` +- [Seedream 3.0 T2I 250415](/ja/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code): `byteplus/seedream-3-0-t2i-250415` +- [Seedream 4.0 250828](/ja/development/comfy-router/models/byteplus/seedream-4-0-250828/code): `byteplus/seedream-4-0-250828` +- [Seedream 4.5 251128](/ja/development/comfy-router/models/byteplus/seedream-4-5-251128/code): `byteplus/seedream-4-5-251128` +- [Seedream 5.0 260128](/ja/development/comfy-router/models/byteplus/seedream-5-0-260128/code): `byteplus/seedream-5-0-260128` +- [Seedream 5.0 Pro 260628](/ja/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code): `byteplus/seedream-5-0-pro-260628` + +## Elevenlabs + +- [Eleven Sfx V2](/ja/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code): `elevenlabs/eleven_sfx_v2` +- [Eleven V3](/ja/development/comfy-router/models/elevenlabs/eleven-v3/code): `elevenlabs/eleven_v3` + +## fal + +- [H3 Max Turbo](/ja/development/comfy-router/models/fal/h3-max-turbo/code): `fal/h3-max-turbo` +- [H3 Max](/ja/development/comfy-router/models/fal/h3-max/code): `fal/h3-max` +- [Patina](/ja/development/comfy-router/models/fal/patina/code): `fal/patina` + +## Freepik + +- [AI Image Upscaler Precision V2](/ja/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code): `freepik/ai-image-upscaler-precision-v2` +- [AI Skin Enhancer Creative](/ja/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code): `freepik/ai-skin-enhancer-creative` +- [AI Skin Enhancer Faithful](/ja/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code): `freepik/ai-skin-enhancer-faithful` +- [AI Skin Enhancer Flexible](/ja/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code): `freepik/ai-skin-enhancer-flexible` + +## Gemini Interactions + +- [Gemini Omni 1.1 Flash](/ja/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code): `gemini-interactions/gemini-omni-1.1-flash` +- [Gemini Omni Flash Preview](/ja/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code): `gemini-interactions/gemini-omni-flash-preview` + +## Google + +- [Gemini 2.5 Flash Image](/ja/development/comfy-router/models/google/gemini-2-5-flash-image/code): `vertexai/gemini-2.5-flash-image` +- [Gemini 3.1 Flash Lite](/ja/development/comfy-router/models/google/gemini-3-1-flash-lite/code): `vertexai/gemini-3.1-flash-lite` +- [Gemini 3.7 Flash](/ja/development/comfy-router/models/google/gemini-3-7-flash/code): `vertexai/gemini-3.7-flash` +- [Gemini 3.8 Flash](/ja/development/comfy-router/models/google/gemini-3-8-flash/code): `vertexai/gemini-3.8-flash` +- [Google Gemini](/ja/development/comfy-router/models/google/gemini/code): `vertexai/gemini-3.1-pro-preview` +- [Imagen 3.0 Fast Generate 001](/ja/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code): `vertexai/imagen-3.0-fast-generate-001` +- [Imagen 3.0 Generate 001](/ja/development/comfy-router/models/google/imagen-3-0-generate-001/code): `vertexai/imagen-3.0-generate-001` +- [Imagen 3.0 Generate 002](/ja/development/comfy-router/models/google/imagen-3-0-generate-002/code): `vertexai/imagen-3.0-generate-002` +- [Nano Banana 2 Lite](/ja/development/comfy-router/models/google/nano-banana-2-lite/code): `vertexai/gemini-3.1-flash-lite-image` +- [Nano Banana 2](/ja/development/comfy-router/models/google/nano-banana-2/code): `vertexai/gemini-3.1-flash-image` +- [Nano Banana Pro](/ja/development/comfy-router/models/google/nano-banana-pro/code): `vertexai/gemini-3-pro-image` + +## HeyGen + +- [Starfish](/ja/development/comfy-router/models/heygen/starfish/code): `heygen/starfish` + +## Ideogram + +- [Ideogram V3](/ja/development/comfy-router/models/ideogram/ideogram-v3/code): `ideogram/ideogram-v3` +- [Ideogram 4.0](/ja/development/comfy-router/models/ideogram/ideogram-v4/code): `ideogram/ideogram-v4` +- [P Image Ideogram](/ja/development/comfy-router/models/ideogram/p-image-ideogram/code): `ideogram/p-image-ideogram` + +## Kling + +- [Kling 3.0 Turbo](/ja/development/comfy-router/models/kling/kling-3-0-turbo/code): `kling/kling-3.0-turbo` +- [Kling Image O1](/ja/development/comfy-router/models/kling/kling-image-o1/code): `kling/kling-image-o1` +- [Kling V1.5](/ja/development/comfy-router/models/kling/kling-v1-5/code): `kling/kling-v1-5` +- [Kling V1.6](/ja/development/comfy-router/models/kling/kling-v1-6/code): `kling/kling-v1-6` +- [Kling V1](/ja/development/comfy-router/models/kling/kling-v1/code): `kling/kling-v1` +- [Kling V2.1 Master](/ja/development/comfy-router/models/kling/kling-v2-1-master/code): `kling/kling-v2-1-master` +- [Kling V2.1](/ja/development/comfy-router/models/kling/kling-v2-1/code): `kling/kling-v2-1` +- [Kling V2.5 Turbo](/ja/development/comfy-router/models/kling/kling-v2-5-turbo/code): `kling/kling-v2-5-turbo` +- [Kling V2.6](/ja/development/comfy-router/models/kling/kling-v2-6/code): `kling/kling-v2-6` +- [Kling V2 Master](/ja/development/comfy-router/models/kling/kling-v2-master/code): `kling/kling-v2-master` +- [Kling V3 Omni](/ja/development/comfy-router/models/kling/kling-v3-omni/code): `kling/kling-v3-omni` +- [Kling V3](/ja/development/comfy-router/models/kling/kling-v3/code): `kling/kling-v3` +- [Kling Video O1](/ja/development/comfy-router/models/kling/kling-video-o1/code): `kling/kling-video-o1` +- [Videos Avatar Image 2video](/ja/development/comfy-router/models/kling/videos-avatar-image2video/code): `kling/videos-avatar-image2video` +- [Videos Lip Sync](/ja/development/comfy-router/models/kling/videos-lip-sync/code): `kling/videos-lip-sync` +- [Videos Video Extend](/ja/development/comfy-router/models/kling/videos-video-extend/code): `kling/videos-video-extend` + +## Krea + +- [Krea 2 Large](/ja/development/comfy-router/models/krea/krea-2-large/code): `krea/krea-2-large` +- [Krea 2 Medium Turbo](/ja/development/comfy-router/models/krea/krea-2-medium-turbo/code): `krea/krea-2-medium-turbo` +- [Krea 2 Medium](/ja/development/comfy-router/models/krea/krea-2-medium/code): `krea/krea-2-medium` +- [Krea 2](/ja/development/comfy-router/models/krea/krea-2/code): `krea/krea-2` + +## LTX + +- [LTX 2.5 Fast](/ja/development/comfy-router/models/ltx/ltx-2-5-fast/code): `ltx/ltx-2-5-fast` +- [LTX 2.5 Pro](/ja/development/comfy-router/models/ltx/ltx-2-5-pro/code): `ltx/ltx-2-5-pro` + +## Luma + +- [Photon 1](/ja/development/comfy-router/models/luma/photon-1/code): `luma/photon-1` +- [Photon Flash 1](/ja/development/comfy-router/models/luma/photon-flash-1/code): `luma/photon-flash-1` +- [Ray 2](/ja/development/comfy-router/models/luma/ray-2/code): `luma/ray-2` +- [Ray Flash 2](/ja/development/comfy-router/models/luma/ray-flash-2/code): `luma/ray-flash-2` + +## Luma 2 + +- [Uni 1 Max](/ja/development/comfy-router/models/luma_2/uni-1-max/code): `luma_2/uni-1-max` +- [Uni 1](/ja/development/comfy-router/models/luma_2/uni-1/code): `luma_2/uni-1` + +## Meshy + +- [アニメーション](/ja/development/comfy-router/models/meshy/animations/code): `meshy/animations` +- [Meshy 5](/ja/development/comfy-router/models/meshy/meshy-5/code): `meshy/meshy-5` +- [Meshy 6](/ja/development/comfy-router/models/meshy/meshy-6/code): `meshy/meshy-6` +- [Meshy 7](/ja/development/comfy-router/models/meshy/meshy-7/code): `meshy/meshy-7` +- [リメッシュ](/ja/development/comfy-router/models/meshy/remesh/code): `meshy/remesh` +- [リギング](/ja/development/comfy-router/models/meshy/rigging/code): `meshy/rigging` + +## MiniMax + +- [MiniMax H3](/ja/development/comfy-router/models/minimax/minimax-h3/code): `minimax/minimax-h3` + +## Moonvalley + +- [画像から動画へ](/ja/development/comfy-router/models/moonvalley/image-to-video/code): `moonvalley/image-to-video` +- [テキストから画像へ](/ja/development/comfy-router/models/moonvalley/text-to-image/code): `moonvalley/text-to-image` +- [テキストから動画へ](/ja/development/comfy-router/models/moonvalley/text-to-video/code): `moonvalley/text-to-video` +- [動画から動画へのリサイズ](/ja/development/comfy-router/models/moonvalley/video-to-video-resize/code): `moonvalley/video-to-video-resize` +- [動画から動画へ](/ja/development/comfy-router/models/moonvalley/video-to-video/code): `moonvalley/video-to-video` + +## OpenAI + +- [GPT 4.1 Mini](/ja/development/comfy-router/models/openai/gpt-4-1-mini/code): `openai/gpt-4.1-mini` +- [GPT 4.1 Nano](/ja/development/comfy-router/models/openai/gpt-4-1-nano/code): `openai/gpt-4.1-nano` +- [GPT 4.1](/ja/development/comfy-router/models/openai/gpt-4-1/code): `openai/gpt-4.1` +- [GPT 4o](/ja/development/comfy-router/models/openai/gpt-4o/code): `openai/gpt-4o` +- [GPT 5.5 Pro](/ja/development/comfy-router/models/openai/gpt-5-5-pro/code): `openai/gpt-5.5-pro` +- [GPT 5.5](/ja/development/comfy-router/models/openai/gpt-5-5/code): `openai/gpt-5.5` +- [GPT 5.6 Luna](/ja/development/comfy-router/models/openai/gpt-5-6-luna/code): `openai/gpt-5.6-luna` +- [GPT 5.6 Sol](/ja/development/comfy-router/models/openai/gpt-5-6-sol/code): `openai/gpt-5.6-sol` +- [GPT 5.6 Terra](/ja/development/comfy-router/models/openai/gpt-5-6-terra/code): `openai/gpt-5.6-terra` +- [GPT 5 Mini](/ja/development/comfy-router/models/openai/gpt-5-mini/code): `openai/gpt-5-mini` +- [GPT 5 Nano](/ja/development/comfy-router/models/openai/gpt-5-nano/code): `openai/gpt-5-nano` +- [GPT 5](/ja/development/comfy-router/models/openai/gpt-5/code): `openai/gpt-5` +- [GPT 6 Astra](/ja/development/comfy-router/models/openai/gpt-6-astra/code): `openai/gpt-6-astra` +- [GPT Image 1.5](/ja/development/comfy-router/models/openai/gpt-image-1-5/code): `openai/gpt-image-1.5` +- [GPT Image 1](/ja/development/comfy-router/models/openai/gpt-image-1/code): `openai/gpt-image-1` +- [GPT Image 2.5 Flare](/ja/development/comfy-router/models/openai/gpt-image-2-5-flare/code): `openai/gpt-image-2.5-flare` +- [GPT Image 2.5 Sunburst](/ja/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code): `openai/gpt-image-2.5-sunburst` +- [GPT Image 2](/ja/development/comfy-router/models/openai/gpt-image-2/code): `openai/gpt-image-2` +- [o1-pro](/ja/development/comfy-router/models/openai/o1-pro/code): `openai/o1-pro` +- [o1](/ja/development/comfy-router/models/openai/o1/code): `openai/o1` +- [o3](/ja/development/comfy-router/models/openai/o3/code): `openai/o3` +- [o4-mini](/ja/development/comfy-router/models/openai/o4-mini/code): `openai/o4-mini` + +## Pruna + +- [P Video 2](/ja/development/comfy-router/models/pruna/p-video-2/code): `pruna/p-video-2` + +## Qwen + +- [Qwen Image 3.0 Pro](/ja/development/comfy-router/models/qwen/qwen-image-3-0-pro/code): `qwen/qwen-image-3.0-pro` +- [Qwen Image 3.0](/ja/development/comfy-router/models/qwen/qwen-image-3-0/code): `qwen/qwen-image-3.0` + +## Recraft + +- [Recraft V2](/ja/development/comfy-router/models/recraft/recraftv2/code): `recraft/recraftv2` +- [Recraft V3](/ja/development/comfy-router/models/recraft/recraftv3/code): `recraft/recraftv3` +- [Recraft V4.1 プロ Vector](/ja/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code): `recraft/recraftv4_1_pro_vector` +- [Recraft V4.1 プロ](/ja/development/comfy-router/models/recraft/recraftv4-1-pro/code): `recraft/recraftv4_1_pro` +- [Recraft V4.1 Utility プロ Vector](/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code): `recraft/recraftv4_1_utility_pro_vector` +- [Recraft V4.1 Utility プロ](/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code): `recraft/recraftv4_1_utility_pro` +- [Recraft V4.1 Utility Vector](/ja/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code): `recraft/recraftv4_1_utility_vector` +- [Recraft V4.1 Utility](/ja/development/comfy-router/models/recraft/recraftv4-1-utility/code): `recraft/recraftv4_1_utility` +- [Recraft V4.1 Vector](/ja/development/comfy-router/models/recraft/recraftv4-1-vector/code): `recraft/recraftv4_1_vector` +- [Recraft V4.1](/ja/development/comfy-router/models/recraft/recraftv4-1/code): `recraft/recraftv4_1` +- [Recraft V4 プロ](/ja/development/comfy-router/models/recraft/recraftv4-pro/code): `recraft/recraftv4_pro` +- [Recraft V4 Styles プロ Vector](/ja/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code): `recraft/recraftv4_styles_pro_vector` +- [Recraft V4 Styles プロ](/ja/development/comfy-router/models/recraft/recraftv4-styles-pro/code): `recraft/recraftv4_styles_pro` +- [Recraft V4 Styles Vector](/ja/development/comfy-router/models/recraft/recraftv4-styles-vector/code): `recraft/recraftv4_styles_vector` +- [Recraft V4 Styles](/ja/development/comfy-router/models/recraft/recraftv4-styles/code): `recraft/recraftv4_styles` +- [Recraft V4](/ja/development/comfy-router/models/recraft/recraftv4/code): `recraft/recraftv4` + +## Runway + +- [Aleph 2](/ja/development/comfy-router/models/runway/aleph2/code): `runway/aleph2` +- [Gen 4 Image](/ja/development/comfy-router/models/runway/gen4-image/code): `runway/gen4_image` +- [Gen 4 Turbo](/ja/development/comfy-router/models/runway/gen4-turbo/code): `runway/gen4_turbo` + +## Tencent + +- [Hunyuan 3D Part](/ja/development/comfy-router/models/tencent/hunyuan-3d-part/code): `tencent/hunyuan-3d-part` +- [Hunyuan 3D Smart Topology](/ja/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code): `tencent/hunyuan-3d-smart-topology` +- [Hunyuan 3D Texture Edit](/ja/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code): `tencent/hunyuan-3d-texture-edit` +- [Hunyuan 3D Uv](/ja/development/comfy-router/models/tencent/hunyuan-3d-uv/code): `tencent/hunyuan-3d-uv` + +## Veo + +- [Veo 2.0 Generate 001](/ja/development/comfy-router/models/veo/veo-2-0-generate-001/code): `veo/veo-2.0-generate-001` +- [Veo 3.0 Fast Generate 001](/ja/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code): `veo/veo-3.0-fast-generate-001` +- [Veo 3.0 Generate 001](/ja/development/comfy-router/models/veo/veo-3-0-generate-001/code): `veo/veo-3.0-generate-001` +- [Veo 3.1 Fast Generate 001](/ja/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code): `veo/veo-3.1-fast-generate-001` +- [Veo 3.1 Generate 001](/ja/development/comfy-router/models/veo/veo-3-1-generate-001/code): `veo/veo-3.1-generate-001` +- [Veo 3.1 Lite Generate 001](/ja/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code): `veo/veo-3.1-lite-generate-001` + +## Wan + +- [HappyHorse 1.0 I2V](/ja/development/comfy-router/models/wan/happyhorse-1-0-i2v/code): `wan/happyhorse-1.0-i2v` +- [HappyHorse 1.0 R2V](/ja/development/comfy-router/models/wan/happyhorse-1-0-r2v/code): `wan/happyhorse-1.0-r2v` +- [HappyHorse 1.0 T2V](/ja/development/comfy-router/models/wan/happyhorse-1-0-t2v/code): `wan/happyhorse-1.0-t2v` +- [HappyHorse 1.0 Video Edit](/ja/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code): `wan/happyhorse-1.0-video-edit` +- [HappyHorse 1.1 I2V](/ja/development/comfy-router/models/wan/happyhorse-1-1-i2v/code): `wan/happyhorse-1.1-i2v` +- [HappyHorse 1.1 R2V](/ja/development/comfy-router/models/wan/happyhorse-1-1-r2v/code): `wan/happyhorse-1.1-r2v` +- [HappyHorse 1.1 T2V](/ja/development/comfy-router/models/wan/happyhorse-1-1-t2v/code): `wan/happyhorse-1.1-t2v` +- [Wan 2.5 I2I プレビュー](/ja/development/comfy-router/models/wan/wan2-5-i2i-preview/code): `wan/wan2.5-i2i-preview` +- [Wan 2.5 I2V プレビュー](/ja/development/comfy-router/models/wan/wan2-5-i2v-preview/code): `wan/wan2.5-i2v-preview` +- [Wan 2.5 T2I プレビュー](/ja/development/comfy-router/models/wan/wan2-5-t2i-preview/code): `wan/wan2.5-t2i-preview` +- [Wan 2.5 T2V プレビュー](/ja/development/comfy-router/models/wan/wan2-5-t2v-preview/code): `wan/wan2.5-t2v-preview` +- [Wan 2.6 I2V](/ja/development/comfy-router/models/wan/wan2-6-i2v/code): `wan/wan2.6-i2v` +- [Wan 2.6 R2V](/ja/development/comfy-router/models/wan/wan2-6-r2v/code): `wan/wan2.6-r2v` +- [Wan 2.6 T2V](/ja/development/comfy-router/models/wan/wan2-6-t2v/code): `wan/wan2.6-t2v` +- [Wan 2.7 I2V](/ja/development/comfy-router/models/wan/wan2-7-i2v/code): `wan/wan2.7-i2v` +- [Wan 2.7 R2V](/ja/development/comfy-router/models/wan/wan2-7-r2v/code): `wan/wan2.7-r2v` +- [Wan 2.7 T2V](/ja/development/comfy-router/models/wan/wan2-7-t2v/code): `wan/wan2.7-t2v` +- [Wan 2.7 ビデオ編集](/ja/development/comfy-router/models/wan/wan2-7-videoedit/code): `wan/wan2.7-videoedit` +- [Wan 3.0 Video Prime](/ja/development/comfy-router/models/wan/wan3-0-video-prime/code): `wan/wan3.0-video-prime` +- [Wan 3.0 ビデオ](/ja/development/comfy-router/models/wan/wan3-0-video/code): `wan/wan3.0-video` + +## WaveSpeed + +- [Flashvsr](/ja/development/comfy-router/models/wavespeed/flashvsr/code): `wavespeed/flashvsr` +- [Seedvr 2](/ja/development/comfy-router/models/wavespeed/seedvr2/code): `wavespeed/seedvr2` +- [Ultimate Image Upscaler](/ja/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code): `wavespeed/ultimate-image-upscaler` + +## xAI + +- [Grok Imagine Image 2.0](/ja/development/comfy-router/models/xai/grok-imagine-image-2-0/code): `xai/grok-imagine-image-2.0` +- [Grok Imagine Image Pro](/ja/development/comfy-router/models/xai/grok-imagine-image-pro/code): `xai/grok-imagine-image-pro` +- [Grok Imagine Image Quality](/ja/development/comfy-router/models/xai/grok-imagine-image-quality/code): `xai/grok-imagine-image-quality` +- [Grok Imagine Image](/ja/development/comfy-router/models/xai/grok-imagine-image/code): `xai/grok-imagine-image` +- [Grok Imagine Video 1.5 Preview](/ja/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code): `xai/grok-imagine-video-1.5-preview` +- [Grok Imagine Video 1.5](/ja/development/comfy-router/models/xai/grok-imagine-video-1-5/code): `xai/grok-imagine-video-1.5` +- [Grok Imagine Video](/ja/development/comfy-router/models/xai/grok-imagine-video/code): `xai/grok-imagine-video` diff --git a/ja/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx b/ja/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx new file mode 100644 index 000000000..211126332 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Fable 5.1 を使う" +description: "Comfy Router 経由で anthropic/claude-fable-5-1 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Fable 5.1" +translationSourceHash: d7cdabe9 +translationFrom: development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx +translationBlockHashes: + "_intro": ee6f1125 + "Quick start": f53af83a + "Schema": d2c6492b + "Examples": e6e3e477 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-fable-5-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5-1` の API リファレンスです。Anthropic から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `anthropic/claude-fable-5-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5-1", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5-1", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 生成を停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類の全体像については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列の省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result など)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-fable-5-1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおけるキャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに存在し、そのターンで何も生成されなかった場合は空になります。 + + + + そのブロックのテキスト。`text` ブロックに存在し、それ以外の種類には存在しません。 + + + + ブロックの種類。`text` が `text` を持つ唯一の種類で、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` およびツール結果ブロックは、現在 Anthropic が送信するその他の種類であり、この一覧は開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5-1", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-fable-5/code.mdx b/ja/development/comfy-router/models/anthropic/claude-fable-5/code.mdx new file mode 100644 index 000000000..c35b7099a --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-fable-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Fable 5 を使う" +description: "Comfy Router 経由で anthropic/claude-fable-5 を呼び出します。endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Fable 5" +translationSourceHash: 42f440ed +translationFrom: development/comfy-router/models/anthropic/claude-fable-5/code.mdx +translationBlockHashes: + "_intro": 71874613 + "Quick start": d43983c6 + "Schema": 15962b1f + "Examples": d4496b58 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/anthropic/claude-fable-5.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5` の API リファレンス。Anthropic から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `anthropic/claude-fable-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類の全体像については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列による省略形式、またはコンテンツブロック(text、image、document、tool_use、tool_result など)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + 最上位のシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-fable-5/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおけるキャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに含まれ、ターンが何も生成しなかった場合は空になります。 + + + + そのブロックのテキスト。`text` ブロックに含まれ、それ以外の種類には含まれません。 + + + + ブロックの種類。`text` を持つのが `text` であり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが現在 Anthropic から送信されるその他の種類で、このリストは開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx b/ja/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx new file mode 100644 index 000000000..f22bfcfb5 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Haiku 4.5 20251001 を使用する" +description: "Comfy Router 経由で anthropic/claude-haiku-4-5-20251001 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Haiku 4.5 20251001" +translationSourceHash: a6c93c8c +translationFrom: development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx +translationBlockHashes: + "_intro": ade4fe09 + "Quick start": f5f98099 + "Schema": 9679eecf + "Examples": 18cca7af +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-haiku-4-5-20251001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-haiku-4-5-20251001` の API リファレンス。Anthropic から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `anthropic/claude-haiku-4-5-20251001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-haiku-4-5-20251001", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-haiku-4-5-20251001", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 入力 + + + 停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類体系の全体については、Anthropic Messages API ドキュメントを参照してください。 + + + + 文字列の省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result、...)の配列のいずれか。 + + + + 取り得る値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に届きます。 + + +Router が `GET /v2/models/anthropic/claude-haiku-4-5-20251001/openapi.json` で提供するスキーマから生成されており、これはリクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに存在し、そのターンが何も生成しなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに存在し、それ以外の種類には存在しません。 + + + + ブロックの種類。`text` が `text` を持つ唯一のものであり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが、現在 Anthropic が送信するその他の種類であり、このリストは拡張されます。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx b/ja/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx new file mode 100644 index 000000000..553f0c701 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Opus 4.6 を使う" +description: "Comfy Router 経由で anthropic/claude-opus-4-6 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Opus 4.6" +translationSourceHash: 2b59f7c6 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx +translationBlockHashes: + "_intro": 0919bc94 + "Quick start": 7479d7ac + "Schema": d3b6797e + "Examples": 2cc5500c +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/anthropic/claude-opus-4-6.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-6` の API リファレンス。Anthropic のモデルを Comfy Router が提供します。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用しており(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `anthropic/claude-opus-4-6` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 停止する前に生成するトークンの最大数。 + + + + 会話のターン。完全なコンテンツブロックの分類については Anthropic Messages API ドキュメントを参照してください。 + + + + 文字列の省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result など)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic メッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に届きます。 + + +Router が `GET /v2/models/anthropic/claude-opus-4-6/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に示したもの。完了したすべてのメッセージに含まれ、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに含まれ、それ以外の種類には含まれません。 + + + + ブロックの種類。`text` を持つのは `text` だけであり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが、現在 Anthropic が送信するその他の種類です。このリストは今後拡張される可能性があります。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx b/ja/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx new file mode 100644 index 000000000..a3231f1f7 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Opus 4.7 を使用する" +description: "Comfy Router 経由で anthropic/claude-opus-4-7 を呼び出します: endpoint、リクエスト形状、Router が返すレスポンスについて。" +sidebarTitle: "Claude Opus 4.7" +translationSourceHash: a2c2394b +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx +translationBlockHashes: + "_intro": adedb853 + "Quick start": fab41f76 + "Schema": 69d553ae + "Examples": 8eadda7c +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-opus-4-7.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-7` の API Reference です。Anthropic から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `anthropic/claude-opus-4-7` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-7", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-7", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 入力 + + + 停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの完全な分類については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列による省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result、...)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのままの形で Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-opus-4-7/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に対象とするドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロック(順序どおり)。完了したすべてのメッセージに含まれ、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに含まれ、それ以外の種類には含まれません。 + + + + ブロックの種類。`text` は `text` を持つ種類であり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックは、現在 Anthropic が送信するその他の種類であり、このリストは拡張される可能性があります。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-7", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx b/ja/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx new file mode 100644 index 000000000..6a2630a11 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router で Claude Opus 4.8 を使用する" +description: "Comfy Router 経由で anthropic/claude-opus-4-8 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Opus 4.8" +translationSourceHash: 73f5bbc2 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx +translationBlockHashes: + "_intro": 06eea645 + "Quick start": 4a68e1ef + "Schema": 0519e19d + "Examples": 07251ae9 +--- +{/* GENERATED FILE. router-schemas/anthropic/claude-opus-4-8.json から `pnpm code-pages:gen` により生成されたファイルです。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-8` の API Reference です。Anthropic から Comfy Router を介して提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用します。cURL のスニペットは、生の HTTP 経由で同じ呼び出しを行います。 + +**モデル ID:** `anthropic/claude-opus-4-8` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-8` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-8", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-8", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-8 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 入力 + + + 停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類の全体像については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列の省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result など)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルの system プロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に届きます。 + + +Router が `GET /v2/models/anthropic/claude-opus-4-8/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに存在し、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに存在し、それ以外の種類には存在しません。 + + + + ブロックの種類。`text` が `text` を含む唯一の種類で、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが Anthropic が現在送信するその他の種類であり、このリストは開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-8", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ja/development/comfy-router/models/anthropic/claude-opus-5/code.mdx b/ja/development/comfy-router/models/anthropic/claude-opus-5/code.mdx new file mode 100644 index 000000000..88e0c49c7 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-opus-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Opus 5 を使用する" +description: "Comfy Router 経由で anthropic/claude-opus-5 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Opus 5" +translationSourceHash: 00909559 +translationFrom: development/comfy-router/models/anthropic/claude-opus-5/code.mdx +translationBlockHashes: + "_intro": dd45f124 + "Quick start": 1d505a56 + "Schema": 8006be48 + "Examples": 6926a739 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/anthropic/claude-opus-5.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-5` の APIリファレンスです。Anthropic から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `anthropic/claude-opus-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 停止する前に生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類体系の全体については Anthropic Messages API ドキュメントを参照してください。 + + + + 文字列による省略記法か、コンテンツブロック(text、image、document、tool_use、tool_result、...)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-opus-5/openapi.json` で提供するスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに含まれ、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに含まれ、その他の種類には含まれません。 + + + + ブロックの種類。`text` は `text` を持つ種類であり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` およびツール結果のブロックが、現在 Anthropic が送信するその他の種類です。このリストは開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx b/ja/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx new file mode 100644 index 000000000..50b79d259 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Claude Sonnet 4.5 20250929 を Comfy Router で使用する" +description: "Comfy Router 経由で anthropic/claude-sonnet-4-5-20250929 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Sonnet 4.5 20250929" +translationSourceHash: 85681552 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx +translationBlockHashes: + "_intro": eb91f6c0 + "Quick start": 4e0bf3e9 + "Schema": c0b4e9c3 + "Examples": 78b06084 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-sonnet-4-5-20250929.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-4-5-20250929` の API リファレンス。Anthropic から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `anthropic/claude-sonnet-4-5-20250929` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-5-20250929", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-5-20250929", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 停止する前に生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類の全体については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列の省略形か、コンテンツブロック(text、image、document、tool_use、tool_result、...)の配列のいずれかです。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルの system プロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-sonnet-4-5-20250929/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となるドキュメントと同じです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおけるキャッシュ書き込み入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順番に並べたもの。完了したすべてのメッセージに存在し、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックには存在し、それ以外の種類には存在しません。 + + + + ブロックの種類。`text` は `text` を持つ種類で、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` およびツール結果ブロックは現在 Anthropic が送信するその他の種類であり、このリストは拡張される可能性があります。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-5-20250929", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx b/ja/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx new file mode 100644 index 000000000..30e56bcaa --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Claude Sonnet 4.6 を Comfy Router で使用する" +description: "Comfy Router 経由で anthropic/claude-sonnet-4-6 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Sonnet 4.6" +translationSourceHash: 508d46b3 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx +translationBlockHashes: + "_intro": fdc3383a + "Quick start": 91b031a4 + "Schema": 7e4df7aa + "Examples": 7fb5285d +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-sonnet-4-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-4-6` の API リファレンスです。Anthropic から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `anthropic/claude-sonnet-4-6` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + 生成を停止するまでに生成するトークンの最大数。 + + + + 会話のターン。コンテンツブロックの分類の全体像については Anthropic Messages API ドキュメントを参照してください。 + + + + 文字列による省略形、またはコンテンツブロック(text、image、document、tool_use、tool_result、...)の配列のいずれか。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列またはコンテンツブロックの配列のいずれかで、どちらもそのまま Anthropic に届きます。 + + +Router が `GET /v2/models/anthropic/claude-sonnet-4-6/openapi.json` で提供するスキーマから生成されたものです。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込み入力トークンの TTL 別の内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信のコンテンツブロックを順序どおりに並べたもの。完了したすべてのメッセージに含まれ、そのターンで何も生成されなかった場合は空になります。 + + + + そのブロックのテキスト。`text` ブロックには含まれ、それ以外の種類には存在しません。 + + + + ブロックの種類。`text` は `text` を含む唯一の種類であり、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが、現在 Anthropic が送信するその他の種類です。このリストは開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx b/ja/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx new file mode 100644 index 000000000..fc6397a95 --- /dev/null +++ b/ja/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Claude Sonnet 5 を使う" +description: "Comfy Router 経由で anthropic/claude-sonnet-5 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Claude Sonnet 5" +translationSourceHash: 65026c35 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx +translationBlockHashes: + "_intro": 816f3f43 + "Quick start": 54b3b756 + "Schema": ed894fd9 + "Examples": a3ab5037 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/anthropic/claude-sonnet-5.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-5` の API リファレンスです。Anthropic から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `anthropic/claude-sonnet-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 入力 + + + 停止するまでに生成するトークンの最大数。 + + + + 会話のターン。content ブロックの分類体系の全体については Anthropic Messages API のドキュメントを参照してください。 + + + + 文字列の省略形、または content ブロック(text、image、document、tool_use、tool_result など)の配列のいずれかです。 + + + + 指定可能な値: `user`、`assistant` + + + + Anthropic のモデル識別子(例: `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + true の場合、レスポンスは単一の JSON ボディではなく、Anthropic のメッセージイベントの `text/event-stream` になります。 + + + + トップレベルのシステムプロンプト。文字列または content ブロックの配列のいずれかで、どちらもそのまま Anthropic に渡されます。 + + +Router が `GET /v2/models/anthropic/claude-sonnet-5/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 呼び出しのトークン使用量。 + + + + Anthropic Messages API 呼び出しにおける、キャッシュ書き込みの入力トークンの TTL 別内訳。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 返信の content ブロックを順番に並べたもの。完了したすべてのメッセージに含まれ、そのターンで何も生成されなかった場合は空になります。 + + + + ブロックのテキスト。`text` ブロックに含まれ、それ以外の種類には含まれません。 + + + + ブロックの種類。`text` のみが `text` を持ち、`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use`、およびツール結果ブロックが、現在 Anthropic が送信するその他の種類であり、このリストは開かれています。 + + +## 例 + +### 入力 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/beeble/switchx/code.mdx b/ja/development/comfy-router/models/beeble/switchx/code.mdx new file mode 100644 index 000000000..3f2c878ef --- /dev/null +++ b/ja/development/comfy-router/models/beeble/switchx/code.mdx @@ -0,0 +1,226 @@ +--- +title: "Comfy Router で SwitchX を使用する" +description: "Comfy Router 経由で beeble/switchx を呼び出します: endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "SwitchX" +translationSourceHash: 71dbe99d +translationFrom: development/comfy-router/models/beeble/switchx/code.mdx +translationBlockHashes: + "_intro": 38f14aeb + "Quick start": 80404da0 + "Schema": ee28c671 + "Examples": 85b68332 +--- +{/* GENERATED FILE. Generated from router-schemas/beeble/switchx.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Beeble から提供する `beeble/switchx` の API リファレンスです。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `beeble/switchx` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/beeble/switchx` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "beeble/switchx", + { + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("beeble/switchx", { + alpha_mode: "auto", + generation_type: "image", + max_resolution: 720, + prompt: "A cinematic product photo of a glass lamp on a marble table", + source_uri: "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/beeble/switchx \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"alpha_mode\": \"auto\", \"generation_type\": \"image\", \"max_resolution\": 720, \"prompt\": \"A cinematic product photo of a glass lamp on a marble table\", \"source_uri\": \"https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## スキーマ + +### 入力 + + + アルファモード: auto、fill、custom、または select + + 指定可能な値: `auto`、`fill`、`custom`、`select` + + + + カスタムアルファマットの URI。alpha_mode が custom または select の場合に必須です。auto または fill では無視されます。 + + + + 完了または失敗時に webhook 通知を受け取るための HTTPS URL。 + + + + 出力タイプ: 画像またはビデオ + + 指定可能な値: `image`、`video` + + + + 安全な再試行のための冪等性キー。同じキーのジョブがすでにアカウントに存在する場合、API は複製を作成せずに既存のジョブのステータスを返します。 + + + + 最大出力解像度: 720 または 1080 (デフォルト: 1080)。 + + + + 希望する出力のテキスト説明 (最大 2,000 文字)。prompt または reference_image_uri の少なくとも1つが必須です。 + + + + スタイル転送用の参照画像の URI。source_uri と同じ URI タイプを受け付けます。 + + + + ソース画像またはビデオの URI。beeble://uploads/\{id}/\{filename}、https URL、または data:\{mime};base64 URI を受け付けます (最大 50 MB)。 + + +Router が `GET /v2/models/beeble/switchx/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + auto、fill、custom、または select + + + + ジョブが完了または失敗したときの ISO 8601 タイムスタンプ。 + + + + ジョブが作成されたときの ISO 8601 タイムスタンプ。 + + + + エラーメッセージ (status が failed の場合に存在します)。 + + + + 画像またはビデオ + + + + ジョブ識別子 (swx_...) + + + + 最後のステータス変更の ISO 8601 タイムスタンプ。 + + + + SwitchX ジョブの出力に対する署名付き URL。 + + + + アルファマットの URL。 + + + + 合成済み出力の URL。 + + + + 前処理済みソースの URL。 + + + + 進行状況のパーセンテージ (0~100)。 + + + + 現在のジョブステータス。 + + 指定可能な値: `in_queue`、`processing`、`completed`、`failed` + + + + SwitchX ジョブの webhook 配信ステータス。 + + + + これまでの配信試行回数。 + + + + 最後に失敗した配信試行のエラーメッセージ。 + + + + pending、delivered、または failed + + +## 例 + +### 入力 + +```json +{ + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 出力 + +```json +{ + "alpha_mode": "auto", + "completed_at": "2027-01-01T00:01:04Z", + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "image", + "id": "swx_1a2b3c4d5e6f7a8b", + "modified_at": "2027-01-01T00:01:04Z", + "output": { + "alpha": "https://example.invalid/beeble/switchx/alpha.png", + "render": "https://example.invalid/beeble/switchx/render.png", + "source": "https://example.invalid/beeble/switchx/source.png" + }, + "progress": 100, + "status": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx b/ja/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx new file mode 100644 index 000000000..c44454f81 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx @@ -0,0 +1,210 @@ +--- +title: "Comfy Router で Erase V1 を使う" +description: "Comfy Router 経由で bfl/erase-v1 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて。" +sidebarTitle: "Erase V1" +translationSourceHash: e609bb17 +translationFrom: development/comfy-router/models/black-forest-labs/erase-v1/code.mdx +translationBlockHashes: + "_intro": b4153070 + "Schema": 9d76d890 + "Examples": d7b73bfd +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/erase-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Black Forest Labs から提供する `bfl/erase-v1` の API リファレンスです。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/erase-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/erase-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/erase-v1", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/erase-v1", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/erase-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## スキーマ + +### 入力 + + + 削除の前にマスクを膨張させるピクセル数。膨張はオブジェクトの輪郭を覆いやすくするのに役立ちます。最大25ピクセルです。 + + 範囲: `0` から `25` + + + + Base64エンコードされた入力画像、またはHTTP(S)の画像URL。 + + + + Base64エンコードされた白黒マスク、またはHTTP(S)の画像URL。白いピクセルは削除するオブジェクトを示し、黒いピクセルは保持されます。入力画像と同じ寸法である必要があります。 + + + + 指定可能な値: `jpeg`、`png`、`webp` + + + + 入力と出力のモデレーションに対する許容値。0から5の間で、0が最も厳しく、5が最も緩くなります。 + + 範囲: `0` から `5` + + + + 再現性のための任意のシード。 + + + + webhook署名の検証用の任意のシークレット。 + + + + webhook通知を受け取るURL。 + + 形式: `uri` + + +Routerが `GET /v2/models/bfl/erase-v1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクがReadyになった時点で設定されます。 + + 形式: `float` + + + + BFLのタスク識別子。 + + + + BFLが報告する任意の生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成結果。ここではnullableではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` をnullableにすると、単なるキーの存在確認にまで弱まってしまいます。 + + + + プロバイダーが報告する生成のコスト。これはBFLの数値であり、Comfyの課金額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻。Unixエポックからの秒数。`double` である理由は `start_time` と同じです。 + + 形式: `double` + + + + 実際に生成で実行されたプロンプト(プロンプトのアップサンプリング適用後)。 + + + + 生成されたアセットへの署名付きURL。RouterはアセットをComfyのストレージに再ホストしてこのフィールドを書き換えるため、通常は最大24時間有効なComfyホストのURLになります。発行時に24時間分の署名が付与され、23時間のメモから再送されるため、後からのポーリングでは残り1時間程度のものが返ることがあります。再ホストを実行できなかったリーフは、代わりにBFL自身の短命な配信URLを保持します。ビデオでは約2時間、画像では約10分です。いずれの場合もリンクは失効するため、URLを保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード。指定したものでもプロバイダーが選択したものでもかまいません。`int64` として宣言されているのは、BFLが2^31を超えるシード(例: 2784347701)を返すためです。フォーマット指定のない `integer` では、多くのSDKジェネレーターで32ビットフィールドとして生成されてしまいます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻。Unixエポックからの秒数。`float` ではなく `double` です。現在のエポック値付近ではfloat32の間隔が約128秒になるため、生成全体のスパンが単一のデコード値に潰れてしまいます。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==" +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx new file mode 100644 index 000000000..761168694 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx @@ -0,0 +1,426 @@ +--- +title: "Comfy Router で Flux 1.1 Pro Ultra Image を使用する" +description: "Comfy Router 経由で HTTP を使って FLUX 1.1 [pro] Ultra および FLUX 1.1 [pro] を呼び出すための Python、TypeScript、cURL スニペット。リクエストのフィールドと結果の形状も解説します" +sidebarTitle: "Flux 1.1 Pro Ultra Image" +translationSourceHash: 70ee8564 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx +--- + +{/* 生成されたファイルです。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Flux 1.1 Pro Ultra Image の API リファレンス。FLUX 1.1 [pro] は Black Forest Labs のテキストから画像へのモデルです。Ultra モードでは最大 4MP の解像度で画像を生成できます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +呼び出したいモデルを選択してください。以下の内容(スニペット、スキーマ、例)はすべて選択したモデルに対応しています。 + + + +**モデル ID:** `bfl/flux-pro-1.1-ultra` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1-ultra", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": False, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1-ultra", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + aspect_ratio: "16:9", + raw: false, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"aspect_ratio\": \"16:9\", \"raw\": false}" +``` + + +

スキーマ

+ +

入力

+ + + 画像のアスペクト比。21:9 から 9:21 の間で指定します(例: 16:9)。 + + + + リミックスするためのオプションの base64 エンコード画像。 + + + + プロンプトと image prompt のブレンド。0(プロンプトのみ)から 1(image prompt のみ)。 + + 範囲: `0` ~ `1` + + + + 出力画像のフォーマット。 + + 指定可能な値: `jpeg`、`png`、`webp` + + + + 画像生成用のテキストプロンプト。 + + + + プロンプトをアップサンプルするかどうか。有効にすると、より創造的な生成のためにプロンプトが自動的に変更されます。 + + + + より加工が少なく、自然な見た目の画像を生成します。 + + + + 入力と出力のモデレーションに対する許容値。0(最も厳しい)から 6(最も緩い)。 + + 範囲: `0` ~ `6` + + + + 再現性のためのオプションのシード。省略した場合はランダムなシードが使用されます。 + + + + Webhook 署名検証用のオプションのシークレット。 + + + + Webhook 通知を受け取る URL。 + + 形式: `uri` + + +`GET /v2/models/bfl/flux-pro-1.1-ultra/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +

出力

+ + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` ~ `1` + + 形式: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` を null 許容にするとキーの存在確認にまで後退してしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`double` である理由は `start_time` と同じです。 + + 形式: `double` + + + + プロンプトのアップサンプリング後の、実際に生成で使用されたプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時点で 24 時間の署名が付き、23 時間のメモから再生されるため、後からのポーリングでは残り 1 時間しかない URL が返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオで約 2 時間、画像で約 10 分)。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード。指定されたものか、プロバイダーが選択したものかは問いません。`int64` と宣言されているのは、BFL が 2^31 を超えるシード(例: 2784347701)を返すためです。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`double` であり `float` ではありません。現在のエポック値付近における float32 の間隔は約 128 秒で、生成全体のスパンが単一のデコード値に潰れてしまいます。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +

+ +

入力

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": false +} +``` + +

出力

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +URL は一時的なものです。保存が必要な場合は、速やかに画像をダウンロードしてください。 +
+ +**モデル ID:** `bfl/flux-pro-1.1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + width: 1024, + height: 768, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"width\": 1024, \"height\": 768}" +``` + + +

スキーマ

+ +

入力

+ + + 生成される画像の高さ(ピクセル)。32 の倍数である必要があります。 + + 範囲: `256` ~ `1440` + + + + FLUX Redux で使用するためのオプションの base64 エンコード画像。 + + + + 出力画像のフォーマット。 + + 指定可能な値: `jpeg`、`png`、`webp` + + + + 画像生成用のテキストプロンプト。 + + + + プロンプトをアップサンプルするかどうか。有効にすると、より創造的な生成のためにプロンプトが自動的に変更されます。 + + + + 入力と出力のモデレーションに対する許容値。0(最も厳しい)から 6(最も緩い)。 + + 範囲: `0` ~ `6` + + + + 再現性のためのオプションのシード。省略した場合はランダムなシードが使用されます。 + + + + Webhook 署名検証用のオプションのシークレット。 + + + + Webhook 通知を受け取る URL。 + + 形式: `uri` + + + + 生成される画像の幅(ピクセル)。32 の倍数である必要があります。 + + 範囲: `256` ~ `1440` + + +`GET /v2/models/bfl/flux-pro-1.1/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +

出力

+ + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` ~ `1` + + 形式: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` を null 許容にするとキーの存在確認にまで後退してしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`double` である理由は `start_time` と同じです。 + + 形式: `double` + + + + プロンプトのアップサンプリング後の、実際に生成で使用されたプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時点で 24 時間の署名が付き、23 時間のメモから再生されるため、後からのポーリングでは残り 1 時間しかない URL が返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオで約 2 時間、画像で約 10 分)。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード。指定されたものか、プロバイダーが選択したものかは問いません。`int64` と宣言されているのは、BFL が 2^31 を超えるシード(例: 2784347701)を返すためです。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`double` であり `float` ではありません。現在のエポック値付近における float32 の間隔は約 128 秒で、生成全体のスパンが単一のデコード値に潰れてしまいます。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +

+ +

入力

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768 +} +``` + +

出力

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +URL は一時的なものです。保存が必要な場合は、速やかに画像をダウンロードしてください。 +
+
+ + \ No newline at end of file diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx new file mode 100644 index 000000000..48e00542d --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx @@ -0,0 +1,452 @@ +--- +title: "Comfy Router で FLUX.1 Kontext を使用する" +description: "Comfy Router 経由で HTTP を使って FLUX.1 Kontext Pro と Kontext Max を呼び出すための Python、TypeScript、cURL のスニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "FLUX.1 Kontext" +translationSourceHash: 6016f7f5 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +FLUX.1 Kontext の API リファレンスです。FLUX.1 Kontext は Black Forest Labs の指示駆動型の画像編集モデルです。画像とテキストの指示を送信すると、シーンの残りの部分を保持したまま編集された画像が返されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +呼び出したいモデルを選択してください。以下の内容はすべて、スニペットからスキーマ、例に至るまで、この選択に従います。 + + + +**モデル ID:** `bfl/flux-kontext-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-pro` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-pro", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-pro", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

スキーマ

+ +

入力

+ + + 出力のアスペクト比で、21:9 から 9:21 の間(例: 16:9)。入力画像が指定されている場合はその入力画像のアスペクト比がデフォルトになり、それ以外の場合は 1:1 になります。 + + + + 編集する画像。base64 でエンコードされた画像、または http(s) URL として指定します。オプションです。指定しない場合、モデルはプロンプトのみから生成します。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 出力画像形式。 + + 指定可能な値: `jpeg`、`png`、`webp` + + + + input_image に適用する編集、または input_image が指定されていない場合に生成する画像を記述するテキストプロンプト。 + + + + プロンプトをアップサンプリングするかどうか。有効にすると、より創造的な生成のためにプロンプトが自動的に変更されます。 + + + + 入力と出力のモデレーションの許容値レベル。0(最も厳格)から 6(最も緩い)の間。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード。省略した場合はランダムなシードが使用されます。 + + + + webhook 署名検証用のオプションのシークレット。 + + + + webhook 通知を受け取る URL。 + + 形式: `uri` + + +`GET /v2/models/bfl/flux-kontext-pro/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +

出力

+ + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成結果。ここでは nullable ではありません。このコンポーネントの `required` エントリは `200` が結果を伴うことを約束するものであり、nullable な `result` はそれをキーの存在チェックにまで後退させてしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + 形式: `double` + + + + プロンプトのアップサンプリング後の、実際に生成が使用したプロンプト。 + + + + 生成済みアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付けられ、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかない URL が返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信用 URL を保持します(ビデオでは約 2 時間、画像では約 10 分)。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成が使用したシード。指定されたものでもプロバイダーが選択したものでも同じです。`int64` として宣言されています。BFL は 2^31 を超えるシード(例: 2784347701)を返すことがあり、フォーマットされていない `integer` は多くの SDK ジェネレーターで 32 ビットフィールドとして生成されるためです。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒となり、生成全体の幅が単一のデコード値に潰れてしまうためです。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +

+ +

入力

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

出力

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +URL は一時的なものです。画像を保持する必要がある場合は、速やかにダウンロードしてください。 +
+ +**モデル ID:** `bfl/flux-kontext-max` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-max` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-max", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-max", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

スキーマ

+ +

入力

+ + + 出力のアスペクト比で、21:9 から 9:21 の間(例: 16:9)。入力画像が指定されている場合はその入力画像のアスペクト比がデフォルトになり、それ以外の場合は 1:1 になります。 + + + + 編集する画像。base64 でエンコードされた画像、または http(s) URL として指定します。オプションです。指定しない場合、モデルはプロンプトのみから生成します。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 追加の参照画像。base64 でエンコードされた画像、または http(s) URL(実験的なマルチリファレンス)。 + + + + 出力画像形式。 + + 指定可能な値: `jpeg`、`png`、`webp` + + + + input_image に適用する編集、または input_image が指定されていない場合に生成する画像を記述するテキストプロンプト。 + + + + プロンプトをアップサンプリングするかどうか。有効にすると、より創造的な生成のためにプロンプトが自動的に変更されます。 + + + + 入力と出力のモデレーションの許容値レベル。0(最も厳格)から 6(最も緩い)の間。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード。省略した場合はランダムなシードが使用されます。 + + + + webhook 署名検証用のオプションのシークレット。 + + + + webhook 通知を受け取る URL。 + + 形式: `uri` + + +`GET /v2/models/bfl/flux-kontext-max/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +

出力

+ + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成結果。ここでは nullable ではありません。このコンポーネントの `required` エントリは `200` が結果を伴うことを約束するものであり、nullable な `result` はそれをキーの存在チェックにまで後退させてしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + 形式: `double` + + + + プロンプトのアップサンプリング後の、実際に生成が使用したプロンプト。 + + + + 生成済みアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付けられ、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかない URL が返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信用 URL を保持します(ビデオでは約 2 時間、画像では約 10 分)。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成が使用したシード。指定されたものでもプロバイダーが選択したものでも同じです。`int64` として宣言されています。BFL は 2^31 を超えるシード(例: 2784347701)を返すことがあり、フォーマットされていない `integer` は多くの SDK ジェネレーターで 32 ビットフィールドとして生成されるためです。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒となり、生成全体の幅が単一のデコード値に潰れてしまうためです。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +

+ +

入力

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

出力

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +URL は一時的なものです。画像を保持する必要がある場合は、速やかにダウンロードしてください。 +
+
+ + \ No newline at end of file diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx new file mode 100644 index 000000000..721c26dca --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx @@ -0,0 +1,242 @@ +--- +title: "Comfy Router で FLUX 2 Max を使う" +description: "Comfy Router 経由で bfl/flux-2-max を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "FLUX 2 Max" +translationSourceHash: 50eacc87 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx +translationBlockHashes: + "_intro": b78e1772 + "Quick start": d68c79a1 + "Schema": 8da5f7ce + "Examples": 07dfd8d0 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/bfl/flux-2-max.json から生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-2-max` のAPIリファレンス。Black Forest Labs から Comfy Router 経由で提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bfl/flux-2-max` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-2-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-max", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-max", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 画像の高さ。 + + 範囲: `256` から `2048` + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 画像から画像への生成に使用する Base64 エンコードされた画像。 + + + + 生成される画像の出力形式。 + + 指定可能な値: `jpeg`、`png` + + + + 生成する画像のテキスト説明。 + + + + 生成のためにプロンプトを自動的に変更します。 + + + + モデレーションの許容値レベル (Flux 2 Max のみ)。 + + 範囲: `0` から `5` + + + + 再現性のためのシード。 + + + + 画像の幅。 + + 範囲: `256` から `2048` + + +Router が `GET /v2/models/bfl/flux-2-max/openapi.json` で提供しているスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告する省略可能な生成の進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` を null 許容にすると、単なるキーの存在チェックにまで後退してしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成時間 (秒単位)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻。Unix エポックからの秒数で表されます。`start_time` と同じ理由で `double` です。 + + 形式: `double` + + + + プロンプトのアップサンプリング後、実際に生成で使用されたプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間の署名が付与され、23 時間のメモから再生されるため、後でのポーリングでは残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信用 URL を保持します。ビデオでは約 2 時間、画像では約 10 分です。いずれにしてもリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード。指定されたものでもプロバイダーが選択したものでもかまいません。BFL は 2^31 を超えるシード (例: 2784347701) を返すため `int64` として宣言されています。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されてしまいます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻。Unix エポックからの秒数で表されます。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒になるため、生成全体の期間が単一のデコード値に潰れてしまいます。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx new file mode 100644 index 000000000..cbc20e86a --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx @@ -0,0 +1,241 @@ +--- +title: "Comfy Router で FLUX 2 Pro を使用する" +description: "Comfy Router 経由で bfl/flux-2-pro を呼び出します: エンドポイント、リクエスト形状、そして Router が返すレスポンスについて説明します。" +sidebarTitle: "FLUX 2 Pro" +translationSourceHash: fb5fb051 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx +translationBlockHashes: + "_intro": 7b39815b + "Quick start": 6fde3990 + "Schema": 942b3b42 + "Examples": 07dfd8d0 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/bfl/flux-2-pro.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-2-pro` の API リファレンスです。Black Forest Labs から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP による同じ呼び出しです。 + +**モデル ID:** `bfl/flux-2-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-2-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-pro", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### Input + + + 画像の高さ。 + + 範囲: `256` から `2048` + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 画像から画像への生成用の Base64 エンコードされた画像。 + + + + 生成される画像の出力形式。 + + 指定可能な値: `jpeg`、`png` + + + + 生成する画像のテキスト説明。 + + + + 生成時にプロンプトを自動的に変更します。 + + + + モデレーションの許容レベル(Flux 2 Max のみ)。 + + 範囲: `0` から `5` + + + + 再現性のためのシード。 + + + + 画像の幅。 + + 範囲: `256` から `2048` + + +Router が `GET /v2/models/bfl/flux-2-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### Output + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告する任意の生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは `200` が結果を伴うことを約束するものであり、`result` を null 許容にすると単なるキーの存在チェックに成り下がってしまいます。 + + + + プロバイダーが報告する生成コスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻。Unix エポックからの秒数です。`double` である理由は `start_time` と同じです。 + + 形式: `double` + + + + 実際に生成で使用されたプロンプト(プロンプトのアップサンプリング後)。 + + + + 生成されたアセットへの署名付き URL。Router はアセットを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は Comfy がホストする最大 24 時間有効な URL になります。発行時に 24 時間分の署名が付与され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間程度の URL が返ることがあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオで約 2 時間、画像で約 10 分)。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード(指定されたものか、プロバイダーが選択したものかを問いません)。`int64` として宣言されています。BFL は 2^31 を超えるシード(例: 2784347701)を返すことがあり、フォーマットされていない `integer` は多くの SDK ジェネレーターで 32 ビットのフィールドとして生成されるためです。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻。Unix エポックからの秒数です。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒となり、生成全体の時間幅が単一のデコード値に潰れてしまうためです。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx new file mode 100644 index 000000000..2cca20017 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx @@ -0,0 +1,208 @@ +--- +title: "Comfy Router で FLUX 3 Video を使用する" +description: "Comfy Router 経由の HTTP で FLUX 3 から音声が同期されたビデオを生成するための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "FLUX 3 Video" +translationSourceHash: 1ab039ff +translationFrom: development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx +translationBlockHashes: + "_intro": 68d3f377 + "Quick start": df957ab3 + "Schema": f4f6cabb + "Examples": 8d347442 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +FLUX 3 Video の API リファレンス。FLUX 3 Video は Black Forest Labs のビデオ生成モデルで、テキストプロンプトから同期したオーディオ付きの短いクリップを生成します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `bfl/flux-3-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-3-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-3-video", + { + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": True, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-3-video", { + mode: "t2v", + prompt: "a single red maple leaf falling onto still water, slow motion", + duration: 5, + aspect_ratio: "16:9", + generate_audio: true, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-3-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"mode\": \"t2v\", \"prompt\": \"a single red maple leaf falling onto still water, slow motion\", \"duration\": 5, \"aspect_ratio\": \"16:9\", \"generate_audio\": true}" +``` + + +## スキーマ + +### 入力 + + + 出力アスペクト比: auto、21:9、2:1、16:9、4:3、1:1、3:4、または 9:16。auto を指定すると、BFL がプロンプトと参照素材から選択します。 + + + + ドラフトモード: 高速なプレビューを生成します。その結果には draft_cache のダウンロード URL が含まれます。そのバンドルを mode draft_enhance とともに送り返すと、同じ生成のフル品質版がレンダリングされます。 + + + + draft_enhance 専用。以前のドラフト生成で得られた暗号化されたドラフトキャッシュバンドルを、base64 エンコードされたダウンロード済みバンドル、またはまだ有効な http(s) URL として指定します。元の入力はバンドルに埋め込まれています。 + + + + ビデオの再生時間(秒、5 から 20 までの任意の整数秒)、またはコンテンツに合わせる場合は auto。 + + 範囲: `5` から `20` + + + + ビデオと同時に同期オーディオを生成します。 + + + + i2v 専用。ビデオのフレームとなる画像で、それぞれ http(s) URL または base64、合計 1 枚から 10 枚です。単一の画像、画像のリスト(1 枚ならビデオの開始、2 枚なら開始と終了、それ以上は均等に配置され、再生時間の指定が必要)、またはタイムスタンプ付きの [秒, 画像] ペアを時系列順に指定できます。例: [[0, "..."], [3.5, "..."] ]。ペアは 2 要素の配列で、最初が秒数、次が画像です。 + + + + 生成モード: t2v(テキストから動画へ)、i2v(画像からの継続)、v2v(ビデオからの継続)、または draft_enhance(以前のドラフトのフル品質レンダリング)。text-to-video のような省略しない別名も受け付けます。 + + + + ビデオを記述する自由形式のプロンプト。draft_enhance を除くすべてのモードで必須です。 + + + + ビデオの解像度クラス: hd、またはビデオアップサンプラーで仕上げられた高解像度の結果を得る fhd。デフォルトは t2v、i2v、v2v では hd、draft_enhance では fhd です。正確な寸法はアスペクト比によって異なります。 + + 指定可能な値: `hd`, `fhd` + + + + 入力および出力の有害性モデレーションの許容値で、0 が最も厳格です。性的コンテンツは要求された許容値にかかわらずレベル 3 に、ヘイトコンテンツはレベル 2 に制限されます。条件付けメディアを含むリクエストはレベル 2 に制限されます。 + + 範囲: `0` から `4` + + + + v2v 専用。継続するビデオで、http(s) URL または base64 MP4 です。生成されるクリップはその最終フレームから続きます。 + + + + エンドポイントのバージョン。latest は現在のリリースを提供し、日付付きの固定可能なリリースタグは公開され次第追加されます。 + + +この内容は、Router が `GET /v2/models/bfl/flux-3-video/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告する任意の生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成。2 つの URL リーフのうち、どちらか一方だけが設定されます。デフォルトモードでは `sample`、`draft: true` モードでは `draft_cache` です。 + + + + プロバイダーが報告するタスクコスト。これは BFL の数値であり、Comfy の課金ではありません。 + + 形式: `double` + + + + `draft: true` モードで `sample` の代わりに返される署名付き URL。`sample` と同じ方法で Comfy ストレージに再ホストされます。通常は最大 24 時間有効な Comfy ホストの URL で、再ホストを実行できなかった場合は BFL 自身のおおよそ 2 時間有効な配信 URL になります。 + + 形式: `uri` + + + + 生成された MP4 の署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でのポーリングでは残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかったリーフは、代わりに BFL 自身のおおよそ 2 時間有効な配信 URL を保持します。`draft: true` モードでは存在しません。 + + 形式: `uri` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。大文字と小文字を区別せずに比較してください。Router は BFL の表記をそのまま転送します。 + + +## 例 + +### 入力 + +```json +{ + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": true +} +``` + +### 出力 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.mp4" + } +} +``` + +`result.sample` は通常、Comfy がホストする署名付き URL で、作成から最大 24 時間有効です。リプレイでは古い URL が返されることがあり、再ホストできなかったアセットは有効期間の短いプロバイダー URL のままになります。リンクを保存せず、MP4 を速やかにダウンロードしてください。`draft: true` の場合は、`result.sample` を期待するのではなく `result.draft_cache` を参照してください。 + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx new file mode 100644 index 000000000..94e89d4b2 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx @@ -0,0 +1,235 @@ +--- +title: "Comfy Router で FLUX Pro 1.0 Canny を使う" +description: "Comfy Router 経由で bfl/flux-pro-1.0-canny を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "FLUX Pro 1.0 Canny" +translationSourceHash: 30621717 +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx +translationBlockHashes: + "_intro": ce5e56f7 + "Quick start": fa0ec32e + "Schema": ef7f0fbb + "Examples": ef614e15 +--- +{/* 生成済みファイル。router-schemas/bfl/flux-pro-1.0-canny.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-canny` の API リファレンスです。Black Forest Labs のモデルを Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `bfl/flux-pro-1.0-canny` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-canny", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-canny", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + Canny エッジ検出の高しきい値 + + 範囲: `0` から `500` + + + + Canny エッジ検出の低しきい値 + + 範囲: `0` から `500` + + + + 前処理済み画像が提供されていない場合に制御入力として使用する Base64 エンコード画像 + + + + 画像生成プロセスのガイダンス強度 + + 範囲: `1` から `100` + + + + 生成画像の出力形式。'jpeg' または 'png' を指定できます。 + + + + 制御前処理ステップをバイパスするオプションの前処理済み画像 + + + + 画像生成用のテキストプロンプト + + + + プロンプトに対してアップサンプリングを実行するかどうか + + + + 入力と出力のモデレーションの許容値レベル。0 から 6 の間で、0 が最も厳しく、6 が最も緩くなります。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード + + + + 画像生成プロセスのステップ数 + + 範囲: `15` から `50` + + + + webhook 署名検証用のオプションのシークレット + + + + webhook 通知を受信する URL + + +Router が `GET /v2/models/bfl/flux-pro-1.0-canny/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL タスク識別子。 + + + + BFL によって報告されるオプションの生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完了した生成。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を運ぶという約束であり、null 許容の `result` はそれをキーの存在チェックにまで縮小してしまいます。 + + + + プロバイダーが報告する生成コスト。これは BFL の数値であり、Comfy の請求ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成所要時間 (秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻 (Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + 形式: `double` + + + + プロンプトのアップサンプリング後に、生成が実際に実行したプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストし、このフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります (発行時に 24 時間分署名され、23 時間のメモから再生されるため、後でのポーリングでは残り 1 時間程度のものが返されることがあります)。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します (ビデオで約 2 時間、画像で約 10 分)。いずれにせよリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成が使用したシード (提供されたものか、プロバイダーが選択したものかに関わらず)。BFL は 2^31 を超えるシード (例: 2784347701) を返すため `int64` として宣言されています。整形されていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻 (Unix エポックからの秒数)。`float` ではなく `double` です。現代のエポック値付近での float32 の間隔は約 128 秒であり、生成全体のスパンを単一のデコード値に潰してしまいます。 + + 形式: `double` + + + + タスクステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx new file mode 100644 index 000000000..c21c189e0 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx @@ -0,0 +1,223 @@ +--- +title: "Comfy Router で FLUX Pro 1.0 Depth を使用する" +description: "Comfy Router 経由で bfl/flux-pro-1.0-depth を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "FLUX Pro 1.0 Depth" +translationSourceHash: b41edb6c +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx +translationBlockHashes: + "_intro": 82c5ca01 + "Quick start": af98681e + "Schema": a0d1f1e2 + "Examples": ef614e15 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-depth.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-depth` の API リファレンス。Black Forest Labs から Comfy Router を介して提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bfl/flux-pro-1.0-depth` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-depth", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-depth", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + control 入力として使用する Base64 エンコードされた画像 + + + + 画像生成プロセスのガイダンス強度 + + 範囲: `1` から `100` + + + + 生成画像の出力フォーマット。'jpeg' または 'png' を指定できます。 + + + + control の前処理ステップをバイパスする、オプションの前処理済み画像 + + + + 画像生成のためのテキストプロンプト + + + + プロンプトに対してアップサンプリングを実行するかどうか + + + + 入力および出力のモデレーションに対する許容値。0 から 6 の間で、0 が最も厳しく、6 が最も緩くなります。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード + + + + 画像生成プロセスのステップ数 + + 範囲: `15` から `50` + + + + webhook 署名検証用のオプションのシークレット + + + + webhook 通知を受け取る URL + + +Router が `GET /v2/models/bfl/flux-pro-1.0-depth/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + フォーマット: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` が null 許容であると、それがキーの存在チェックにまで後退してしまうからです。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の課金ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後の、生成が実際に実行したプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストし、このフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL となります。発行時に 24 時間の署名が付与され、23 時間のメモから再生成されるため、その後のポーリングでは残り 1 時間しかないものが返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオはおよそ 2 時間、画像はおよそ 10 分)。いずれの場合もリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 生成が使用したシード。指定されたものでもプロバイダーが選択したものでも同じです。BFL は 2^31 を超えるシード(例: 2784347701)を返すため、`int64` として宣言されています。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されてしまいます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近での float32 の間隔は約 128 秒であり、生成全体のスパンが単一のデコード値に潰れてしまうからです。 + + フォーマット: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 使用例 + +### 入力 + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx new file mode 100644 index 000000000..c1bec2969 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx @@ -0,0 +1,246 @@ +--- +title: "Comfy Router で FLUX Pro 1.0 Expand を使用する" +description: "Comfy Router 経由で bfl/flux-pro-1.0-expand を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "FLUX Pro 1.0 Expand" +translationSourceHash: 251b8f2d +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx +translationBlockHashes: + "_intro": 33c96788 + "Quick start": d6a11a7c + "Schema": dfc6f70d + "Examples": d27504bc +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-expand.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-expand` の API リファレンスです。Black Forest Labs から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP による同じ呼び出しです。 + +**モデル ID:** `bfl/flux-pro-1.0-expand` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-expand", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-expand", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "extend the plain white background upward", + top: 64, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"extend the plain white background upward\", \"top\": 64}" +``` + + +## Schema + +### 入力 + + + 画像の下部で展開するピクセル数 + + 範囲: `0` から `2048` + + + + 画像生成プロセスのガイダンス強度 + + 範囲: `1.5` から `100` + + + + 展開したい画像を表す Base64 エンコードされた文字列。 + + + + 画像の左側で展開するピクセル数 + + 範囲: `0` から `2048` + + + + 生成画像の出力フォーマット。'jpeg' または 'png' を指定できます。 + + + + 実行したい変更の説明。このテキストは展開プロセスをガイドし、展開された領域の特徴、スタイル、変更を指定できます。 + + + + プロンプトに対してアップサンプリングを実行するかどうか。有効にすると、より創造的な生成のためにプロンプトを自動的に変更します + + + + 画像の右側で展開するピクセル数 + + 範囲: `0` から `2048` + + + + 入力および出力のモデレーションに対する許容値。0 から 6 の間で、0 が最も厳しく、6 が最も緩くなります。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード + + + + 画像生成プロセスのステップ数 + + 範囲: `15` から `50` + + + + 画像の上部で展開するピクセル数 + + 範囲: `0` から `2048` + + + + webhook 署名検証用のオプションのシークレット + + + + webhook 通知を受け取る URL + + +Router が `GET /v2/models/bfl/flux-pro-1.0-expand/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + クレジット単位のプロバイダー報告コスト。タスクが Ready になると設定されます。 + + フォーマット: `float` + + + + BFL タスク識別子。 + + + + BFL によって報告されるオプションの生成進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成。ここでは nullable ではありません。このコンポーネントの `required` エントリは `200` が結果を伴うことを約束するものであり、`result` を nullable にするとキーの存在チェックにまで弱められてしまいます。 + + + + 生成のプロバイダー報告コスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`double` である理由は `start_time` と同じです。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後の、実際に生成が実行したプロンプト。 + + + + 生成されたアセットへの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付与され、23 時間のメモから再送されるため、後でポーリングすると残り 1 時間しかない URL が返されることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します。ビデオでは約 2 時間、画像では約 10 分です。いずれにせよリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 生成が使用したシード。提供されたものでもプロバイダーが選択したものでもかまいません。BFL は 2^31 を超えるシード(例: 2784347701)を返すため `int64` として宣言されています。フォーマットされていない `integer` は多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒になるため、生成全体のスパンが単一のデコード値に潰れてしまいます。 + + フォーマット: `double` + + + + タスクステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64 +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx new file mode 100644 index 000000000..8d647fabe --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx @@ -0,0 +1,347 @@ +--- +title: "Comfy Router で FLUX Pro 1.0 Fill を使う" +description: "Comfy Router 経由で bfl/flux-pro-1.0-fill を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "FLUX Pro 1.0 Fill" +translationSourceHash: 4d5d3842 +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx +translationBlockHashes: + "_intro": bc9030aa + "Quick start": 378cfefa + "Schema": 643ee647 + "Examples": f5994135 +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-fill.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-fill` の API リファレンスです。Black Forest Labs から Comfy Router によって提供されます。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/flux-pro-1.0-fill` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"plain white background\"}" +``` + + +## スキーマ + +### 入力 + + + 画像生成プロセスのガイダンス強度 + + 範囲: `1.5` から `100` + + + + 変更したい画像を表す Base64 エンコードされた文字列。必要に応じてアルファマスクを含めることができます。 + + + + 画像内で変更したい領域のマスクを表す Base64 エンコードされた文字列。マスクは画像と同じ寸法で、白黒である必要があります。黒い領域(0%)は変更なしを示し、白い領域(100%)は inpainting の対象領域を指定します。オリジナル画像にアルファマスクを指定する場合は省略できます。検証: エンドポイントは、マスクの寸法がオリジナル画像と一致することを検証します。 + + + + 生成画像の出力フォーマット。'jpeg' または 'png' を指定できます。 + + + + 加えたい変更の説明。このテキストは inpainting プロセスを導き、マスクされた領域の特徴、スタイル、または変更内容を指定できます。 + + + + プロンプトに対してアップサンプリングを実行するかどうか。有効にすると、より創造的な生成のためにプロンプトを自動的に変更します + + + + 入力および出力のモデレーションに対する許容レベル。0 から 6 の間で、0 が最も厳しく、6 が最も緩くなります。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード + + + + 画像生成プロセスのステップ数 + + 範囲: `15` から `50` + + + + webhook 署名検証用のオプションのシークレット + + + + webhook 通知を受け取る URL + + +Router が `GET /v2/models/bfl/flux-pro-1.0-fill/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + フォーマット: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成結果。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを保証するものであり、`result` を null 許容にすると、単なるキーの存在チェックにまで後退してしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後の、生成が実際に実行したプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付与され、23 時間のメモから再送されるため、後でのポーリングでは残り 1 時間しかない URL が返ることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオでは約 2 時間、画像では約 10 分)。いずれにせよリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 生成が使用したシード(指定されたものかプロバイダーが選択したものかを問いません)。`int64` として宣言されているのは、BFL が 2^31 を超えるシード(例: 2784347701)を返すためです。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒になるため、生成全体の範囲が単一のデコード値に潰れてしまいます。 + + フォーマット: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## スキーマ + +### 入力 + + + 画像生成プロセスにおけるガイダンス強度 + + 範囲: `1.5` から `100` + + + + 変更したい画像を表す Base64 エンコードされた文字列。必要に応じてアルファマスクを含めることができます。 + + + + 画像内で変更したい領域のマスクを表す Base64 エンコードされた文字列。マスクは画像と同じ寸法で、白黒である必要があります。黒い領域(0%)は変更なしを示し、白い領域(100%)は inpainting の対象領域を指定します。元の画像にアルファマスクを指定した場合は省略可能です。検証: エンドポイントはマスクの寸法が元の画像と一致することを確認します。 + + + + 生成された画像の出力フォーマット。'jpeg' または 'png' を指定できます。 + + + + 実行したい変更の説明。このテキストは inpainting プロセスを導き、マスク領域に対して特徴、スタイル、変更を指定できます。 + + + + プロンプトに対してアップサンプリングを実行するかどうか。有効にすると、より創造的な生成のためにプロンプトを自動的に変更します + + + + 入力および出力のモデレーションの許容値。0 から 6 の間で、0 が最も厳格、6 が最も緩い。 + + 範囲: `0` から `6` + + + + 再現性のためのオプションのシード + + + + 画像生成プロセスのステップ数 + + 範囲: `15` から `50` + + + + Webhook 署名検証用のオプションのシークレット + + + + Webhook 通知を受け取る URL + + +Router が `GET /v2/models/bfl/flux-pro-1.0-fill/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になった時点で設定されます。 + + フォーマット: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成。ここでは null 許容ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うという約束であり、`result` が null 許容だと単なるキーの存在チェックに矮小化されてしまいます。 + + + + プロバイダーが報告する生成コスト。これは BFL の数値であり、Comfy の課金額ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻。Unix エポックからの秒数。`start_time` と同じ理由で `double` です。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後の、生成が実際に実行したプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります(発行時に 24 時間分署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかない URL が返ることがあります)。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオは約 2 時間、画像は約 10 分)。いずれにせよリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 指定されたかプロバイダーが選択したかにかかわらず、生成で使用されたシード。BFL は 2^31 を超えるシード(例: 2784347701)を返すため `int64` として宣言されています。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻。Unix エポックからの秒数。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒あり、生成全体のスパンが単一のデコード値に潰れてしまうためです。 + + フォーマット: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + + +### Input + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background" +} +``` + +### Output + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` diff --git a/ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx b/ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx new file mode 100644 index 000000000..b90468184 --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx @@ -0,0 +1,208 @@ +--- +title: "FLUX Video Upscale を Comfy Router で使用する" +description: "Comfy Router 経由で HTTP 上で FLUX Video Upscale を使ってビデオをアップスケーリングするための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "FLUX Video Upscale" +translationSourceHash: 9eeb8b72 +translationFrom: development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx +translationBlockHashes: + "_intro": 121a04b9 + "Quick start": 041e7993 + "Schema": 4675f835 + "Examples": d1ffa3d6 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +FLUX Video Upscale の API リファレンス。FLUX Video Upscale は Black Forest Labs のビデオアップスケーラーです。ビデオを送信すると、より高解像度のバージョンが返されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `bfl/video-upscale-v1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bfl/video-upscale-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-upscale-v1", + { + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/video-upscale-v1", { + input_video: "https://your-host.example/clip.mp4", + upscale_factor: 2, + creativity: 1, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-upscale-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_video\": \"https://your-host.example/clip.mp4\", \"upscale_factor\": 2, \"creativity\": 1}" +``` + + +## スキーマ + +### 入力 + + + 0 はソースを正確に保持してシャープにします。1 は創造的なディテール強化を許可し、人物の顔や製品を厳密には保持しません。 + + 範囲: `0` から `1` + + + + アップスケールするビデオ。HTTP(S) URL または base64 エンコードされた MP4 のいずれかです。ソース映像は最大 20 秒、50MB までです。 + + + + クリップの内容を説明する省略可能な項目で、強化されるディテールを誘導します。ニュートラルなアップスケールにしたい場合は空のままにします。 + + + + プロンプトと出力フレームのモデレーションに対する許容値で、0 が最も厳格です。 + + 範囲: `0` から `4` + + + + ソース解像度に対する出力のスケール。出力はソースのアスペクト比を保持し、1 フレームあたり約 14.4 メガピクセルに制限されるため、非常に大きなソースでは要求した係数より小さくスケールされます。 + + 範囲: `1.5` から `3` + + フォーマット: `float` + + + + webhook 署名検証用の省略可能なシークレット。 + + + + webhook 通知を受け取る URL。 + + フォーマット: `uri` + + +プロバイダーにリクエストが到達する前に呼び出しを検証する対象となるドキュメントと同じ、Router が `GET /v2/models/bfl/video-upscale-v1/openapi.json` で提供するスキーマから生成されています。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコストで、タスクが Ready になると設定されます。 + + フォーマット: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告する省略可能な生成の進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成結果。ここでは nullable ではありません。このコンポーネントの `required` エントリは `200` が result を伴うという約束であり、`result` が nullable だとキーの存在確認だけに矮小化されてしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後の、生成が実際に実行したプロンプト。 + + + + 生成されたアセットの署名付き URL。Router はアセットを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付与され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返ることがあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します。ビデオでは約 2 時間、画像では約 10 分です。いずれにしてもリンクは失効するため、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 生成が使用したシード。指定されたものでもプロバイダーが選んだものでも同じです。`int64` として宣言されているのは、BFL が 2^31 を超えるシード(例: 2784347701)を返すためです。フォーマットされていない `integer` は、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒になるため、生成全体の範囲が 1 つのデコード値に潰れてしまいます。 + + フォーマット: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## Examples {#examples} + +### 入力 + +```json +{ + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1 +} +``` + +### 出力 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../upscaled.mp4" + } +} +``` + +`result.sample` は通常、作成時点から最大24時間有効な Comfy がホストする署名付き URL です。リプレイでは古い URL が返されることがあり、再ホストできなかったアセットは有効期限の短いプロバイダーの URL のままとなります。リンクを保存するのではなく、MP4 を速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx b/ja/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx new file mode 100644 index 000000000..f54063e3b --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx @@ -0,0 +1,187 @@ +--- +title: "Comfy Router で Video Edit V1 を使用する" +description: "Comfy Router 経由で bfl/video-edit-v1 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Video Edit V1" +translationSourceHash: 708e47c9 +translationFrom: development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx +translationBlockHashes: + "_intro": e7443ea9 + "Quick start": 5747cb6b + "Schema": e992b26e + "Examples": 9b07c268 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/video-edit-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bfl/video-edit-v1` のAPIリファレンス。Black Forest Labs から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDKs (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**Model ID:** `bfl/video-edit-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/video-edit-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-edit-v1", + { + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/video-edit-v1", { + prompt: "Remove the orange bucket.", + video: "https://example.com/clip.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-edit-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"Remove the orange bucket.\", \"video\": \"https://example.com/clip.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + 編集指示。変更するオブジェクト、設定、スタイル、画面上のテキストやセリフを指定します。指定されていないものはすべて保持されます。 + + + + 入力および出力のモデレーションに対する許容値で、0 が最も厳格です。 + + 範囲: `0` から `4` + + + + 編集するビデオ。HTTP(S) URL または base64 エンコードされた MP4 のいずれかです。ソース映像は最大 15 秒、50 MiB までで、各辺が少なくとも 160 ピクセル必要です。720p を超えるソースは 720p にダウンスケールされます。 + + +Router が `GET /v2/models/bfl/video-edit-v1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + フォーマット: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告するオプションの生成進捗。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + 完了した生成。ここでは null 許容ではありません。このコンポーネントの `required` エントリは `200` が結果を伴うことを約束するものであり、`result` が null 許容だとキーの存在チェックへと後退してしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の請求額ではありません。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + フォーマット: `double` + + + + プロバイダーが報告する生成の完了時刻。Unix エポックからの秒数です。`start_time` と同じ理由で `double` です。 + + フォーマット: `double` + + + + プロンプトのアップサンプリング後、生成が実際に実行されたプロンプト。 + + + + 生成済みアセットの署名付き URL。Router はアセットを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy ホストの URL になります。発行時に 24 時間分の署名が付き、23 時間のメモから再取得されるため、後でポーリングすると残り 1 時間しかないものが返ることもあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信 URL を保持します(ビデオでおよそ 2 時間、画像でおよそ 10 分)。いずれの場合もリンクは失効するので、URL を保存するのではなくアセットをダウンロードしてください。 + + フォーマット: `uri` + + + + 生成が使用したシード。指定されたものでもプロバイダーが選んだものでも同じです。BFL は 2^31 を超えるシード(例: 2784347701)を返すため `int64` として宣言されています。フォーマットされていない `integer` では、多くの SDK ジェネレーターがこれを 32 ビットフィールドとして生成してしまいます。 + + フォーマット: `int64` + + + + プロバイダーが報告する生成の開始時刻。Unix エポックからの秒数です。`float` ではなく `double` です。現在のエポック値付近における float32 の間隔は約 128 秒で、これでは生成全体の幅が単一のデコード値に潰れてしまいます。 + + フォーマット: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4" +} +``` + +### 出力 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx b/ja/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx new file mode 100644 index 000000000..c720faa0e --- /dev/null +++ b/ja/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx @@ -0,0 +1,211 @@ +--- +title: "Comfy Router で VTO V1 を使用する" +description: "Comfy Router 経由で bfl/vto-v1 を呼び出す: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "VTO V1" +translationSourceHash: 39d9d687 +translationFrom: development/comfy-router/models/black-forest-labs/vto-v1/code.mdx +translationBlockHashes: + "_intro": 5449e6da + "Schema": fcb4652a +--- + +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/bfl/vto-v1.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Black Forest Labs から提供する `bfl/vto-v1` の API リファレンス。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/vto-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/vto-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/vto-v1", + { + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/vto-v1", { + garment: "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBAUEBAYFBQUGBgYHCQ4JCQgICRINDQoOFRIWFhUSFBQXGiEcFxgfGRQUHScdHyIjJSUlFhwpLCgkKyEkJST/2wBDAQYGBgkICREJCREkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCT/wAARCAEgAYADASIAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAEGBAUHAwgC/8QAXxAAAQIEBAMCBgsLBgoIBwEAAQIDAAQFEQYHCCESMUETURQiYXGR0RUjMkJygaGisbLBFiQzQ1JigpKjs+EXGCU0VcImKDVTY2Rlc3WDRVR0k7TD0uI2RmaElKTw8f/EABgBAQEBAQEAAAAAAAAAAAAAAAABAgME/8QAKREBAQABAwQBBQADAAMAAAAAAAECETFBITJRcQMSIkJhgRORsTNS0f/aAAwDAQACEQMRAD8A+qekRE9IiAQhCIEIQihCEIgfHERMReKG8N4XheAQ3hE3gEIQgEIQgJtC0ReF4CbRESYiAQhcd8Rcd4gJhEXHeImAQhEwEWhE3iIBCEIgQhCAQhCARFom8ReKEIQgG8N4XheARMIXgIhvAmJgEIQiAOUIdIiKF4XhCAQhCAXheEIBeEIQCEIQCEIQC8TERNoBCEIBCEV+uY+wzh2YTKT9YlUzy1BDck2rtJhxR9ylLSbqJPQWhJrsLBeODYjxY5mBmIrDycV1bDtOkph6UbFOnESrjzraLqcWoglQ4rpSnltfmdrbI5nu1nNmWwomVfkGJeTedebeKe0ceskpSeEkWSkk2udz5I+Tc3qEhrNKtKmJqVYaRUnkr7Z3hJSXCq4FiTsoR2xw03Z1fUjOVFd4QZLNjHIBFwXHWnhb40x7t5a45YUkt5uYk8U7BynS67+e43j44DqJIXanKmw2DYLQFBPpBEZcm9V5qXdnZWexG8y0oJW6yHlpQTcgXB25GOl+OS7pK+vF5Z4vmiUzebOLFJB3MvKsMfKExgzeUzwQVTuZOPnwnxrKqqWQSBfoB1j5GmahNtfh6pXAVEm73apJ/WMa18NTI41zE06AFKJUQTbrzMJhPJq+6MA1NVJrpwwqvzVdYelVzrEzOTaJh9socShbZWnmmy0KF9x43MWt0UGPjbSvLeA5lAttONh2nvqPHw7psgg7E7cucdgpGfVIw5iGv4exS++huQqrrEtOpbLgDRUSlLlt/F3AIB2tflHPP47b9qy+XaDCMKj1um4gkG6hSZ6XnpR33LzCwtJ8lx18nOM2OOjRCEIBEXiYi0AvCEIBCEIBCEIBCEIBCEIBCEIBEiIgICekRE9IiAQhCAQhCAQhCAQhCAQhC0AtEwhAIRUseZm0DL5lAqbrrk482pxiUZTdx0J5m52A859MVrDVbxtmMlFSnEHCuHnfGYl2PGnpxJ5EuKHtaD3hIUelucbnx2zXhNeHUeNNyniFxzF4pOZObmHctJIKqD3hNQdTxS9PYUO1c8p/IT+cfivHOc1s9JLBLbuGsHhmcrY9rccT7Y3KK/OJJLjvkJIHvj0ji+EcJ/drjyWlMY1abamqhMpQ9xguTTy1C4BvsjbqeQtZMdcPh5y2ZuXhcG8yM2c6Kq7TcPvKpkn+NEmS01LoPV173R8wNz0THTaHgXBOQ1DTiGrvGerRup2fdHE/MLI3Sygnxb8r87XKlRps4cYz2SkjSMNYGkaXTpZ+WdeLi2S44lSVAX3NlKN91KBMZWodhVVybp9ZSltT/bSUw64U+MsLQRz7rrBtyje+knSVHOaZmCZrOyiYzmpL2NlKjNcHDx8aQ0sFkK4rWVve5G10nuj2zpmZPBubdbqM/Llxh5piaQUtBakqUlIBF/zkEGNDiekuTWTeC60luzrLs7JLWkWt7cpxB+VcWvO9pjF2EMFY4cbLjNQk0yU8AbHiHjWv0PEl0R0s1vT9z/4kq3VTUXltizDL1KqdGrMxJz8vwOtCWbANx0PHsQdwehAMcPxHUcGU2nyzeDxjyR4ZpK3yuoI4ezseIpQg+7uE7nuMdcy7wHkzMYdSKtMyLU5KOradTM1dTarXuklPGLbEdOkb+ao+niWaMs49hsX24vDnFEfphW3pjjphtpWta4RhecwFiKkrVjmo47mZuXmXBLsNPIWhLRCbeMse7NrEi3IR2GmZt5IVGVaoU7RhKMS8umVbE9SUuENpTwgcaAo3t1PWNyjLbIiUQiZXUaWWli6QquEpI8njxqncmslcRTcxN0isoZ7NBUsU6rJc4QBueBfEbxZMP2a1qMoZGg0bMfElVolWmqnQKTSEFqcmkgLKFBKuE+Kn3KW1AEgGKFlRQqfmljups4ge4E1VM1NIT2vAsuqIKSjfdSe0Krb34eVosWFy1Scl8xKpK8aG52Z9j5ZSj4xQAlsC/fZw/LGwyUwiyjLPGWIZogXp77Eur3yClsrUsHoeIgAjfYxu9JdPSbtDVcOZg6eK6ufpU0tylOrAE0hBVLTHcl5s+5X/APyVR3HK7PejZhJRT5kJpddt/VHFXQ+epaV774J8YeXnFd044tqeOKLXaZiOeXV5eX7BKEziQ54iwsKQokeMPFHO8cUrdAksS5kzWHsE092RqDc3MNtS6JjiZJZKjxoWbKb2TexJAPIiJljMrcct5yTp1j7AqmMJXDp7SusuSMmTYT4Bcl0/DUBdvzqAT5Y3EnPylRlkTUlMsTLC90usrC0K8xG0cGy/zirNDnhg3NSTdlJopDbdRmUDhWk7BL/Sx3Ac5H33fGPmHlJX8Jvu4qysnZyQH4WZpUo4QCOfE0nkodS2Qfze6OP+KbVrV9EQjhGUepGXxA4zQ8Y9lJVNSg21PJHAy+rlZY/Fr+afJyjuDU7KvzD0s1MNLfY4S60lYKm+IXTxDmLjlfnHPLC43SrLq97RETCMqiELQgEIQgEIQgEIQgEIQgEIQgJ6RET0iIBCEIBCEIBCEIBCETALQhAmAXsI5nm9nbSstpVUlLdnP11xF25UHxWQeS3SOQ7k8z5BvGnzrz4l8EodoOH3GpivKFnHNlNyIPVXQr7k9OZ7jU8oskF1ZwY0x+FvdqozTMnNm5dJ37Z+/TqEnznbaO2HxyT6s9mbeI1+VeX+I8e4jTmVj6YSaekKfYZnk7TAAJSspJCUNJ2I6Gw2tuent1tGa9MmW8N4gek6S28qWnJuWbKJl02B4Wiq3AggjxwLnkmw3PKM1cwqrm5idGBcEds9TUngJYPCJ1Y5qUejKfLt1/Jjp+ReBJjL9uvUKcfbmVtzjEwHUJISsrYQSRfoFcQHmv5I6Z66a3/ST9ONaYwlzM5+XmJRnsRJTAaSpseKtK0eML9bX357mN1jot0rUvLTHIGoyDh/SS2DGJkSjwfOx5oCwAn0W8yj6onOIKXqJpkuk+M9N00/Kj1R02zvpneNjq4llOVbDbzaiPvaZQfLZaPXFqzMK0aaKY2o8anJOmoUs9BdBv8AJGm1YNkTWGiP83ND5zcWDH7fbaa6eHeYkacd+/ibjE7cPa81W6LRkYg0vqShF3JJ9+aR+g8ri+YpUYmB5T7tNOWIaLYLmaPMOTDCeoKbPC3nu4Pji2ZRPy0vkpLeEHgkXJ6Zam1hN0tsqK0qUruSLgk9I5vkxmXSMIt4spbEvM1ZDykBC2rIZWB2iOLiO9iCDyN4ty0+qfsk2a/COVcrmW/Rqm1V0Uwz0uuRmFGX7Xjm5fl74WKmSlXl4VR0RekmnmSdbexZPqWU7FuTQAD5io39IjhOB8yK9RsQuYeEy21S0znbqZbl0qIcaBCVJNwpJ2G6VD4+UdQns9n8c104bdl0S03IKcU1Ny61MtzOydihR4kEedXXlGf8lt0xukX6fLeSWkXs+EPYuHAlNh2dP8Y+e64o1QyklMrsR1iqrrLVXFFp6ptREt2ZYfc8SXQrcjiUpQVYckpPfHYMwcYT8rlsGqJJzU7NyUk3MzUyl8pS0psBSkcV7uL28ZI2te56H5nzGxliKkzDtAcm1uSlUZl56fYeAWXpk3JWVWve+221gNov+TLTXKp9M4dMxFKKw3psw9JLFnapNomF35kqK3d/iDcdHpVOFC021JsJ4XF0R19Z/OdbK/oWI5ZnVjGmYkw9g6jU9D0imTCmHGn08IDnA2hNlA2IsFb+m0dqx683JZOYwl2SC3JSxkkkcjwNNI+m8TLLWT2unWqbpGpoTQ8QThB8eeZbv5ENk/34pmnSnh/OWbnXFcSxLzrwJ58SlgE/OMdA0llxWEa6Tsj2RFvP2Kb/AGRRNNbpVms+km/3lNfXRGr+aeHjnpLv1jPlmSKzw3kJRIBtZKuEkfPVHYce46kMjk0aWYkJibpc666jwUP+NKoQEm7RV0ur3BNh0tHMMzR/jJSNhcqnKb9CIzdXswF1DDcsD4wl5ly3wlIA+iH06/TP0a71s85svsOYiwa7mbRlexTz0miaeQ63wCbQu1rpF+F43AvuDffvjyorUvjCUl8XZVTL1LxJRZZmTmaZNL4vDGUJslt0k2WSAeFfI8vFIFuqVKsYbw1RMO0LES5dErUmkSTSJhAUypSWh4q77Achc7XI5RxrGGHJjT7j2RxlQWnnsMza/B5yUCrlkK3LVzzG3EgnkU2J784XWaf6W9HZ8tc0qbmDKOMFtVOrkn4k7TH9nGVA2JF9ym/XmORtF3jj2KcFU7MmVksfYBqzcliBtIclp9k8KZmw/BvDor3tyNuSgRy3+WeaQxU69h/EEqaRiuQHDNSLg4e1t+Mb7x1tva/UWMccsOYsroULQhHNpEImItAIQhAIQhAIQhAIQhAT0iInpEQCEIQCEIQCJtCEAiQIcogmAk7RwTPPUCjDomMNYUmEuVPduankEFMp3pQeRc7zyT5+Wtz21BiU8Iwvg+au9u1N1Fk34ehbaI69CocuQ33HnkjkKmnJaxhjdhKX0jt5WnzFuGXA3Dr19uIcwk+55nfYd8MJjPqzZt16R45H5IrJRjbGzXCB98ysnNHc++7d7i9IB+EegjUZxZ0T2Pah9yODu3cprrgYUtgEuVJwnZKRz7O/Ie+5naGdOc83jyd+4/B5fepzrgZccZBLlRWTshI59nf9bnyjoeV2V9Gycw89ivFb8umrJZ4nn1niRJIP4tvvWeRI3J2G3Prbp92W/EZ/UeOBsMUfT1geZxBiRaHKzOAJeDZBUVHdEs0eveo8rgnkBGZkPjirY5rGKajVQUpW5LmXQkHs2UALHZpPW1wT1uq/WOUVapV7UXmMxJSKHJSkyt+zCxdMoxccTq+hWrYW77JGwJj6YwvR6DhZqXw5SChpUjLBZZvdfApX4RZ71KSd+tj3Rj5OmP3b1Z122fPOSjYTnjNKvsk1BXzj64/GYqvZHVFTEtpuliZpqFHy+Kr7RHlp9UutZx1N5o+1MSs24pXfxupH2xscRpaVqaY4QP8AKsmD5w2iO10ud9M7RuNVr4E1h1q24amV3+NAjdZvlQ090osnhT2NOvb8nhT/AAiuasnAioYd2uVS8yPnIix5j+36aaetXMSNNV8rcc524e15r9ZCt+FZIzsqCT7ZPtelN/70UzSkbYlrbCwFBdObUQd/cuf+6LxpoAcyvnmyNhPzA9LaIo2l7xMd1NI5GmLB+J1uLdszw0s3Rae5qTmaZUJVt2RnKq42pBFrdo0bEEcjdQ5RjTeV9KpWpFmguTM6xJTpCmXeJJWQuXNtyLe7SRyjc4vSGtSjJR7o1iSI85Dd46RmNhOQrmbFBnETTzU7KUx6YUGSUqQlDoShQUNweJ1XTYJNt+UzsmlvgmrVT9UpuB8STeB2ZRsKq9+BbahxTCQylTj7oHuVbKQeXFZJtsTHzhm0y5Vs0ky0u3clMu0kdBy5+mOh0jCUzUtTdTk5NxEu2A9wuLJXwDwdNwLm5sSYx80sOyuFs2ZeRYWt5REipx5fulqKhfzDyRjHH6rpWrdI2GemXL9IpVMfqbCE8c6tCUocBCx2d77eWOhy8q01pPU2hoJSaWparc1Httye87Q1XvIaw/QCrl4e4P2ZjLlXW/5q6l38X2GcN/0zFkn0439pb1rG0ovJOGa7Lpt4k+lW35zQ/wDTFA03tqTm3MXvtJTQP66Iuekt1C6diXgVcCal/qKisZHONy2eVQZRYoX7INpt5HL/AN2Ol3zZ8PDNd1TOoyWUnmJqmkfs49tV/E5jSjNC/wDk4pHkJeWPsEeebQtqJk1dRNU0+fdEbzVXJtIruF56/tjiH2Fi3vUuIUD6VGLjvj6LyvOcuV01mLhamO0yYtUKayVMS7lg3MhSU8Sb9FeKLHl0PO453lBin7uKbWMrMaF5xxLS25YTGzyUJ2U1c78bZAUm+4AI5CLZmPmrN5ZZh0IOpcmKJN0poTcsnmLLUO1QPywOnUbdxFQzzww8mo0/NvBMwFN8LT0xMyu/CR+DmPKCPEXfuF+ZjGGukxv8W76q2xM4104Yq7FweF0yYVcoNxL1Bse+SfeOAfGOtxHaJuQwxnrQJXEOH6gunVyRIMtPteLMyLo3DboHNP8A/qTzBx8GZgYVzzw6vDWI5OXbqhb4nZJRsHCB+FYVzBHOw8ZPlG8cfxRhPF2njFTdcoc24/SXl8DU0U3bdTe/YTCRtfuPXmkg7C910vTI29O/YBzGn36mcHY2l0U3FLCboUNmKk2PxrJ5E96R8XUDo0cfolfwhqEwyGHQuSq8lZ7gbc4Zqnu9HWV8ym/XkeSgDG/wli+rUWqM4QxwpHsk5dNOqyBwsVZI6fmPAc0HnzEcM8PDUroMIAwjk0gwiYi0AhCEAhCEAhCEBPSIiekRAIQhAICETAInlECPy882w0t11aW20JKlrWbBIHMknkICVKCElSiAALknpHzNnjn+7U1O4TwU84tp1XYTE6xcrmCduyZtvY8iobq5Dbc+ebudj+OJlzCOEFvmTeX2PbMg8dRWduzSOYQen5XWwjeZXZV0nLSRcxbiyYlU1JhHE4+4oFqnDlwoPvnDyKh12T3n04fHMfuy3Yt16R+MmcjJXCDKcX41DAqLKO3al3lDsqckC/GsnYuAfEnyncVLNnOKpZlVAYSwg3MqpTzoa9qSe2qS77C3MN33CevNW2w/OOMdYmztrSMMYVkZlFI4rolh4qpix/CvnklI5hJ2HW55dHw7hbCWnmgGtV2Zbna/MIKEqQLrWerbCTyT3rNr9bbCOm11y63iJ+ps/eWmWFDyYoTuK8WTMsKqlu7j6jxIk0n8W3+Us8iRueQ258wxVibFGf8Ai1ijUWVcZpjSipiWUbIaTyL75G17ejkLkm+5lqdjLUVXPDZxz2Nw9KuFKCAS0z3pQNu0dtzUeXk5Rcq3jXBuRFJcw7hiWana0d3uNV7Ktsp9Y69yBy/NG8NLL5y/4mvT9Ng4rDOnTA3YMlM5VpocQCtnJ54C3EfyW03+Id5O+gyFn63UJbG2Na2p1xc2hJEwsWStTaXFKSgfkpBSLchy740WEcp8TZr1YYpxnNzDEi+QsFY4XphHMJbT+Lb7j6AecdgxK9S0ZX4mkMMLlQxTqdNSaUS/4NlaWjdFxzIvv5ee94xnpJ9O9u6zy4vpNlEtYirk0qyVCQQFXN1ErcuSf1Y09Vm3JvVG202TwIr7KSR5Am/0RuNIckDUsTvKUVnweWTcnvWs/ZGDKtNuamVkWua+snzgH1R0/PL0nEWDVgjin8NgJvZiZ+siLPmAng02SKFDfwCnD5W4qWrCdQzVqCharWk31D9dPqiyZvTng+nOQLQuVS1MSB5+A/ZGJ24e15rN022ayxqC7j+vzB9DaI55pXnfCseVbgR4qaYo8XndRF203tuqyfqC3CQpc3OG3d7WkRSdJ7BYxhVgORpY/eohdszw88SntdT8sDuBWpQfMbjskivtc/amkhI7HDUulPfvMLPxRxOrqV/OmbStW3s5L2H6CI7PSz/jB1rb/wCW5ff/AJxifJtPSxz6jKRKarJ1pO3auPXHwpUKPyiK5qESljOKVd2upiSWfiWR9kWOX8XVi7sLFxW//wBnFY1Gsdpm9KHiI+9ZMfPVG8e6embs6BqvZS5hihlQvaorHpaV6o9Keyl3Sm4jp7DPj0OKiNVqkownRiSf8pH90uP1R3QnSo6q3/Q0zb/vF2jE/wDHj7a5rUaRmA1TsTWPOalj8xcU3JW8rqEm2FHxe1qQF/IVRdNI/EabiZR2vNSw+YqKfk8C9qEfcI2MxUj9eNXfNJtGdnY+zKZ70yZ2PZinurHfZz1CNzq9lnktYZnW1AhKptopPeQhQPyRU9SzK5bN2TmWrn7zlFKt5HFfYI6HquKFYRoriuEWqRTci9rtL2+SLjeuBeVrxjgKnZsZf01l9bbFREk1Myc1a5ZWpsc+pQrkR5LjcRyDJrHL+XWI53L3GzYlpF11TQ8JsW5V5XMG+xacB58rkHkoxnYgxtVsKYVywxjS1grTIOyEyyongmEI4AW1fqEg8wReLVirCGG9QmFWcR4efblq2yjsgt3YpI3Mu+B59ldL3FwbRmTSaZbG+yoZv5ETuGXjirAgf8FYV27kpLqPbSZG/aMkblA52G6elxysOVWddMzEkDg/HTUqqfmUdilx5I7Cog+9UOSXPkJ3FjtFYy6zhr2VtTOEMdSs4ZGWUGwXBxPyI6W/zjXdbp7kkbRZMz8iqZjeS+67ADsqX5lPbqlmVAMTl9+Js8kL8nInuMW+M/5SeYpGZOUdfygq6cXYOmps0yXX2iXWzd6Q70uflN9OI7W2UOp6dl5mlhvO2iKw1iSWYaq/CFLluIpS+U7h5hXNKxzsDxJ5i4ioZYZ8TNGd+5XMLtuzaJl0z0wg9qwRt2cwk7kdOLmOtxvH7zV093ti3Lc9m8kiZ8BlF2CuocllA7Hrwg2PvbcjMpxlv5J+nbKHU6jh19qi4gmlTjCyG5GrrABe7mn7bJd7le5c8itjbbx89ZP57S2MWhhHHAZRVVgy6Hn0BLc90LbiTsl3ybBR5WO0dikpp/DqhLTr7kxTSrhZmXTdct0CHSeaegWfIFb+MeGeFjcqxwgIRzUMREwIgIhCEAhCEBPSIiekRAIQhABExAiYCRGpxXhuSxfh+dodQ7US0432ay0spUnqCD5CAbHY9do2whCUcCwvgLDuSNMqNfr8+09U2OJC5xbdgw2SQlLKeZWsW3G5N0iwBjmFTxPibPrELNEo8s6xLMqK5SUUolptHIuvqHvuvFyF+EcwT9QZj5cUbMqgLpVURwOoPaSs0gePLOW2UO8b2I6gnzxQUz+D9OmDTKS7XhNbf2U0qyX5x0D3aj71oX26AGwuq8enD5NevLFn+nvMzmHdN+Afcom6m+LJvZLtRmLcz1S2m/6I71HfjGB6BibPrGT9Zr8y+KYyseFzKfFAHMS7I5A2/VG5uSL7fC+CcSZ/15zEGIHnJenIXwOTYTZJSD+AYSdtvyuQ63MdCzFzPw9k9QUYQwdLyxqrLfZoaQOJuRvzW4ffOHnY7k7q22O+uN0nXKpv6Y2cWbktltRm8HYRQzK1PsQ2AyBw05ojY/7wjcA8r8R6XreQ2TxqHBjfF6eKUF35NiaOzx5l93i951F+fujta+JktkvNY0nxjHGCXXpBxwvtNTBJXUHCb8a7/i7/AK3wee8zQx9P5lYiZy0wKtK5Z1fZTs237hwJ90kEfikAeMR7oiw25tvsx/tP3XnjPNnE+aNbmMJZbScw7IoHDMTzaw2Xk3sVFZt2bZOw34lfJFhyslO0ybxVhxwMmakHKjIv9kviSpZbvcHqN7X8kc2r1fq2XeJJnAuXE2hclS5LtqxOJlkOremglSluOLseBLaQLAGySLc4tWm6opdw5i+WWpxTKeB3icPjLK2nOJR8p4b+iJZLh9uxz1YekMhM5iVFgCqXlVfOXGjlkKa1QXubGvufKFeuNnpCbV7N4gWo2CpJiw/TO8eM4yJfUulR2vXGz+skeuN6ffl6TiMvVnT/AAmuYfWpRAEi+Pnj1xc81mEHT7TAU3AYpp9ARFf1VItUMOqNhdiYTv8ACR64sGZjyXdN8jM3HCiSpyz6WxGJ24X9rzWRp9ATlJOhIt98zf1BFC0rqT92VUSCN6X/AOaiLhpvmVzOUtRXvbw2cAv/ALtEUDScw6nG9TWpW3sUdv8AmtxbemZ4MWpDWpdlwbKTWpM386W/XHYaRZWoHEBubt4flUnu3dJji2M2nntTKAlXi+zUl9DUdkooW9nxjJoEWNHkfGI5G5jPyds9GKh09KX9WMwu5JS658VpQCK7qMuc3ZNKeZlpMD/vFRvsP9pMarJ5ZKQG3H02A58MsE3PlPOK9n2y7NZ4STfHZARIIHxr/jGse6ei7OgaruzVhSipUCVmpK4d+XtSr/ZH7kwG9KSr/wBjOj0uKjD1YcPsTh0KCyPDHz4qgD+DHeN4zHUhOlThSqwNHG6h3udbX74xOzH2vNYOkhA9g8RL33nmRz7m/wCMUXIUmYzzeeKlHafXz71H1x0PSewWMJ1x0qbUFVEboVfk0n1xQdNrSX82Zl9DyXCmTm3CEpVYXWkcyB3xq75p4Zufcq1PZshCw4VJl5FCbLsBdauY63vFx1YKQcKURgjdVSUoEdLNK9cVPNZ0TeerkoniUvipjdtrD21s+f35je6tpptMjhyVLiQsvTDxTfewSlINvOYuPdgXarLl/hGhYlyIochiRtpUsplbqX3VBCpdS3F8KkLPuVeNt38t72jmlWwZi7T5VkYnoE4KrRXCETCuApStBOyXki4F/euJ2B7r2PQc6CxhXJ6k4flCEMurlZNJVyKUI49/OUC/njmWD8W4typpUjOV2S9lsC15S2kyjqwstE34ggH3F7K8RXiqseR3hhrZbxbsXw6pNyWDNSGEhMy6zJ1aVTwhZAMxIrPvVj37ZPxHmLGOPYexbjDTxit2i1iWW/THFcbspxXafQTbtmFHYH6eSgDuNlX8OP4Gel8zMq6guYoCye1Qm6zJ3PjNPIO5b8+6drnkqOnUusYQ1GYQXTKkymVqsunjWyFDtpRzl2rSj7pB/gocjDtnnH/hv7eWN8B4Xz3w23iXDc2w3VCizM4BbjI/EzCeYI5XO6fKI5Jl7mniXJutrwriWRm3qa27wOyKt3ZUk+7ZPIpPPh9yrmCDGKj7t9OmM+zSnwiVmlWCAD4NU2wen5Kxf4ST3g79un6fg3ULhczUo8mUrEqjsg8AkzEgs7lC7e7bJvyNjvwkG8O2aXrDf2r+Z2U9EzTpRxjgmZlPZd5JPatqAbnbc0r/ACHenEd+h7xgZGZs1+emprBOLKbPTMzT21IM243dbSU7dlM37+QVzPI35xoMpcMZk4FzMew7Lyo8GAS7UEOqPgrzFyEuoP5RsQkje4IVsCI+iPuRW9MOzDrzLTjxBcLTW6rCwudr2G28c/ky+mfTusmvVm4anmHpQSjSFNlgWCSoqATfaxO+3K3kjddIwqZTGaWyW2rqKjdS1c1GM3pHnbRCEIgiEIRQhCEBPSIiekRAIQhAIAwhATExAMIgmKfmJltRswJOWFRlQ5MSbgdaUlfApab3U0VDcJUNj3GxHKLhC0alsusHzrm5nqzhCQGEMFyiqfOMtBl9xTPZ+x4t+DQk7cdj7rcC9wTe41uT2R66+GsXY4ZWiVPt7Uo+bGb69q/fcJ62O6uZ259vxFlhhfE2JKfiSpUxD9QkBZBPuHbbp7RPv+E7pvyJ68o5TiSu4ozprk1h+jJmsP4XprhTUpyaBaVxJPjdpe24ts3f85W1o9GGWs0x6eaxZ16mYOZtVx/OHAuWzLr7To7OZnmPEC0cilCuSGuhXtfkNudGrtZlMl6TNYXwvNtzeKptPZVSrMjaWHSXY63vzPO/lsE7rEmZNPwrSzhfKiXUkzDvZTFWQjimJt07WbFr3O9lWtz4QLXj0pGXdMyowrMY3xspt2vcCjTpBR4y1MFJKBb371977hG55i8demOPXb/vtnet1kdJS8rkTiiYfYQ2p1ypCZdUnxnQhvhFzzNrH47x56VpGXqGHsUIePtr0y2hSe5sslKfpXH4y4W6xpUrLbh4XWpWoBSifdKuSTfruTGo0vOuyWGsT1JMw5YTbfEAfettFX94xymv05RrmJ01LFFzFqlHeAQ4uTdY4fz2nE3Ho4o1eYNURTNSzLQbIUqp09YI68Qa/jGt0z0+o4nzHrGIrq7ZmXcmEqW4UgLfcsT5duL0x71mQdq2p9lU6vtSisyzW3LhbSi30GOn1a52zwmnTRbdXlRZbThgN+O8VTQ27va4ycc9t/NZpCHFHjck6ck+YrSfVGn1ddkxO4caQkcQlplXpUj1Rbc0WRL6bqS2BYJlaYPkRGJtjFu9eum5sNZOzwH/AFucPzExTNKQvi6rq7qYB+1T6ou2nLfKCoD/AFubH7NMUfSirhxfWU99MSf2qfXFu2aeGDiAl7U+0m+3s5LD0JR6o7FhVsKz2xy5fdNOp6Of5pMccqe+qJu/Sus/UTHZcFHtM6MwlWHiNU9F/wDlGJ8m38XFznCQUvVPVl7WD03+5AjS54KUc9pJKRvxU8X/AExG3wE8XtT9f8Ungen9/MAI0OcIfntREmylPChMzTW7+W6CfpjU7v4l2XHVwVexeGUpJH33MHn+Yn1xspu7OlJPFufYVv5XB640+ru6pXC6Be/bTStvM2I3mJGzLaWG0nn7DSg9K2/XGJ24+15rx0nuBzBtaTbb2S+llEUbTHwJzPqIHWQmAPidRF50pDhwJWV/7SV8jKIoWlxHHmZPrPSnPn0utxq/mnhn4qPBqg7OaVdpyfpykk8hs2QD8YEYurqWCcUUGdClq7WnuoIJ28Ry+360euYSkr1IbHdM7Sx85mM/WCyhKsMuAAHgnEfF7WYuPdj6LtW21MPleX2Fljk5NIV/+ufXFIq1YrNJwPhCXqco9O4HmaaHKiEMlawS6pKh2lj2ZR4riLW8YdRtFw1DXfyiwhMf6aWPplTHpxz8lkngOt09sPmTT2MzKObtTcu6FpW04OqTwjzGxiTLTCe101rnnHinIbELczIzCKlQ6kgLadIvK1WXIuAockr4T5xe4ukxsK1hyVmZRGZWVExMyvgq+OepbRvMUxw8ylI900d7jcW5bXA6xhHCNIk8B07B2IZlVUolTF6cZxIQ5LEjjTL8YJ8dIJKFi17EW2API8V4MxNkLXkVujTLz0o6soYngm6OC9+xfRyKj5djzTY8tY5/V7/6zZo6rg7HOHc7sPO4VxM0w1Wg0S400rh4yBYuy6uihfcDlvzTHJv5O8b5U5pUeSoMy485UHuCSmWEApmGAR2gdbvYBKTdQOw2IN7RrJyTpuK6rS8Q4LcVSKxMTzbUzRpY+2yj5uozEtyBZsFKNyOC1jsQI+uKJh5uVmBVp4NzVZXLpl1zqmwlfZA34Bb3KSfGIHUxzzymHSc8NSa7thIyRlwp15YdmHLcawLDyJSOiR3fHzjLhCPM2CBhEEwExF4QgEIQgEIQgJ6RET0iIBCEIBCEIAImIiYBExEICSLxynPzCGIq7hThwt2i7zAcnaewAkzoISkKJ2uU2FwdiNz7kR1aIIvGscvpusSzV894BomHspGFzk+6itYrcRZQZN2ZO/vEq5X718zyFhzo+ZtZquL53wmZK5h5KVBphpJ4WkAXUEp7rC5PPbeOz4syimp6u+EURyWl5SaJW8lwkBhXUpA5g93Q+SPXEmDaRl7lliedZHbzxpb6FzjoHGeJBTwpHvU3PIfHeNfXcstaaaRzTCynJ3S7XkIc4ezTP2t1HElX0ExmaXaQmby0xI5ue2nHm7dCfB0gfWjTYPmyzphxQlPukrnWx+klsf3oumk4IRgKqSo9yipqFvhNI9Ud8+kvtmcKRpImDLYorcorkqmtrH6LgB+tH4YV2upcg8xXlfIDGPpnfS1mtPyqPcmRmkE+RLiPVGRPgymqdIRsFVlon9JpPrjf5ZemeI2uq5KF1yhBSQSJF4i45eOIt2cCP8X+nNg29qpw+RMUnVo+5L17D6gjiSqQfHxhYi55yTKE5BUt0+5UinH0pTGJtgt5e+ndrsco5/yzc2fmJih6VkWxpVfLS/8AzURftP7iVZOzjiSLF+cPzRFF0rWOL6sq42pg/eIi3bM8NVXmVs6o2nE+5NcliR50ojs2BnQnNbMl42IQ5IIsP9yecckrakq1MtAnf2bl7fElEddy8CXc08ylFI/rEkg7c7MmM/J2/wAMd3PMt222dSuJU3bcUpU8pK0G43UhX22jSZkX/nIy97cPsjTvoajc5ZtoRqQxEQkBXaVDf/mJjQ5pvFjUbLgC5XP036G43j0z/iXZZtWqHFqwyUoUpCBNKUR0/B9O7yxYMdDh0xsJvsaXTx85qNBqzeSj7l7LKHAqasQbEfg94sGPnFPaaZd0Hc06nk3AI90305RiduHtrmvHS+kN5b1ZQ5+yDp/YoigaV0j+UGoL33pbn71uOhaYPbsuaolVj/SLo8VISPwSO6OdaYZhYzInGeBpsKprwPZthJNnG+sW/mnhkY8Sr+ceLgpDlTpiUX99bsibeQW5xs9YBunDA8k4f3caXHJCNTDHcKpIfVaja6vF3mcMt9zE0r5zYjWM+7H0cVsc+98kMInr2kl/4VUWzBCWl5CUBt5IKVyrKRf8ovWHymKjn1f+Q/CH+8kr/wD4qotGHFmX0/YeWOaWJFXpmkeuMZdk9rN1pk8HM13Csm2tSUuNJKAh5HaMupSslIWg93RQspPQxrDU5ij0+eomMZN+rU7sSmy2+3ecRyCFWHtqSbAOABQ24wLccXzDieCjy6e7i+sYyKhTZepM9m+i9t0qGykHvBjzatuPZZZdUfBE45OFhKZycdPaqK+08GZKrpYSs7lKdrq5rIudgBHaor8thFtt5K3ppTiEm/AE2v5zeLDE1t60IiEIBEWiYgwCEIQCEIQCEIQE9IiJ6REAhCEAhCEAgIQgJhCEAiYiJEBBii55gHKXE9+QkifQpMXqOf5+OhrKDE6j1lQn0uJH2xrHuhXGcH0xatMdfmA4LOCbdKU9D2qEkehHyxZtKTpGHq+2eSag2r0tfwjBykllVDTRiNkgkFupBPxAK+kRlaUDxYfxEevh7X7mPTb9uXtz5ijaZwBmzMqtuuUnPrpjOrav8adq39syw/ZojB02E/ysL8spN/SmMysEnVI3/wAbl/qIjen3X0nDZauFcNVw9te8nMfXTFnzgbLmnWkJ69jTPqpirauD/TGHR/qcx9dMW/OJXZafqQP9HTR81Mc5ti1d6/en9tTeSc8nr2s99WKHpKbcbxZWipXEPYxH71MdByIUf5E51R/Lnz82KNpO3xNWz3U1v94IXbM8NbPP9rqgCSlQKa80N+tkpjs2Wr3aZn5mbDxZ2TT+yMcamrfzo0KUkkezqR8fAI7Flck/yi5mOHh3qsukWHQNH1w+Tt/hi5tljN9rqUxJYbJcqJPxOARo8xQqo6nZXjHChuo05q3fYNn7Y3eR8sqYz9xdNLA8UT5Bt3zKRGjxS2XNTzZJv/TkoPQGo1O7+Jwsmr9PE5hcDYhM2flbiyY+cVK6YpZKhcimU5PpU1FZ1drvOYaTfkzNH5zcWvNazWnGXR3yVNT8rcYm2K815aVXuPLypqO39Jufum45xpleS5mlMBJv/R8yfnojo+mJAZyqqDu28/Mq9DSI53pUl2/5Qqg7Y3RSnDv5XG41/wC54MxTw6kUEdKnTz81qNrq6J9lMODp4LNfXRGmx06mZ1MJQP7XkEegNRvdXaLTuHF7by82PnIjWPdj6Z4rcZ9ME5E4ZV/mnJD5ZdQjclwSmmqmulXCEUySUT3e3Nm8YefbYOQ9MHVC6eU/qWjzrD6ZzSal5tZSE0VgeL3pdSD8ojG+M9tcu10K3sY3blxL+sY2EaTBby5jDNPcc/CKZQpfwikE/TG7jytkIgmEAhCEAiIQgEIQgEIQgEIQgJ6RET0iIBCEIBCEIBCEIBExEICYQEIBFEzzl5KayoxI3UJlMsx4Lx9oo2HGlQUgeW6glNvLF7jmGpFN8o6qqwPC7LK3/wB8mNYd0S7KlkWVuafq32jPZM/0iGgRzR2e5/W4owNJC+Ki4kbvynJc+lo+qLDlooNabH3UiylU6orPnu76oq+kRweB4kSSAPCZU/MX6o9F2y9s+FU02ptm04D0lJv6RHvU18WqRH/HmR81MfnTmkDOGdAIPBLzo2/3giJ/bVIkH+32vqpjpe6+mZs2+rf/AC5h7/sL/wBcRbs6jbICkfBp31BFS1a/5dw//wBhf/eCLbnYbZBUjzU76gjnNsGryysjLJyMnFcv6+fkMUbSYOLEldV09j2h+0i7ZILKshp09bVH6FRStJI/p2vHukGR88wu2aThrH2u01QJVxnavpNvMkR17LFC3cc5mBopSoVtk8V+ftXKOOsKVM6qeAA8KK6sn4kH1R2fKQWxtmWbAXrifj9rifL1x/kWOfZCrC868aLuASibPZgGyfvoRWasXJzVOhsCyE11i/l4UJP2RZshyBnRjI96Jv8A8UIrj6uLVOCP7dQP2Yjf5X0nDa6uFE1vDyAbcMlMK9K0+qLpnSC1p/lGwfxVOT9T1RSNWqh90dCH+znv3kXbPYkZFSlu+n/QIzNsFvJp09qybn1f6zOK+Yn1RQdJ6AcZ1dfUUofK6j1RfMgFcOSE+rudnz8yKLpLT/hXWj/stH71MW7Zp4a+uJ8I1QpTz/p6WHoSj1RuNXzhVUsNtj/qsyr0rRGqUO31TW52rwP6qP4RnatHOPFGG2b8pFw+l0D7I1+WPo4q7ahEiSyXpcqTv4RJND9Fon7I10hLrOk1xpZuXZBxLY7yZohIHxkRnap19jl3RmgOdRb28zK4ipNGU0vU/gPCpMjIupINrKMy2q/pMYnZPa8uxYXZ8Ho0uzy7McHo2+yNt1jAodvY5HwlX/WMZ/WPK2iEIQCIiTEQCEIQCEIQCEIQCEIQE9IiJ6REAhCEAhCEAhCEAhCEAETERMAjnmoJlD2UGIuL3jTSx5w6giOhxzrUK8Gcn8Q39+hlA+N5Eaw7ol2VXLxfZ6ZHiTypdRPznYrGkSVDtKxC+b8SpyXR8QbJ+2NxhKa7HSzMFIJtSqgLj4bg+2PHR8yE4RrbnU1NA9DSfXHe9Jkz4UrTYngzbm0/6pOfvEx61xJa1UNjvrcsfS2iPPTgeHOGaB6y06P2iYy8bIErqoklHbjqVPc9KED7I6XvvpmbMzVttXKAf9RfH7QRa87CVafaSpP5FNPzBFZ1dt2qWG1/lS0yn0LR64tGaqfC9N1Nd58MpTF/UH2xibYtc1+shiXciZ5HM8VQT80+uKVpGdSrEFeRf/o9k/tIvOm9HbZQT7RG3hc4j0tp9cUTSbLdjjKsJJ2VSxt5nUeuF2zPDElVIl9Uatxc11Yt8JB9cdjylB+7LMlRN714Dn/o445VpdtnVG0oDhvXWFHykoT646/lW83K4hzEfUFWViRSNtzsgQ+Xt/kMXPsgBx5zYyWEn8HN7n/tQjRPgI1SjbY1xPytiN1p3ZeRmzjMuuJK0NvpISbi5mv4RXH5kvapwB0r6E7fmpA+yNa/dfScNrq4RxYlofP/ACa7+8i8Z+qLOSEkm34yQT83+EUjVyq+IqCE+6NPe/eRd9RHiZMSSe+Ykh8wxmbYLeUZE7ZEz6vLUD80xSNJQviauH/ZrX7wRd8kPEyDnVD8mon5FRSdJJ/wkrv/AA5n95Fu2aeGBTLO6qFjurj59DavVHrqhcD2ZGHmOfDItD9aYV6o86Bvqpe/43Nfu1xOfrXshnjQ5RaglBZkG/1nlX+mNflPRwu2rdwIwpQmfyqis+hpXrjYYgb4dNVOasTxU6mpAHW7rPrjQ6vpgCn4blgdy/Mu+hKB/ejfY3JltOVOQlXCrwOlIB8pcZMc524rzXXqJ/UE/DX9YxsOsa+h/wBQT8Nf1o2EeZtEIQgIMIQgEIQgEIQgEIQgEIQgJ6RET0iIBCEIBCEIBCEIBCEIBExETAI5TqceU1lHUQkGzkzLIV5B2qT9kdWjl2pV6Xayhq4fCiVuS6GgP852qbfFsY1h3RLso+Cl9rpZqI58MjUU+haz9sZWkE/4HVod1USf2SI12WvFM6ZK2juYqYHoJjM0fqvhSuj/AGk2f2SY9GXbWZvFJ08HhzmfT3szw+cIzM2F+Dal6S9y++KYr5wEYeQI4c73kjomfHzo9s8+NrP6nPIBJSacrbyORu9/8ThY9XrP/wALO26zaP3ZjfYwUH9LkgpfM06n284W3Gt1apSZTDBVbiS9NqA8nC3GwzTApOm+ksdBL05Cvmn6YxO3D2t3rN06DsMpqgs8jOTSvQ2kfZFA0szTTeMqwoqG1L/81EW7IyqLRkfUn2mySF1BY/RRFO0fyKfZzEEw9ZbvgLAF+gKyT9Ahb3EmzXzfaV3VWlIK2pZutIG2xJbaH2pjsmTjKFV3MRJAU390jgCVbjZAjkNOJGqNQP8Abr31FR2HJhV63mENtsSvcvgiHydv8hi5tpr4Gsx8XpuLllfyTJ9caCnpbmtVRSn3teeV8aUKP2RvtNBR/KTjFPCCotqN+775Pr+SNNg9KXNT7yiLn2anT812Nc5ek4jK1Zvf4X0Vo+9pa1el1Xqi+akTw5QU8HrOSY/ZqiharWO1x9TAf7LQB/3rkX7U+goyvpzY5eyEuPQ0uJPwW8pybHZ6eptfL2ipK+v6opWkhF69iBXdIsD9ofVF1ywPg+muac7pGpK+VyKlpEavUMTOd0vKp+cv1RLtkeGjoCv8at+39tzX7tce2oAeDZ3UN/ldqQV6H1eqMTDC+01TuHvrk4fmuRnanR2GZ1BfG33kwq/wZhUbndPScM/V8tQqOHE3NgxNm36aIueaB7HIuis292qjt27/ABm/VFT1hSqwrDU6PwZE2wT5SEKHyAxZc7HTL5T4ZZHJU/SknyAJv9kY/HFea67hZ7wijtO2I4io2PTeNvGgwOoqw7L3573jfx5a2iEIGAiEIQCEIQCEIQCEIQCEIQE9IiJ6REAhCEAhCEAhCEAhCEAiYgRMAjkGqcKOVDwSQLz8tck9OIx1+OL6sXg3liw3fd2qMJ9CVn7I38fdEuzQ5RMgacqsFqBSWap9VUNHgP3K12//AF9r90I/WXqvAdL1Retbikakv0qWmP3pCb4ML17u9kG/kaEdsu3JmbxTcgmuLOycWPeIn1fPt9sZuZbQqmpWnymygJunNEebhUfpiNNrYmc1KzMjcIk5ld/hPpjHrc6leqZlTh9zWZdsX8jaQI6XvvpOG11dTZRU6A0TZAlJhY85WkfZGzzrnnJ3T3RyBYOppgP6gP2RWNYE0mZrWHWWjuJKYUrzcaQPoMXTO2UQxkDS0NiyUextv1AI5zbGNeXrkSwDkFNtDmRUUkjyhUUrSK4tOI660eSqc0r0Ofxi9afPHyTnUnkHp8fNij6SGv8ACatr6Cmtj0uD1ReMk8Ncy6GNVBSra9eUB+kg+uOzZLJJqmP18NgrE7/x2SneOPFlud1SBQ5prt/jQj/2x17KJt0z+PGmVhLzeKX1L32KeFJAifL0x/kMXOdLvCcd4vWTdZaufJeYVGhw197aqHAg3SqtzgI86XI3+mAgY7xglLRbQWrhJN7ffCrD4or1O4mNU6trA1975yVeuN3fL0nEZuqyaCMeUniHDelJN+/21cdE1Ne25WU9y/Kflj6WlxzvV21x4roiuppiwD5nVeuLzqNdcGTlOdI4gJqSUT521euMz8FvL3y5PHpmnUjpT6kPlcivaRGwHMUK8koP3kb/ACcWJzTtPN3uCxUkfIv1xXdIj48IxKz1U3KOfK4Pthe3P2cxVMAnwnUytfdV59XoDsZGqx0jH9KSL3RS0H9q5H5y1Z4NS76TzTUal9DsfjVMb5mSKT0pjA9Ljkb/ADnpOF+1aSvbZcUec/GM1BAB+Gwu/wBEM7an4Tk1hZ9lvj8Kmaa6FAbJs3xfZaM3VMAcspBs9akwP2TkV2tvrrWlSkTKRxOSSZNJJ972b/Zk+iOeG0v7W7123L5faYbYVe+53+MxZopeULinMC05S/dlsE+kxdOsee7togYQiCIQhAIQhAIQhAIQhAIQhAT0iInpEQCEIQCEIQCEIQCEIQARMQImARwPV/NhvB1DlT+NqRX8SWlf+qO+R806xZoLcwtIm9kiamFd34tI+2OnxTXKJls2VKQZXSe6eHhDlJdN+/tHz64ydMiTTstcQz/IeGuqH6DCY/OPVnDumKlSJHAp+TkJcj4RSsj0Ax7ZITTErkVUnSoeMqoKV5wi30AR1vZfbPKnaVH0nFtccUfGNMSo/G6m8aKsJ9kdVqWGDf8Apto7fmtpJ+gxlaTmHZyv19+9ginsoP6Tl/7seFJb7PVOpSjdXs+4m/6CgI1ldcrSdJGy1YSwYxDQAALimu7/APNMX/Orx9P8gv8AMpp+RMUrVwn+n8PqtzkHh+0Hri45yrH83imX98zTPqpiTbE8mQzvg+RVWeOwQuoL9DcVzSKwDN4kf6pYlUekrP2Ru8tkqpumSrzPIuytSdHx8SfsjRaS5lSVYmQ2kqUpcogHoPwkLtkThXsMzAf1ROE3Vw1mdXYfmod9UdnygcIxfmOzZKQmupVwjoVNAmOJZRo8M1Gzc08ONxUzU3Ld2zg+2O2ZS3GOcyxZI/pxvYdPaofJt/COdZAPdhnRjCUTsjs5sW+DNC30mNFV7SWqduxsDXWCf00I/wDVG5yIB/lvxovuTOWHnmxFcxEszGqRIHSvyqfQG/VGvyvpOG41dgpxDQF99PeHocHri7agCF5ISAVbxnZDn8C8UvV7vWcOn/Upj66YuWoAD+Q2nKPR2nn5kZn4reUZEtn+QWooBPOogfGkxTNIUyr7oa82o/8AR7KvQ5/GLxkV4uRM+fLUD80xRNJLfFiWvK7qa0PS4PVC7ZHhGFAmR1UTSDYBVUnUj9NpZ+2MLVQ2RmZIOd9NYPoccjzS8tjVYQCeFVft6UW+2NpqxYDWLKDOD8ZT1JP6DpP96NTvnpLtV21TuhOXtLSeSqm3+5cjW4fku20pT6ed5CceHnS+pQ+rGw1RqD+WFLdTuDUWFA+QsuR+cEAv6W5psjf2KqAHxLcMZnZPa8ul5YBBwlION2CFyzBA/wCWD9sW6OcZDT3huXdJWVXIlW0/q3T9gjo8ebLetxEIQMQRCEIBCEIBCEIBCEIBCEICekRE9IiAQhCAQhCAQhCAQhAQEwhCAR8z6vJQqquF3lG7a2phpQHTx2zf0GPpmKXmbl1Ssd0gmbkBMT8qk+DOocU24kEgqSFJI5gdesbwy+nLVLNY5nqlcclssKfLMpS3LpqMu2kJ6JS05b6BGNlXJpZ02T76T4y5KpuE/ne2D7BHjmNQ8w8c4aNFk22J5lhxt3spqQKHQUAgAOjxb2J90n443eGaVPYIydnsNYkYYky5LzbbbyXkJSVPJUQjhUQoqubbDfujeOcs0NFL0gJSio4mSBv4JLH5640yCW9U5H/1CflH8Y3ekxPg2IMRy5Kg6ZFkqacQUOIIcN7pPnjTTqSzqqSCCCa+2d+4pTv8sdfyvpniN5q7FqthxW/9TmB89MWHO+YEvkFhpgmyn/Y9FvgsFX2RXtXB46xhtoe6MpMfKtIjdaoUexuWuF5QbJam22rfBliIk2xPLJps41J6T3ikgFdImh8anVj7YwdHsuEUPEbpHjqnmEk9bBs+uPGnSqzpRfddJt7GuLT5jMkxm6RSPYDEFv7QZ/dxL22r4UrJRQVn7NL71VI/KqOyZQq7TGeZbtieLECU3HkaAjimRzl89nySLn2S/vR2vJhXFiLMZQUDfEixty9wIvycpi5vp39vzcxtMAG3BMbnyzf8Ira0KmdVVuf+EIP6qb/ZFn0z2VmDjVRO/CflmVxXsMgTmqt1Z3Ca3OK/VQ56ot3vo8M7V1ME4gw+yOaac8v0uW/uxedQqSxkbINKPjJdkE/GEfwjneq9ztsf0tgb8FLQLfCdcjoeqJzwfKynS/IqqEui3wWlmJPxLy9ck/E0+Tbh2u1UlfIr1RTdIjd6tiNy3KTlk+lavVF0yrHgemt5w7Xp9Sd9Jd9UVTSA37didf8Ao5RHyuGF2yOYrklaa1TqtvbEDnzUq9UZ+rp5SMQ4fb5pTTnjbzufwjX4NCprVC6Rvw1qecPkAS7Gx1TSblUx7RJJpQLxpoQhlCVLcWpTq7BKEgkk2i6/dPScLnn4FO5FUlbw4XEuU9Rv+UWiD9JjJyxUJzTU8yCEqFOqTRKuQILu/wAsZmc1GmcVYFkcMUtl12aD8stRdQtttKW0EHxuE73I2j2wDQZnD+WRwdUGmkOLRMtLeYd7QcLpV4wBHMBXI9RHO5SY6Xy1p1frTW8V4AkUk3HAeHyjY/bHXoo+XGHpPC0oxSaf265aXaKQt1XEo8tybAegCLyI42621qIgYQiCIQhAIQhAIQhAIQhAIQhAT0iInpEQCEIQCEIQCEIQCJiIQEwiIXgP1eHOIhATaNdXcPUnE1PXTq1TZWoyjnumZlsLT5xfkfKN42F4m8BR8M5RYZwY+5MUmTecWSez8KmFOmXQfeNFR8VPk+WOMYgk6wrPKn1D7laxJTCpxp1ll4h5Ez2YspxK/GRbhAJAUki3Inn9Px5vyzUy2W3UBaD0MbxzsSx806naLUqjWaFOiS7QMsOthDD6VLNlhRUEEBRTuNxyjcZu+DZ14Zp1Mwk49OTknPoddQthxlDYLSgeJak2FuIRf8x8l6VmMiWVNVaqycxKJUlhbbiXEpCiCQpKweLkOZvHplzlxM5f0RymOTqautyYL3hCyprawCRwXUBYDex3J5CN/XNJ+k0c4oC1VPJd7LtEq+useAPyrIZKVodUFqWkAkp3sLb2F4/GnNCMBN1+lYmmE0abXNS7yGaiPBlrTwKFwF7KFxzBMWXA+V+NMM4ubqdUnaTO05Ie9rlnFBxKlA8Oy0C4F/yoxc0MN42qGKPC6ThxVQpvYsgqS62FpUL8QCS4L+jrF+qbGjlmVsmMP56LfqTzUmwt6oIC5jiaSeILIsVgA388doyMDLszjmYYeZeS9iZ9xK2nAsFPCmx2Me+c8pWJ3DsiukUacqy2poKclm0EuJSUEAhNjexO/dGmkMGzOJcsuzek6lQ6siWmmlSq2i0txZJKbm297iyvLbpDLLWEio6XWeyxVjN2ZcaQ6S2CkrFx7c4Tfu3ivZXSqZrUZPTyphgobnai5cKPM8YAva1/G5Xiz5BYepdOnqxIVWiVORmHkNPJVVmXG0uBJUCAVJSkkcQNt+sZdBl6xTc1CtvClWTTG6k7eal5VamQhRICwQkAp8YG4PK/dGrl1poqmftFnK9mxKraamBKty8oyXjLOdnbjJUeK1rDiNz5D3RctVgcnMNUOVl7lvw5x5ai2spSA3YXISbe66xtc5aViaaq1PmqFQpmrIWx2KwyglTS0qJHFcgAEK2N+hjcZiUPGmMsP0RVCkmZKYuFzMrPuJQthRTb3Y4kmxBBABvcEHpE+rY0aSiBFH0x9k7MS7a1UJ/cuCxU4V25b78Q6XiqaXX2aFKYmeWmZfUosK4W2Fe5QlxR7z17rnoI6i5lHKV3ADeH6xKSUjPKZAW/IrU4lDoVxBaeIJ4gTuUkW3I7oz8tcqpTLaSmJWUrNSnUzCgtaHuzQ0lY98hKEjhJ5Hc8hGbnNLDRxTKaboNVzOnp1Xsy7Upt951pVOaPBKlwq4u1CASjZVgpZvf3qY6QNPkjM4nVWZrEdaMuohZZS5wTLivz5kHj4fzU8MdVlZCVke08FlmWO1WXHOzQE8ajzUq3M+Ux7xjLO3ZdHkzLNMNpQhJISkJutRUbDvJuTHmumyTi+0VKtFXfwxkwjCvy20hocLaEoHckWj9QheAQiLwgEIQgEIQgEIQgEIQgEIQgJ6RET0iIBCEIBCEIBCEIBCEIBCEIBC8IQEwiPiiYBE3iIQAwhCAQhCAQhCAggHmL+eJhCAc4QhAIQhAIQhAIQhAQTCEIBCEIBCEIBCEIBCEIBCEIBCEBAf/Z", + person: "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", + prompt: "TRY-ON: The person of image 1 wearing the garments of image 2.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/vto-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"garment\": \"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\", \"person\": \"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\", \"prompt\": \"TRY-ON: The person of image 1 wearing the garments of image 2.\"}" +``` + + +## Schema + +### Input + + + 1 つ以上の衣料品の画像(内部的に input_image_2 にマッピングされます)。 + + + + 指定可能な値: `jpeg`、`png`、`webp` + + + + 人物画像(内部的に input_image にマッピングされます)。 + + + + VTO 生成のためのテキストプロンプト。 + + + + 入力および出力のモデレーションに対する許容値。公開利用では 0 から 5 の間。 + + 範囲: `0` から `5` + + + + 再現性のための任意のシード。 + + + + webhook 署名検証用の任意のシークレット。 + + + + webhook 通知を受け取る URL。 + + 形式: `uri` + + +Router が `GET /v2/models/bfl/vto-v1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するのと同じドキュメントです。 + +### Output + + + プロバイダーが報告するクレジット単位のコスト。タスクが Ready になると設定されます。 + + 形式: `float` + + + + BFL のタスク識別子。 + + + + BFL が報告する任意の生成進捗。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 完成した生成結果。ここでは nullable ではありません。このコンポーネントの `required` エントリは、`200` が結果を伴うことを約束するものであり、`result` を nullable にすると、それがキーの存在確認だけに矮小化されてしまいます。 + + + + プロバイダーが報告する生成のコスト。これは BFL の数値であり、Comfy の課金ではありません。 + + 形式: `double` + + + + プロバイダーが報告する生成の所要時間(秒)。 + + 形式: `double` + + + + プロバイダーが報告する生成の完了時刻(Unix エポックからの秒数)。`start_time` と同じ理由で `double` です。 + + 形式: `double` + + + + プロンプトのアップサンプリングを経た後に、生成が実際に実行したプロンプト。 + + + + 生成されたアセットへの署名付き URL。Router はアセットを Comfy のストレージに再ホストし、このフィールドを書き換えます。そのため通常は Comfy がホストする URL で、最大 24 時間有効です。発行時に 24 時間分の署名が付与され、23 時間のメモから再送されるため、後のポーリングでは残り 1 時間程度しかない URL が返されることがあります。再ホストを実行できなかったリーフは、代わりに BFL 自身の短命な配信用 URL を保持します。ビデオでは約 2 時間、画像では約 10 分です。いずれにせよリンクは失効するので、URL を保存するのではなくアセットをダウンロードしてください。 + + 形式: `uri` + + + + 生成で使用されたシード。指定されたものでも、プロバイダーが選んだものでもかまいません。BFL は 2^31 を超えるシード(例: 2784347701)を返すため `int64` として宣言されています。未フォーマットの `integer` だと、多くの SDK ジェネレーターで 32 ビットフィールドとして生成されてしまいます。 + + 形式: `int64` + + + + プロバイダーが報告する生成の開始時刻(Unix エポックからの秒数)。`float` ではなく `double` です。現在のエポック値付近では float32 の間隔が約 128 秒となり、生成全体の幅が単一のデコード値に潰れてしまうためです。 + + 形式: `double` + + + + タスクのステータス: Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error、または Task not found。 + + +## Examples + +### Input + +```json +{ + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2." +} +``` + +### Output + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/fibo/code.mdx b/ja/development/comfy-router/models/bria/fibo/code.mdx new file mode 100644 index 000000000..f57edb077 --- /dev/null +++ b/ja/development/comfy-router/models/bria/fibo/code.mdx @@ -0,0 +1,215 @@ +--- +title: "Comfy Router で Fibo を使用する" +description: "Comfy Router 経由で bria/fibo を呼び出します: エンドポイント、リクエストの形状、および Router が返すレスポンスについて説明します。" +sidebarTitle: "Fibo" +translationSourceHash: 0b7ac4fc +translationFrom: development/comfy-router/models/bria/fibo/code.mdx +translationBlockHashes: + "_intro": 08ef1a4b + "Quick start": ab430149 + "Schema": 90b7b8de + "Examples": 987e8ba6 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/fibo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Bria の `bria/fibo` の API リファレンスです。Comfy Router が提供しています。 + + + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/fibo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/fibo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/fibo", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/fibo", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/fibo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像が指示にどの程度厳密に従うかを決定します。 + + 範囲: `3` から `5` + + 形式: `float` + + + + 編集対象のソース画像。公開されているURLまたはBase64エンコード。対応形式はJPEG、JPG、PNG、WEBP。必ず1つの項目のみを含める必要があります。 + + + + テキストベースの編集指示(例: 「空を青くする」「猫を追加する」)。instruction または structured_instruction のいずれかを指定する必要があります。 + + + + true の場合、指示内にIPコンテンツが含まれる可能性があるときに警告を返します。 + + + + オプションのマスク画像URLまたはBase64エンコード。黒い領域は保持され、白い領域が編集されます。 + + + + 使用するモデルのバージョン。Comfy Router はこれを `{model}` パスセグメントから供給するため、そこでは省略してください。Bria が実行する値は `FIBO` で、v1 ルートでもこのフィールドが存在しない場合のデフォルトとなります。この側では enum に制約されません。Router は呼び出し元のボディが検証された後に値を書き込みます。 + + + + 編集後の画像から除外する概念、スタイル、オブジェクトを指定するテキストプロンプト。 + + + + true の場合、指示のモデレーション失敗時に 422 を返します。 + + + + 決定論的生成のためのシード。省略した場合はランダムなシードが使用されます。 + + + + diffusion ステップ数。 + + 範囲: `20` から `50` + + + + JSON形式の構造化された編集指示を含む文字列。正確でプログラム的な制御を行うには instruction の代わりにこれを使用します。 + + + + true の場合、画像またはマスクのモデレーション失敗時に 422 を返します。 + + + + true の場合、視覚的出力のモデレーション失敗時に 422 を返します。 + + +Router が `GET /v2/models/bria/fibo/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じです。 + +### 出力 + + + エラーオブジェクト(status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(status が COMPLETED の場合のみ存在) + + + + 生成済みまたは編集された画像のURL。 + + + + オリジナルのプロンプト。 + + + + プロンプトを洗練したバージョン。Bria が洗練しなかった COMPLETED の生成では null になります。このキーは省略されるのではなく null を伴って存在するため nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細なJSON構造化プロンプト。 + + + + 生成済みビデオのURL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/ja/development/comfy-router/models/bria/image-edit-erase/code.mdx b/ja/development/comfy-router/models/bria/image-edit-erase/code.mdx new file mode 100644 index 000000000..c0b9953f1 --- /dev/null +++ b/ja/development/comfy-router/models/bria/image-edit-erase/code.mdx @@ -0,0 +1,182 @@ +--- +title: "Comfy Router で Image Edit Erase を使用する" +description: "Comfy Router 経由で bria/image-edit-erase を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Image Edit Erase" +translationSourceHash: 8b73ae29 +translationFrom: development/comfy-router/models/bria/image-edit-erase/code.mdx +translationBlockHashes: + "_intro": b56de2f2 + "Schema": 5c26377c + "Examples": d333bf78 +--- + +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-erase.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Bria から提供する `bria/image-edit-erase` の API リファレンスです。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/image-edit-erase` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-erase` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-erase", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-erase", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-erase \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## スキーマ + +### 入力 + + + 編集する画像。サポートされる入力タイプは Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。対応フォーマットは JPEG、JPG、PNG、WEBP です。 + + + + 削除する領域を定義するマスク。Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。白いピクセル (255) は削除する領域を示し、黒いピクセル (0) は保持されます。 + + + + 指定するマスクのタイプ。"manual"(デフォルト)または "automatic" のいずれかです。 + + + + 入力画像の部分的に透明な領域を出力に保持するかどうかを制御します。 + + + + false(デフォルト)の場合、リクエストは非同期で処理されます。true の場合、API は完了するまで接続を開いたままにします。 + + + + 有効にすると、入力ビジュアルにコンテンツモデレーションを適用します。画像がモデレーションに失敗した場合は 422 を返します。 + + + + 有効にすると、結果のビジュアルにコンテンツモデレーションを適用します。出力がモデレーションに失敗した場合は 422 を返します。 + + +Router が `GET /v2/models/bria/image-edit-erase/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となる同一のドキュメントです。 + +### 出力 + + + エラーオブジェクト(ステータスが ERROR の場合にのみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(ステータスが COMPLETED の場合にのみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトを洗練したバージョン。COMPLETED の生成で Bria が洗練しなかった場合は null。このキーは省略されるのではなく null を保持して存在するため Nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/image-edit-expand/code.mdx b/ja/development/comfy-router/models/bria/image-edit-expand/code.mdx new file mode 100644 index 000000000..dc569df35 --- /dev/null +++ b/ja/development/comfy-router/models/bria/image-edit-expand/code.mdx @@ -0,0 +1,208 @@ +--- +title: "Comfy Router で Image Edit Expand を使用する" +description: "Comfy Router 経由で bria/image-edit-expand を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Image Edit Expand" +translationSourceHash: 4dcd1799 +translationFrom: development/comfy-router/models/bria/image-edit-expand/code.mdx +translationBlockHashes: + "_intro": 2ca3ddec + "Quick start": 6cd79b35 + "Schema": bb25be53 + "Examples": 522e0b99 +--- + +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/bria/image-edit-expand.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-expand` の API リファレンス。Bria が提供し、Comfy Router が配信します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/image-edit-expand` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/image-edit-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-expand", + { + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-expand", { + aspect_ratio: "3:2", + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"3:2\", \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## スキーマ + +### 入力 + + + 拡張されたキャンバスのアスペクト比。定義済みの比率文字列("1:1"、"2:3"、"3:2"、"3:4"、"4:3"、"4:5"、"5:4"、"9:16"、"16:9")または 0.5~3.0 の浮動小数点のいずれかです。指定した場合、canvas_size、original_image_size、original_image_location は無視されます。 + + 範囲: `0.5` ~ `3` + + + + 拡張されたキャンバスの幅と高さ(ピクセル単位)。デフォルトは [1000, 1000] です。キャンバスの最大面積は 5000x5000 ピクセルです。 + + + + 拡張する画像。サポートされる入力タイプは、Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。対応フォーマットは JPEG、JPG、PNG、WEBP です。 + + + + 拡張領域から除外する概念、スタイル、オブジェクトを指定するテキストプロンプト。 + + + + キャンバス上のオリジナル画像の左上隅の位置 [x, y]。aspect_ratio を指定しない場合、original_image_size とあわせて必須です。 + + + + キャンバス上に配置するオリジナル画像の幅と高さ。aspect_ratio を指定しない場合、original_image_location とあわせて必須です。 + + + + 入力画像の部分的に透明な領域を出力で保持するかどうかを制御します。 + + + + 拡張領域で生成されるコンテンツを誘導するテキストプロンプト。省略した場合は自動生成されます。 + + + + 有効にすると、プロンプトにコンテンツモデレーションを適用します。プロンプトがモデレーションに失敗した場合は 422 を返します。 + + + + 決定論的生成のためのシード。省略した場合はランダムなシードが使用されます。 + + + + false(デフォルト)の場合、リクエストは非同期で処理されます。true の場合、API は完了するまで接続を開いたままにします。 + + + + 有効にすると、入力ビジュアルにコンテンツモデレーションを適用します。画像がモデレーションに失敗した場合は 422 を返します。 + + + + 有効にすると、結果のビジュアルにコンテンツモデレーションを適用します。出力がモデレーションに失敗した場合は 422 を返します。 + + +Router が `GET /v2/models/bria/image-edit-expand/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。 + +### 出力 + + + エラーオブジェクト(status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + エラーの追加詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像の URL。 + + + + 元のプロンプト。 + + + + プロンプトを改良したバージョン。Bria が改良しなかった COMPLETED の生成では null になります。キーは省略されるのではなく null を保持して存在するため nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/ja/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx b/ja/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx new file mode 100644 index 000000000..4c9deae93 --- /dev/null +++ b/ja/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx @@ -0,0 +1,201 @@ +--- +title: "Comfy Router で Image Edit Gen Fill を使う" +description: "Comfy Router 経由で bria/image-edit-gen-fill を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Image Edit Gen Fill" +translationSourceHash: 1dda204b +translationFrom: development/comfy-router/models/bria/image-edit-gen-fill/code.mdx +translationBlockHashes: + "_intro": b36f2810 + "Quick start": 19dde7b5 + "Schema": 6d9d5342 + "Examples": 1d258985 +--- + +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-gen-fill.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Bria から Comfy Router 経由で提供される `bria/image-edit-gen-fill` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `bria/image-edit-gen-fill` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/image-edit-gen-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-gen-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-gen-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "a small green leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-gen-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"a small green leaf\"}" +``` + + +## Schema + +### 入力 + + + 編集する画像。サポートされる入力タイプは、Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。対応フォーマットは JPEG、JPG、PNG、WEBP です。 + + + + 塗りつぶす領域を定義するマスク。Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。白いピクセル (255) は生成する領域を示し、黒いピクセル (0) は保持されます。 + + + + 生成される領域から除外する概念、スタイル、オブジェクトを指定するテキストプロンプト。 + + + + 入力画像の部分的に透明な領域を出力に保持するかどうかを制御します。 + + + + マスクされた領域内で生成する内容のテキスト記述。 + + + + 有効にすると、プロンプトにコンテンツモデレーションを適用します。プロンプトがモデレーションに失敗した場合は 422 を返します。 + + + + true (デフォルト) の場合、最適な生成結果を得るためにプロンプトが自動的に調整されます。 + + + + 決定論的な生成のためのシード。省略した場合は、ランダムなシードが使用されます。 + + + + false (デフォルト) の場合、リクエストは非同期で処理されます。true の場合、API は完了するまで接続を開いたままにします。 + + + + 有効にすると、入力ビジュアルにコンテンツモデレーションを適用します。画像がモデレーションに失敗した場合は 422 を返します。 + + + + 有効にすると、結果のビジュアルにコンテンツモデレーションを適用します。出力がモデレーションに失敗した場合は 422 を返します。 + + +Router が `GET /v2/models/bria/image-edit-gen-fill/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + エラーオブジェクト (status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト (status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトの改良版。または、Bria が改良を行わなかった COMPLETED の生成では null。このキーは省略されるのではなく null を保持した状態で存在するため Nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 指定可能な値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/ja/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx b/ja/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx new file mode 100644 index 000000000..acd81af91 --- /dev/null +++ b/ja/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Image Edit Increase Resolution を使用する" +description: "Comfy Router 経由で bria/image-edit-increase-resolution を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Image Edit Increase Resolution" +translationSourceHash: 3b8485d3 +translationFrom: development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx +translationBlockHashes: + "_intro": c9ce8ff8 + "Quick start": 3ac2d450 + "Schema": 812f7799 + "Examples": af129535 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/bria/image-edit-increase-resolution.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-increase-resolution` の API リファレンス。Bria から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/image-edit-increase-resolution` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/image-edit-increase-resolution` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-increase-resolution", + { + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-increase-resolution", { + desired_increase: 2, + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-increase-resolution \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"desired_increase\": 2, \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## スキーマ + +### 入力 + + + 適用する解像度の倍率。サポートされる値は2と4です。最大出力解像度は8192x8192です。 + + + + アップスケールする画像。サポートされる入力タイプは、Base64エンコードされた文字列、または公開アクセス可能な画像ファイルを指すURLです。対応フォーマットはJPEG、JPG、PNG、WEBPです。 + + + + 入力画像の部分的に透明な領域を出力で保持するかどうかを制御します。 + + + + false(デフォルト)の場合、リクエストは非同期で処理されます。trueの場合、APIは完了するまで接続を開いたままにします。 + + + + 有効にすると、入力ビジュアルにコンテンツモデレーションを適用します。画像がモデレーションに失敗した場合は422を返します。 + + + + 有効にすると、結果ビジュアルにコンテンツモデレーションを適用します。出力がモデレーションに失敗した場合は422を返します。 + + +Routerが `GET /v2/models/bria/image-edit-increase-resolution/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前にRouterが呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + エラーオブジェクト(ステータスがERRORの場合にのみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(ステータスがCOMPLETEDの場合にのみ存在) + + + + 生成または編集された画像のURL。 + + + + オリジナルのプロンプト。 + + + + プロンプトの改良版。Briaが改良しなかったCOMPLETEDの生成ではnullになります。キーが省略されるのではなくnullを保持した状態で存在するためnullableです。bria/image-edit-gen-fillで実際に確認されました。 + + + + 生成に使用されたシード。 + + + + 詳細なJSON構造化プロンプト。 + + + + 生成されたビデオのURL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-increase-resolution/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/image-edit-remove-background/code.mdx b/ja/development/comfy-router/models/bria/image-edit-remove-background/code.mdx new file mode 100644 index 000000000..2695a843c --- /dev/null +++ b/ja/development/comfy-router/models/bria/image-edit-remove-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router で Image Edit Remove Background を使用する" +description: "Comfy Router 経由で bria/image-edit-remove-background を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Image Edit Remove Background" +translationSourceHash: da218b61 +translationFrom: development/comfy-router/models/bria/image-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": f6354a22 + "Quick start": de1d94f2 + "Schema": 676248d9 + "Examples": acf012fe +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-remove-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Bria が提供し、Comfy Router から配信される `bria/image-edit-remove-background` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `bria/image-edit-remove-background` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/image-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-remove-background", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-remove-background", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## スキーマ + +### 入力 + + + 背景を除去する画像。対応する入力タイプは、Base64 エンコードされた文字列、または公開アクセス可能な画像ファイルを指す URL です。対応フォーマットは JPEG、JPG、PNG、WEBP です。 + + + + 背景除去後に入力画像の部分的に透明な領域を出力で保持するかどうかを制御します。 + + + + false(デフォルト)の場合、リクエストは非同期で処理されます。true の場合、API は完了するまで接続を開いたまま保持します。 + + + + 有効にすると、入力ビジュアルにコンテンツモデレーションを適用します。画像がモデレーションに失敗した場合は 422 を返します。 + + + + 有効にすると、結果のビジュアルにコンテンツモデレーションを適用します。出力がモデレーションに失敗した場合は 422 を返します。 + + +Router が `GET /v2/models/bria/image-edit-remove-background/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + エラーオブジェクト(status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + エラーの追加詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトの改良版。または、Bria が改良しなかった COMPLETED の生成では null。キーが省略されるのではなく null を保持して存在するため nullable です。bria/image-edit-gen-fill で実際に観測されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/structured-instruction/code.mdx b/ja/development/comfy-router/models/bria/structured-instruction/code.mdx new file mode 100644 index 000000000..a08144241 --- /dev/null +++ b/ja/development/comfy-router/models/bria/structured-instruction/code.mdx @@ -0,0 +1,182 @@ +--- +title: "Comfy Router で Structured Instruction を使用する" +description: "Comfy Router 経由で bria/structured-instruction を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Structured Instruction" +translationSourceHash: ab1ce344 +translationFrom: development/comfy-router/models/bria/structured-instruction/code.mdx +translationBlockHashes: + "_intro": 89417472 + "Quick start": 2b743a21 + "Schema": ffdaeadf + "Examples": a6f75e62 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/structured-instruction.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bria/structured-instruction` の API リファレンス。Bria の Comfy Router から提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/structured-instruction` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/structured-instruction` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/structured-instruction", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/structured-instruction", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/structured-instruction \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## スキーマ + +### 入力 + + + 編集対象のソース画像。公開されているURLまたはBase64エンコード。含まれる項目は必ず1つでなければなりません。 + + + + 必須。テキストベースの編集指示(例: 「空を青くする」、「猫を追加する」)。 + + + + true の場合、指示内に含まれる可能性のあるIPコンテンツについて警告を返します。 + + + + オプションのマスク画像URLまたはBase64エンコード。黒い領域は保持され、白い領域が編集されます。 + + + + true の場合、指示のモデレーションに失敗すると422を返します。 + + + + 決定論的な生成のためのシード。省略した場合はランダムなシードが使用されます。 + + + + true の場合、画像またはマスクのモデレーションに失敗すると422を返します。 + + +Router が `GET /v2/models/bria/structured-instruction/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + エラーオブジェクト(status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像のURL。 + + + + オリジナルのプロンプト。 + + + + プロンプトを洗練したバージョン。Bria が洗練しなかった COMPLETED の生成では null になります。キーが省略されるのではなく null を保持したまま存在(PRESENT)するため nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細なJSON構造化プロンプト。 + + + + 生成されたビデオのURL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "structured_prompt": "{\"edit\":\"replace the background\",\"background\":\"light blue\"}" + }, + "status": "COMPLETED" +} +``` + + diff --git a/ja/development/comfy-router/models/bria/video-edit-green-screen/code.mdx b/ja/development/comfy-router/models/bria/video-edit-green-screen/code.mdx new file mode 100644 index 000000000..1aea2bf78 --- /dev/null +++ b/ja/development/comfy-router/models/bria/video-edit-green-screen/code.mdx @@ -0,0 +1,173 @@ +--- +title: "Comfy Router で Video Edit Green Screen を使用する" +description: "Comfy Router 経由で bria/video-edit-green-screen を呼び出します。エンドポイント、リクエスト形式、Router が返すレスポンスについて説明します。" +sidebarTitle: "Video Edit Green Screen" +translationSourceHash: a0c7be90 +translationFrom: development/comfy-router/models/bria/video-edit-green-screen/code.mdx +translationBlockHashes: + "_intro": b4683e93 + "Quick start": c3a2d6fa + "Schema": 5008e45d + "Examples": 13c57b2c +--- +{/* GENERATED FILE. Generated from router-schemas/bria/video-edit-green-screen.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Bria から提供する `bria/video-edit-green-screen` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/video-edit-green-screen` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/video-edit-green-screen` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-green-screen", + { + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-green-screen", { + green_shade: "broadcast_green", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-green-screen \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"green_shade\": \"broadcast_green\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## Schema + +### 入力 + + + クロマキー用に前景の背後へ適用される単色の背景シェード。デフォルトは broadcast_green です。 + + 指定可能な値: `broadcast_green`、`chroma_green`、`blue_screen` + + + + 出力コンテナとコーデックのプリセット。 + + 指定可能な値: `mp4_h264`、`mp4_h265`、`webm_vp9`、`mov_h265`、`mov_proresks`、`mkv_h264`、`mkv_h265`、`mkv_vp9`、`gif` + + + + 入力ビデオのオーディオを保持するかどうか。 + + + + 入力ビデオの公開アクセス可能な URL。入力解像度は最大 16000x16000 (16K) までサポートされます。最大再生時間は 60 秒です。 + + +Router が `GET /v2/models/bria/video-edit-green-screen/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに届く前に Router が呼び出しを検証する際に使用するドキュメントと同じです。 + +### 出力 + + + エラーオブジェクト (status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト (status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトを洗練したバージョン。Bria が洗練しなかった COMPLETED の生成では null になります。キーが省略されるのではなく null を保持した状態で存在するため nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 指定可能な値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-green-screen/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/video-edit-remove-background/code.mdx b/ja/development/comfy-router/models/bria/video-edit-remove-background/code.mdx new file mode 100644 index 000000000..99eb4e5ac --- /dev/null +++ b/ja/development/comfy-router/models/bria/video-edit-remove-background/code.mdx @@ -0,0 +1,176 @@ +--- +title: "Comfy Router で Video Edit Remove Background を使用する" +description: "Comfy Router 経由で bria/video-edit-remove-background を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Video Edit Remove Background" +translationSourceHash: 1db0833a +translationFrom: development/comfy-router/models/bria/video-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": 6b77260c + "Quick start": 05321a14 + "Schema": c0c1ab12 + "Examples": 83ff7312 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/bria/video-edit-remove-background.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-remove-background` の API リファレンスです。Comfy Router が Bria から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `bria/video-edit-remove-background` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/video-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-remove-background", + { + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-remove-background", { + background_color: "Transparent", + output_container_and_codec: "webm_vp9", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_color\": \"Transparent\", \"output_container_and_codec\": \"webm_vp9\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + 出力ビデオの背景色。Transparent の場合、出力コーデックはアルファをサポートしている必要があります。 + + 指定可能な値: `Transparent`、`Black`、`White`、`Gray`、`Red`、`Green`、`Blue`、`Yellow`、`Cyan`、`Magenta`、`Orange` + + + + 出力コンテナとコーデックのプリセット。 + + 指定可能な値: `mp4_h264`、`mp4_h265`、`webm_vp9`、`mov_h265`、`mov_proresks`、`mkv_h264`、`mkv_h265`、`mkv_vp9`、`gif` + + + + 入力ビデオのオーディオを保持するかどうか。 + + + + 入力ビデオの公開アクセス可能な URL。入力解像度は最大 16000x16000 (16K) までサポートされています。最大再生時間は 60 秒です。 + + +Router が `GET /v2/models/bria/video-edit-remove-background/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + エラーオブジェクト (status が ERROR の場合にのみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト (status が COMPLETED の場合にのみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトの洗練されたバージョン。Bria が洗練しなかった COMPLETED の生成では null になります。キーは省略されるのではなく null を保持した状態で存在するため Nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 指定可能な値: `IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-remove-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/bria/video-edit-replace-background/code.mdx b/ja/development/comfy-router/models/bria/video-edit-replace-background/code.mdx new file mode 100644 index 000000000..d470f83f1 --- /dev/null +++ b/ja/development/comfy-router/models/bria/video-edit-replace-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router で Video Edit Replace Background を使用する" +description: "Comfy Router 経由で bria/video-edit-replace-background を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスを説明します。" +sidebarTitle: "Video Edit Replace Background" +translationSourceHash: d12969c8 +translationFrom: development/comfy-router/models/bria/video-edit-replace-background/code.mdx +translationBlockHashes: + "_intro": 5955c067 + "Quick start": e405be35 + "Schema": 12e66309 + "Examples": 18e1a850 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/video-edit-replace-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-replace-background` の API リファレンスです。Bria から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `bria/video-edit-replace-background` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/bria/video-edit-replace-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-replace-background", + { + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-replace-background", { + background_url: "https://example.com/background.mp4", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-replace-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_url\": \"https://example.com/background.mp4\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## Schema + +### 入力 + + + 前景の背後に合成する背景アセット(画像またはビデオ)の公開アクセス可能な URL。前景のアスペクト比と一致している必要があります。 + + + + 出力コンテナとコーデックのプリセット。 + + 取り得る値: `mp4_h264`, `mp4_h265`, `webm_vp9`, `mov_h265`, `mov_proresks`, `mkv_h264`, `mkv_h265`, `mkv_vp9`, `gif` + + + + 入力(前景)ビデオのオーディオを保持するかどうか。 + + + + 入力(前景)ビデオの公開アクセス可能な URL。入力解像度は最大 16000x16000(16K)までサポート。最大再生時間は 60 秒。 + + +Router が `GET /v2/models/bria/video-edit-replace-background/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + エラーオブジェクト(status が ERROR の場合のみ存在) + + + + エラーコード。 + + + + 追加のエラー詳細。 + + + + エラーメッセージ。 + + + + リクエストの一意の識別子。 + + + + 結果オブジェクト(status が COMPLETED の場合のみ存在) + + + + 生成または編集された画像の URL。 + + + + オリジナルのプロンプト。 + + + + プロンプトの改良版。Bria が改良を行わなかった COMPLETED の生成では null になります。キーが省略されるのではなく null を保持したまま存在するため nullable です。bria/image-edit-gen-fill で実際に確認されています。 + + + + 生成に使用されたシード。 + + + + 詳細な JSON 構造化プロンプト。 + + + + 生成されたビデオの URL。 + + + + リクエストの現在のステータス。 + + 取り得る値: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 例 + +### 入力 + +```json +{ + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4" +} +``` + +### 出力 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-replace-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx new file mode 100644 index 000000000..67e7388bd --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx @@ -0,0 +1,344 @@ +--- +title: "Dreamina Seedance 2.0 260128 を Comfy Router で使用する" +description: "Comfy Router 経由で byteplus/dreamina-seedance-2-0-260128 を呼び出します。endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Dreamina Seedance 2.0 260128" +translationSourceHash: 6be1e5f1 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx +translationBlockHashes: + "_intro": 9fd49814 + "Quick start": 6f5f6b3e + "Schema": d7b1deb9 + "Examples": 6e09b6c0 +--- +{/* 生成済みファイル。router-schemas/byteplus/dreamina-seedance-2-0-260128.json から `pnpm code-pages:gen` で生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +BytePlus から Comfy Router が提供する `byteplus/dreamina-seedance-2-0-260128` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `byteplus/dreamina-seedance-2-0-260128` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先アドレス + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応しているのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコード、またはアセット ID。 +オーディオ URL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画を生成するための画像コンテンツ(type が "image_url" の場合) +画像 URL: 画像 URL にアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータが含まれます。 + +テキストプロンプト(必須): 中国語および英語の文字を使って生成するビデオを説明します。 + +パラメータ(任意): ビデオの仕様を制御するには、テキストプロンプトの後に --[parameters] を追加します: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3〜12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1 〜 2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + 指定可能な値: `text`, `image_url`, `video_url`, `audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応しているのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。動画編集タスクは -1 のみサポート)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2` 〜 `30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600` 〜 `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされているモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシはそれ以外の値を拒否し、省略された場合も 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためで、Router の呼び出し側は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)で、幅広い互換性がありファイルサイズも小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)で、色精度が高くポストプロダクションに適しています。ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`, `mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしていません。Seedance 2.5 は 480p、720p、1080p をサポートしています。 + + 指定可能な値: `480p`, `720p`, `1080p`, `4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成されたビデオの最終フレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報の取得を呼び出すことで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、そのピクセル幅と高さは生成されたビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成されたビデオの最終フレームが次のビデオタスクの最初のフレームとして使用され、複数の連続したビデオをすばやく生成できます。 +false: 生成されたビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するためのシード整数。範囲: [-1, 2^32-1]。-1 を指定するとランダムなシードが使用されます。 + + 範囲: `-1` から `4294967295` + + + + 処理のためのサービステア。Seedance 2.5、2.0 & 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`, `flex` + + + + 生成されたビデオにウォーターマークが含まれるかどうか。 + + +Router が `GET /v2/models/byteplus/dreamina-seedance-2-0-260128/openapi.json` で提供するスキーマから生成されており、これはリクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同じドキュメントです。### 出力 + + + ビデオ生成タスク完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返した場合はその最終フレームのダウンロード URL が含まれます。`video_url` と `last_frame_url` はどちらも Comfy のストレージに再ホストされます。ここにあるその他のフィールドはすべて BytePlus 自身のものです。Null 許容です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後ポーリングした成功済みドキュメントでは `content` が存在しないか null である可能性があります。 + + + + 生成済みビデオの最終フレームのダウンロード URL です。リクエストで `return_last_frame` が設定された場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側で最終フレームを PNG としてドキュメント化していますが、Router は提供されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフィングから型を判定します。`image/jpeg` はその両方が失敗した場合の最後の手段のフォールバックにすぎません。Router は最終フレームを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後のポーリングでは残り 1 時間しかないものが返されることもあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 自身の URL が保持され、これは BytePlus がタスクの 24 時間後にクリアします。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成済みビデオのコンテナ形式(mp4 または mov)です。BytePlus が `content` の中にネストした場合に返されます。Seedance モデルでは、`content` のトップレベルの兄弟として返すことがより一般的です(トップレベルの `output_format` フィールドを参照)。Router はどちらか存在する方を読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後のポーリングでは残り 1 時間しかないものが返されることもあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 自身の URL が保持され、BytePlus はタスクの 24 時間後にこれをクリアし、一部のモデルでは 100 ダウンロードに制限します。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時刻です。値は UNIX タイムスタンプ(秒)です。 + + + + 生成済みビデオの再生時間(秒)。整数ではなく number として宣言されています。これは BytePlus がこの点で一貫していないためです。ビデオタスクが整数秒を返す一方、同種の BytePlus のサーフェスでは小数の再生時間が報告されることが観察されているため、クライアントは整数値を前提にしてはいけません。BytePlus 自身のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合は、エラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成済みビデオのコンテナ形式(mp4 または mov)で、`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリが返すのはここです。BytePlus 自身のフィールドで、変更されずに転送されます。 + + + + 生成済みビデオの解像度(例: `1080p`)。BytePlus 自身のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + + + タスクで実際に使用された生成シード。BytePlus 自身のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時刻です。値は UNIX タイムスタンプ(秒)です。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens です。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx new file mode 100644 index 000000000..2261fa3d3 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router で Dreamina Seedance 2.0 Fast 260128 を使用する" +description: "Comfy Router 経由で byteplus/dreamina-seedance-2-0-fast-260128 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Dreamina Seedance 2.0 Fast 260128" +translationSourceHash: 9cf630ff +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx +translationBlockHashes: + "_intro": 7c02160b + "Quick start": 16e12af8 + "Schema": 9b41db67 + "Examples": 952ee859 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/byteplus/dreamina-seedance-2-0-fast-260128.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-fast-260128` の API Reference です。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**Model ID:** `byteplus/dreamina-seedance-2-0-fast-260128` + +**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-fast-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-fast-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できません。少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応します。 + + + + オーディオURL、Base64 エンコード、またはアセット ID。 +オーディオURL: オーディオの公開URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画への生成に使用する画像コンテンツ(type が "image_url" の場合) +画像URL: 画像URLにアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータが含まれます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して生成するビデオを説明します。 + +パラメータ(任意): テキストプロンプトの後に --[parameters] を追加してビデオの仕様を制御します: +- --resolution(--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio(--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration(--dur): 3~12 秒(デフォルト: 5) +- --framepersecond(--fps): 24(デフォルト: 24) +- --watermark(--wm): true/false(デフォルト: false) +- --seed(--seed): -1~2^32-1(デフォルト: -1) +- --camerafixed(--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + 指定可能な値: `text`, `image_url`, `video_url`, `audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオURLまたはアセット ID。 +ビデオURL: ビデオの公開URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみに対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2` ~ `30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48時間)。範囲: [3600, 259200]。 + + 範囲: `3600` ~ `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されたビデオに映像と同期したオーディオが含まれるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされるモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接 v1 呼び出しでは、これを必ず指定する必要があります。プロキシはそれ以外の値、および省略された値を 400 で拒否します。これはこのスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから入力するため、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)で、幅広い互換性とより小さなファイルサイズ。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)で色精度が高く、ポストプロダクションに適しています。ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`, `mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + ビデオ解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p に対応していません。Seedance 2.5 は 480p、720p、1080p に対応します。 + + 指定可能な値: `480p`, `720p`, `1080p`, `4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最後のフレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報を取得するを呼び出すことで最後のフレーム画像を取得できます。最後のフレーム画像は PNG 形式で、ピクセル幅と高さは生成済みビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成されたビデオの最後のフレームが次のビデオタスクの最初のフレームとして使用され、複数の連続したビデオをすばやく生成できます。 +false: 生成済みビデオの最後のフレーム画像を返しません。 + + + + ランダム性を制御するシード整数。範囲: [-1, 2^32-1]。-1 はランダムシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理のサービスティア。Seedance 2.5、2.0、2.0 fast は flex(オフライン推論)をサポートしていません。 + + 取り得る値: `default`、`flex` + + + + 生成済みビデオにウォーターマークが含まれるかどうか。 + + +Router が `GET /v2/models/byteplus/dreamina-seedance-2-0-fast-260128/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + ビデオ生成タスク完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返す場合はその最後のフレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされ、ここにある他のすべてのフィールドは BytePlus 独自のものです。Null 許容です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした succeeded ドキュメントでは `content` が存在しないか null になっていることがあります。 + + + + 生成されたビデオの最後のフレームのダウンロード URL。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側で最後のフレームを PNG としてドキュメント化していますが、Router は提供されたバイトをそのまま再ホストし、上流の Content-Type またはコンテンツスニッフから型を判定します。`image/jpeg` はその両方が失敗した場合の最後の手段のフォールバックにすぎません。Router は最後のフレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返されることがあります。再ホストを実行できなかった場合、このフィールドは BytePlus 独自の URL を保持します。これは BytePlus がタスクの 24 時間後にクリアします。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成されたビデオのコンテナ形式(mp4 または mov)。BytePlus がこれを `content` の中にネストして返す場合に含まれます。Seedance モデルでは、`content` のトップレベルの兄弟として返すことの方が一般的です。トップレベルの `output_format` フィールドを参照してください。Router はどちらか存在する方を読み取ります。 + + + + 出力ビデオのダウンロード URL。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返されることがあります。再ホストを実行できなかった場合、このフィールドは BytePlus 独自の URL を保持します。これは BytePlus がタスクの 24 時間後にクリアし、一部のモデルではダウンロード回数が 100 回に制限されます。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間。値は秒単位の UNIX タイムスタンプです。 + + + + 生成されたビデオの再生時間(秒)。BytePlus がこの点で一貫していないため、整数ではなく数値として宣言されています。ビデオタスクでは整数秒が返されることが観察されており、同系列の BytePlus のサーフェスでは小数の再生時間が報告されています。そのため、クライアントは整数値を前提にしてはなりません。BytePlus 独自のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + + + エラー情報。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成されたビデオのコンテナ形式(mp4 または mov)。`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリが返すのはここです。BytePlus 独自のフィールドで、そのまま転送されます。 + + + + 生成されたビデオの解像度。例えば `1080p` です。BytePlus 独自のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シード。BytePlus 独自のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間。値は秒単位の UNIX タイムスタンプです。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-fast-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx new file mode 100644 index 000000000..bd2744b18 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx @@ -0,0 +1,346 @@ +--- +title: "Comfy Router で Dreamina Seedance 2.0 Mini を使用する" +description: "Comfy Router 経由で byteplus/dreamina-seedance-2-0-mini を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Dreamina Seedance 2.0 Mini" +translationSourceHash: bfc609db +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx +translationBlockHashes: + "_intro": cad8bfca + "Quick start": 8635ce8a + "Schema": 4588f61a + "Examples": 8337a2e0 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/byteplus/dreamina-seedance-2-0-mini.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-mini` の API リファレンスです。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `byteplus/dreamina-seedance-2-0-mini` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-mini", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-mini", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### Input + + + この生成タスクの結果を受け取るコールバック通知アドレス + + Format: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力は Seedance 2.5、2.0、2.0 fast のみがサポートします。Seedance 2.0 と 2.0 fast はオーディオ単独では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力もサポートします。 + + + + オーディオURL、Base64 エンコーディング、またはアセット ID。 +オーディオURL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画を生成するための画像コンテンツ(type が "image_url" の場合) +画像URL: 画像URLにアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + Possible values: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータを含みます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して記述する、生成するビデオの説明。 + +パラメータ(任意): ビデオの仕様を制御するには、テキストプロンプトの後に --[parameters] を追加します: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3~12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1 ~ 2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + Possible values: `text`, `image_url`, `video_url`, `audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力は Seedance 2.5、2.0、2.0 fast のみがサポートします。 + + + + ビデオURLまたはアセット ID。 +ビデオURL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみをサポート)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + Range: `2` to `30` + + + + タスクのタイムアウトしきい値(秒)。デフォルトは 172800(48 時間)。範囲: [3600, 259200]。 + + Range: `3600` to `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオが含まれるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされているモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシはそれ以外の値、および省略された値を 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためで、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)で、幅広い互換性がありファイルサイズも小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)で色精度が高く、ポストプロダクションに適しています。ファイルサイズは大きくなります。 + + Possible values: `mp4`, `mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + Possible values: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしません。Seedance 2.5 は 480p、720p、1080p をサポートします。 + + Possible values: `480p`, `720p`, `1080p`, `4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。 +true: 生成済みビデオの最終フレーム画像を返します。このパラメータを true に設定すると、「ビデオ生成タスクの情報の取得」を呼び出すことで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、そのピクセル幅と高さは生成済みビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成したビデオの最終フレームが次のビデオタスクの最初のフレームとして使用され、複数の連続したビデオを素早く生成できます。 +false: 生成済みビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するためのシード整数。範囲: [-1, 2^32-1]。-1 はランダムシードを使用します。 + + 範囲: `-1` ~ `4294967295` + + + + 処理のサービスティア。Seedance 2.5、2.0 & 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`、`flex` + + + + 生成済みビデオにウォーターマークを含めるかどうか。 + + +`GET /v2/models/byteplus/dreamina-seedance-2-0-mini/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + ビデオ生成タスク完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返した場合はその最終フレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされ、ここにあるその他のフィールドはすべて BytePlus 自身のものです。Nullable です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした succeeded のドキュメントでは `content` が存在しないか null になっていることがあります。 + + + + 生成されたビデオの最終フレームのダウンロード URL です。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側で最終フレームを PNG と記載していますが、Router は渡されたバイト列をそのまま再ホストし、アップストリームの Content-Type またはコンテンツスニッフィングから型を判定します。`image/jpeg` はその両方が失敗した場合の最後のフォールバックにすぎません。Router は最終フレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間分の署名が付き、23 時間のメモから再取得されるため、その後にポーリングすると残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 自身の URL が保持され、BytePlus はタスクの 24 時間後にそれをクリアします。いずれの場合もリンクは失効するため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成されたビデオのコンテナ形式 (mp4 または mov) です。BytePlus がこれを `content` の内部に入れ子にして返す場合に存在します。Seedance のモデルはこれを `content` のトップレベルの兄弟フィールドとして返すことのほうが多く、その場合はトップレベルの `output_format` フィールドを参照してください。Router はどちらか存在するほうを読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間分の署名が付き、23 時間のメモから再取得されるため、その後にポーリングすると残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 自身の URL が保持され、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルではダウンロード回数が 100 回に制限されます。いずれの場合もリンクは失効するため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間です。値は UNIX タイムスタンプ (秒) です。 + + + + 生成されたビデオの長さ (秒) です。整数ではなく数値として宣言されているのは、BytePlus の扱いが一貫していないためです。ビデオタスクでは整数秒が返されることが確認されている一方、BytePlus の関連する別のサーフェスでは小数の長さが報告されるため、クライアントは整数値を前提にしてはいけません。BytePlus 自身のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成されたビデオのコンテナ形式 (mp4 または mov) です。`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリはここでこれを返します。BytePlus 自身のフィールドで、そのまま転送されます。 + + + + 生成されたビデオの解像度です (例: `1080p`)。BytePlus 自身のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シードです。BytePlus 自身のフィールドで、succeeded のビデオタスクで返され、そのまま転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間です。値は UNIX タイムスタンプ (秒) です。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず 0 が既定値となります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-mini-260615", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx new file mode 100644 index 000000000..f0aeb03ad --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx @@ -0,0 +1,344 @@ +--- +title: "Dreamina Seedance 2.5 260628 を Comfy Router で使用する" +description: "Comfy Router 経由で byteplus/dreamina-seedance-2-5-260628 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンス。" +sidebarTitle: "Dreamina Seedance 2.5 260628" +translationSourceHash: 8b6f07c0 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx +translationBlockHashes: + "_intro": a9ab3ace + "Quick start": e9d4aa36 + "Schema": d42dc4e9 + "Examples": 718a5264 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-5-260628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-5-260628` の API リファレンスです。このモデルは BytePlus から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP 経由で実行するものです。 + +**モデル ID:** `byteplus/dreamina-seedance-2-5-260628` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-5-260628", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-5-260628", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコード、またはアセット ID。 +オーディオ URL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画を生成するための画像コンテンツ(type が "image_url" の場合) +画像URL: 画像URLにアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータを含みます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して生成するビデオを説明するもの。 + +パラメータ(任意): テキストプロンプトの後に --[parameters] を追加して、ビデオの仕様を制御します: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3~12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1 ~ 2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + 指定可能な値: `text`、`image_url`、`video_url`、`audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみ対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2` ~ `30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600` ~ `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされるモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ず指定する必要があります。プロキシは他の値や省略された値を拒否し、400 を返します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)。幅広い互換性があり、ファイルサイズが小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)。色精度が高く、ポストプロダクションに適していますが、ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`、`mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0、2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしていません。Seedance 2.5 は 480p、720p、1080p をサポートしています。 + + 指定可能な値: `480p`、`720p`、`1080p`、`4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最終フレーム画像を返します。このパラメータを true に設定すると、「ビデオ生成タスクの情報のクエリ」を呼び出すことで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、そのピクセル幅と高さは生成済みビデオと同じであり、ウォーターマークも含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。つまり、先に生成したビデオの最終フレームを次のビデオタスクの最初のフレームとして使用することで、複数の連続したビデオを素早く生成できます。 +false: 生成済みビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するためのシード整数。範囲: [-1, 2^32-1]。-1 を指定するとランダムシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理に使用するサービストランク。Seedance 2.5、2.0、および 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`、`flex` + + + + 生成済みビデオにウォーターマークが含まれるかどうか。 + + +Router が `GET /v2/models/byteplus/dreamina-seedance-2-5-260628/openapi.json` で提供するスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に呼び出しの検証に使用されるドキュメントと同じです。### 出力 + + + ビデオ生成タスク完了後の出力で、出力ビデオのダウンロード URL と、BytePlus が返した場合はそのラストフレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされます。ここにあるその他のフィールドはすべて BytePlus 独自のものです。NULL 許容です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした成功済みのドキュメントでは `content` が存在しないか null になっていることがあります。 + + + + 生成済みビデオのラストフレームのダウンロード URL で、リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像フォーマットを推測しないでください。BytePlus はリクエスト側ではラストフレームを PNG としてドキュメント化していますが、Router は渡されたバイト列をそのまま再ホストし、アップストリームの Content-Type またはコンテンツスニッフから型を判定します。`image/jpeg` は両方が失敗した場合の最後のフォールバックにすぎません。Router はラストフレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間程度のものが返ることがあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 独自の URL が残り、BytePlus はタスクの 24 時間後にそれをクリアします。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + BytePlus が `content` の中にネストして返す場合の、生成済みビデオのコンテナフォーマット (mp4 または mov)。Seedance モデルでは、`content` のトップレベルの兄弟フィールドとして返すことのほうが一般的です。トップレベルの `output_format` フィールドを参照してください。Router はどちらか存在する方を読み取ります。 + + + + 出力ビデオのダウンロード URL。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間程度のものが返ることがあります。再ホストを実行できなかった場合、このフィールドには代わりに BytePlus 独自の URL が残り、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルではダウンロード回数が 100 回に制限されます。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時刻。値は UNIX タイムスタンプ (秒) です。 + + + + 生成済みビデオの再生時間 (秒)。BytePlus がこの点で一貫していないため、整数ではなく number として宣言されています。ビデオタスクが整数秒を返す例が観測される一方、BytePlus の関連サーフェスでは小数の再生時間が報告されているため、クライアントは整数値を前提にしてはいけません。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + エラー情報。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成済みビデオのコンテナフォーマット (mp4 または mov) で、`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリが返すのはこの位置です。BytePlus 独自のフィールドで、そのまま転送されます。 + + + + 生成済みビデオの解像度。例: `1080p`。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シード。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + フォーマット: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時刻。値は UNIX タイムスタンプ (秒) です。 + + + + リクエストのトークン使用量 + + + + モデルが生成したトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens です。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-5-260628", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx b/ja/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx new file mode 100644 index 000000000..be512f3fd --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx @@ -0,0 +1,459 @@ +--- +title: "Seed 2.0 Lite 260228 を Comfy Router で使用する" +description: "Comfy Router 経由で byteplus/seed-2-0-lite-260228 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seed 2.0 Lite 260228" +translationSourceHash: b3883790 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx +translationBlockHashes: + "_intro": 1571ac12 + "Quick start": dd5d6146 + "Schema": c5f06bce + "Examples": 84abd59f +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-lite-260228.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が BytePlus から提供する `byteplus/seed-2-0-lite-260228` のAPIリファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `byteplus/seed-2-0-lite-260228` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-lite-260228", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-lite-260228", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## スキーマ + +### 入力 + + + コンテキストキャッシュの設定。 + + + + true の場合、公開プレフィックスキャッシュのみを作成し、モデルは応答しません。 + + + + 指定可能な値: `enabled`, `disabled` + + + + コンテキストウィンドウを扱いやすい状態に保つために適用されるコンテキスト管理戦略(`clear_thinking`、`clear_tool_uses`)。 + + + + `type` によって判別される単一のコンテキスト編集戦略。 + + + + 保存されたレスポンスとキャッシュが失効する Unix タイムスタンプ(秒、UTC)。範囲は (creation_time, creation_time + 604800]。デフォルト: creation_time + 259200(3日)。 + + + + 追加で含める出力フィールド。現在サポートされているのは `reasoning.encrypted_content`(手動でのマルチターン再利用のための暗号化および圧縮された reasoning)。 + + + + モデルに提供されるテキストコンテンツ、または入力項目のリスト。 + + + + 最初の指示として先頭に付加されるシステム/開発者メッセージ。`caching` とは併用できません。`caching.type` が `enabled` の場合に `instructions` を設定するとエラーが返されます。 + + + + 最大出力トークン数(レスポンス + 思考の連鎖)。 + + + + 範囲: `1` から `10` + + + + モデル ID またはエンドポイント ID。モデル一覧については https://docs.byteplus.com/en/docs/ModelArk/1330310 を、エンドポイント ID については https://docs.byteplus.com/en/docs/ModelArk/1099522 を参照してください。POST /proxy/byteplus/api/v3/responses への直接 v1 呼び出しでは、これを必ず指定する必要があります。プロキシは自身の許可リストにない値、および省略された値を 400 で拒否します。Router は /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを埋めるため、Comfy Router の入力スキーマの `required` リストには含まれず、Router の呼び出し元は省略します。 + + + + 前のレスポンスの ID。マルチターン会話を続けるために使用します。失敗を避けるため、リクエスト間におよそ 100ms を挿入してください。 + + + + 深い思考の作業量を制限します。 + + + + `minimal` は思考を完全に無効にします。`thinking.type = +disabled` の場合、`minimal` のみが許可されます。 + + 指定可能な値: `minimal`, `low`, `medium`, `high` + + + + true の場合、レスポンスは永続化され、マルチターンでの利用のために ID で取得できます。 + + + + 範囲: `0` から `2` + + 形式: `float` + + + + 出力形式の設定。 + + + + `type` によって判別されるテキスト出力形式。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は呼び出し元が指定した JSON Schema に出力を制約します。 + + + + 深い思考モードを制御します。 + + + + `enabled`: 応答する前に常に推論します。 +`disabled`: 追加の推論なしで応答します。 +`auto`: モデルがクエリごとに判断します。 + + 指定可能な値: `enabled`, `disabled`, `auto` + + + + ツール選択モード。このフィールドは seed-1-6 モデルのみがサポートしています。 + + + + モデルが呼び出せるツール。現在は `function` のみがサポートされています。 + + + + + + + + + + + + 関数のパラメータを記述する JSON Schema。 + + + + 指定可能な値: `function` + + + + 範囲: `0` から `1` + + 形式: `float` + + +Router が `GET /v2/models/byteplus/seed-2-0-lite-260228/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。### 出力 + + + + + + + + + + + 指定可能な値: `enabled`、`disabled` + + + + このレスポンスで実際に適用されたコンテキスト管理戦略。戦略を構成するリクエスト側の `BytePlusResponseContextManagement` とは異なり、これはサーバーが呼び出した戦略を、クリアされた内容の件数とともにそのまま返します。 + + + + `type` で判別される、適用された 1 件のコンテキスト編集。 + + + + レスポンスが作成された Unix タイムスタンプ(秒)。 + + + + エラーの詳細。レスポンスが成功した場合は null。 + + + + + + + + + + + + 保存されたレスポンスが失効する Unix タイムスタンプ(秒)。 + + + + レスポンスの一意な ID。会話を続けるには `previous_response_id` として使用します。 + + + + `status` が `incomplete` の場合に設定されます。 + + + + 例: `max_output_tokens`、`content_filter`。 + + + + リクエストの `instructions` フィールドをそのまま返したもの。 + + + + + + + + + + + + + + + + レスポンスを生成したモデル ID。 + + + + 指定可能な値: `response` + + + + モデルが生成した、順序付けられた出力項目。 + + + + + + + + + + + + 指定可能な値: `minimal`、`low`、`medium`、`high` + + + + TPM 保証パッケージの使用状況。`default` はなしを意味します。 + + 指定可能な値: `default` + + + + 指定可能な値: `in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + フォーマット: `float` + + + + リクエストの `text` フィールドをそのまま返したもの。 + + + + `type` で判別されるテキスト出力フォーマット。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は呼び出し元が指定した JSON Schema に出力を制約します。 + + + + + + + + 指定可能な値: `enabled`、`disabled`、`auto` + + + + + + + + モデルが呼び出せるツール。現在は `function` のみがサポートされています。 + + + + + + + + + + + + 関数のパラメータを記述した JSON Schema。 + + + + 指定可能な値: `function` + + + + フォーマット: `float` + + + + 課金と可観測性のためのトークン使用量の内訳。 + + + + リクエスト内の合計トークン数。 + + + + 入力トークンの内訳(キャッシュヒットなど)。 + + + + コンテキストキャッシュから提供されたトークン。 + + + + モデルが生成した合計トークン数。 + + + + 出力トークンの内訳(推論など)。 + + + + チェーン・オブ・ソートで消費されたトークン。 + + + + ツールごとの呼び出し回数。 + + + + 画像処理ツールの呼び出し回数。 + + + + MCP ツールの呼び出し回数。 + + + + Web 検索ツールの呼び出し回数。 + + + + サブツールの呼び出し回数の、ツールごとの内訳。 + + 例: `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例: `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例: `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-lite-260228", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx b/ja/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx new file mode 100644 index 000000000..f8cd6ebfe --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx @@ -0,0 +1,459 @@ +--- +title: "Comfy Router で Seed 2.0 Mini 260215 を使用する" +description: "Comfy Router 経由で byteplus/seed-2-0-mini-260215 を呼び出します。endpoint、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seed 2.0 Mini 260215" +translationSourceHash: d31f55eb +translationFrom: development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx +translationBlockHashes: + "_intro": 8913ff52 + "Quick start": a6214085 + "Schema": 81ae34b2 + "Examples": 023957a5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-mini-260215.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-2-0-mini-260215` の API リファレンス。BytePlus から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `byteplus/seed-2-0-mini-260215` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-mini-260215", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-mini-260215", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## スキーマ + +### 入力 + + + コンテキストキャッシュの設定。 + + + + true の場合、公開プレフィックスキャッシュのみを作成し、モデルは応答しません。 + + + + 指定可能な値: `enabled`、`disabled` + + + + コンテキストウィンドウを管理しやすい状態に保つために適用されるコンテキスト管理戦略(`clear_thinking`、`clear_tool_uses`)。 + + + + `type` で判別される単一のコンテキスト編集戦略。 + + + + 保存されたレスポンスとキャッシュが失効する Unix タイムスタンプ(秒、UTC)。範囲は (creation_time, creation_time + 604800]。デフォルト: creation_time + 259200(3日)。 + + + + 含める追加の出力フィールド。現在サポートされているのは `reasoning.encrypted_content`(手動でのマルチターン再利用のための暗号化および圧縮された reasoning)。 + + + + モデルに提供されるテキストコンテンツ、または入力項目のリスト。 + + + + 最初の指示として先頭に付加されるシステム/開発者メッセージ。`caching` とは互換性がありません。`caching.type` が `enabled` の場合に `instructions` を設定するとエラーが返されます。 + + + + 出力トークンの最大数(レスポンス + 思考の連鎖)。 + + + + 範囲: `1` から `10` + + + + モデル ID またはエンドポイント ID。モデル一覧は https://docs.byteplus.com/en/docs/ModelArk/1330310、エンドポイント ID は https://docs.byteplus.com/en/docs/ModelArk/1099522 を参照してください。POST /proxy/byteplus/api/v3/responses への直接の v1 呼び出しでは、これを必ず指定する必要があります。プロキシは自身の許可リストにない値、および省略された値を 400 で拒否します。Comfy Router の入力スキーマの `required` リストには含まれていません。これは Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。 + + + + 前のレスポンスの ID。マルチターン会話を続けるために使用します。失敗を避けるため、リクエスト間に約100ms を挿入してください。 + + + + 深い思考のワークロードを制限します。 + + + + `minimal` は思考を完全に無効にします。`thinking.type = +disabled` の場合、`minimal` のみが許可されます。 + + 指定可能な値: `minimal`、`low`、`medium`、`high` + + + + true の場合、レスポンスは永続化され、マルチターンで使用するために ID で取得できます。 + + + + 範囲: `0` から `2` + + 形式: `float` + + + + 出力形式の設定。 + + + + `type` で判別されるテキスト出力形式。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は出力を呼び出し元が提供する JSON Schema に制約します。 + + + + 深い思考モードを制御します。 + + + + `enabled`: 応答する前に常に推論します。 +`disabled`: 追加の推論を行わずに応答します。 +`auto`: モデルがクエリごとに判断します。 + + 指定可能な値: `enabled`、`disabled`、`auto` + + + + ツール選択モード。このフィールドをサポートするのは seed-1-6 モデルのみです。 + + + + モデルが呼び出せるツール。現在サポートされているのは `function` のみです。 + + + + + + + + + + + + 関数のパラメータを記述する JSON Schema。 + + + + 指定可能な値: `function` + + + + 範囲: `0` から `1` + + 形式: `float` + + +`GET /v2/models/byteplus/seed-2-0-mini-260215/openapi.json` で Router が提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に、Router が呼び出しを検証するのと同じドキュメントです。### 出力 + + + + + + + + + + + 指定可能な値: `enabled`、`disabled` + + + + このレスポンス中に実際に適用されたコンテキスト管理戦略。戦略を構成するリクエスト側の `BytePlusResponseContextManagement` とは異なり、こちらはサーバーが呼び出した戦略と、クリアされた内容の件数をそのまま返します。 + + + + 適用された 1 件のコンテキスト編集。`type` によって判別されます。 + + + + レスポンスが作成された Unix タイムスタンプ(秒)。 + + + + エラーの詳細。レスポンスが成功した場合は null。 + + + + + + + + + + + + 保存されたレスポンスが失効する Unix タイムスタンプ(秒)。 + + + + レスポンスの一意な ID。会話を続けるには `previous_response_id` として使用します。 + + + + `status` が `incomplete` の場合に設定されます。 + + + + 例: `max_output_tokens`、`content_filter`。 + + + + リクエストの `instructions` フィールドのエコー。 + + + + + + + + + + + + + + + + レスポンスを生成したモデル ID。 + + + + 指定可能な値: `response` + + + + モデルが生成した順序付きの出力項目。 + + + + + + + + + + + + 指定可能な値: `minimal`、`low`、`medium`、`high` + + + + TPM 保証パッケージの使用状況。`default` は使用なしを意味します。 + + 指定可能な値: `default` + + + + 指定可能な値: `in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + 形式: `float` + + + + リクエストの `text` フィールドのエコー。 + + + + `type` によって判別されるテキスト出力形式。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は呼び出し元が指定した JSON Schema に出力を制約します。 + + + + + + + + 指定可能な値: `enabled`、`disabled`、`auto` + + + + + + + + モデルが呼び出せるツール。現在は `function` のみがサポートされています。 + + + + + + + + + + + + 関数のパラメータを記述する JSON Schema。 + + + + 指定可能な値: `function` + + + + 形式: `float` + + + + 課金と可観測性のためのトークン使用量の内訳。 + + + + リクエスト内の合計トークン数。 + + + + 入力トークンの内訳(キャッシュヒットなど)。 + + + + コンテキストキャッシュから提供されたトークン数。 + + + + モデルが生成した合計トークン数。 + + + + 出力トークンの内訳(推論など)。 + + + + チェーンオブソートで消費されたトークン数。 + + + + ツールごとの呼び出し回数。 + + + + 画像処理ツールの呼び出し回数。 + + + + MCP ツールの呼び出し回数。 + + + + Web 検索ツールの呼び出し回数。 + + + + サブツール呼び出し回数のツール別内訳。 + + 例: `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例: `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例: `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-mini-260215", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx b/ja/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx new file mode 100644 index 000000000..2238e3b89 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx @@ -0,0 +1,459 @@ +--- +title: "Comfy Router で Seed 2.0 Pro 260328 を使う" +description: "Comfy Router 経由で byteplus/seed-2-0-pro-260328 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seed 2.0 Pro 260328" +translationSourceHash: 66dabb87 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx +translationBlockHashes: + "_intro": 3395e7cc + "Quick start": c2770ef5 + "Schema": 93899ca4 + "Examples": e3b39a19 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-pro-260328.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-2-0-pro-260328` の API リファレンスです。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `byteplus/seed-2-0-pro-260328` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-pro-260328", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-pro-260328", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## スキーマ + +### 入力 + + + コンテキストキャッシュの設定。 + + + + true の場合、公開プレフィックスキャッシュのみを作成し、モデルは応答しません。 + + + + 指定可能な値: `enabled`, `disabled` + + + + コンテキストウィンドウを管理しやすい状態に保つために適用されるコンテキスト管理戦略(`clear_thinking`、`clear_tool_uses`)。 + + + + `type` によって判別される単一のコンテキスト編集戦略。 + + + + 保存された応答とキャッシュが失効する Unix タイムスタンプ(秒、UTC)。範囲 (creation_time, creation_time + 604800]。デフォルト: creation_time + 259200(3 日)。 + + + + 追加で含める出力フィールド。現在サポートされているのは `reasoning.encrypted_content`(手動でのマルチターン再利用のための暗号化および圧縮された reasoning)のみです。 + + + + モデルに提供されるテキストコンテンツ、または入力項目のリスト。 + + + + 最初の指示として先頭に付加されるシステム/開発者メッセージ。`caching` とは互換性がありません。`caching.type` が `enabled` の場合に `instructions` を設定するとエラーが返されます。 + + + + 最大出力トークン数(応答 + 思考の連鎖)。 + + + + 範囲: `1` から `10` + + + + モデル ID またはエンドポイント ID。モデル一覧については https://docs.byteplus.com/en/docs/ModelArk/1330310 、エンドポイント ID については https://docs.byteplus.com/en/docs/ModelArk/1099522 を参照してください。POST /proxy/byteplus/api/v3/responses への直接の v1 呼び出しでは必ず指定する必要があります。プロキシは自身の許可リストにない値、および省略された値を 400 で拒否します。Comfy Router の入力スキーマの `required` リストには含まれていません。これは Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから値を埋めるためで、Router の呼び出し元は省略します。 + + + + マルチターン会話を続けるために使用する、前の応答の ID。失敗を避けるため、リクエスト間に約 100ms の間隔を挿入してください。 + + + + 深い思考のワークロードを制限します。 + + + + `minimal` は思考を完全に無効にします。`thinking.type = disabled` の場合、`minimal` のみが許可されます。 + + 指定可能な値: `minimal`, `low`, `medium`, `high` + + + + true の場合、応答は永続化され、マルチターンで利用するために ID で取得できます。 + + + + 範囲: `0` から `2` + + 形式: `float` + + + + 出力形式の設定。 + + + + `type` によって判別されるテキスト出力形式。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は呼び出し元が指定した JSON Schema に出力を制約します。 + + + + 深い思考モードを制御します。 + + + + `enabled`: 応答する前に常に推論します。 +`disabled`: 追加の推論なしで応答します。 +`auto`: モデルがクエリごとに判断します。 + + 指定可能な値: `enabled`, `disabled`, `auto` + + + + ツール選択モード。このフィールドをサポートするのは seed-1-6 モデルのみです。 + + + + モデルが呼び出せるツール。現在サポートされているのは `function` のみです。 + + + + + + + + + + + + 関数のパラメータを記述する JSON Schema。 + + + + 指定可能な値: `function` + + + + 範囲: `0` から `1` + + 形式: `float` + + +`GET /v2/models/byteplus/seed-2-0-pro-260328/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + + + + + + + + + 指定可能な値: `enabled`、`disabled` + + + + このレスポンスで実際に適用されたコンテキスト管理戦略。戦略を設定するリクエスト側の `BytePlusResponseContextManagement` とは異なり、これはサーバーが呼び出した戦略を、クリアされた内容の件数とともに返します。 + + + + 適用されたコンテキスト編集1件。`type` によって判別されます。 + + + + レスポンスが作成された Unix タイムスタンプ(秒)。 + + + + エラーの詳細。レスポンスが成功した場合は null。 + + + + + + + + + + + + 保存されたレスポンスが期限切れになる Unix タイムスタンプ(秒)。 + + + + レスポンスの一意な ID。会話を続けるには `previous_response_id` として使用します。 + + + + `status` が `incomplete` の場合に設定されます。 + + + + 例: `max_output_tokens`、`content_filter`。 + + + + リクエストの `instructions` フィールドのエコー。 + + + + + + + + + + + + + + + + レスポンスを生成したモデル ID。 + + + + 指定可能な値: `response` + + + + モデルが生成した順序付けられた出力項目。 + + + + + + + + + + + + 指定可能な値: `minimal`、`low`、`medium`、`high` + + + + TPM 保証パッケージの使用状況。`default` はなしを意味します。 + + 指定可能な値: `default` + + + + 指定可能な値: `in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + フォーマット: `浮動小数点` + + + + リクエストの `text` フィールドのエコー。 + + + + `type` によって判別されるテキスト出力フォーマット。`text` は自然言語を返し、`json_object` は自由形式の JSON オブジェクトを返し、`json_schema` は呼び出し元が指定した JSON Schema に出力を制約します。 + + + + + + + + 指定可能な値: `enabled`、`disabled`、`auto` + + + + + + + + モデルが呼び出せるツール。現在は `function` のみがサポートされています。 + + + + + + + + + + + + 関数のパラメータを記述する JSON Schema。 + + + + 指定可能な値: `function` + + + + フォーマット: `浮動小数点` + + + + 課金と可観測性のためのトークン使用量の内訳。 + + + + リクエスト内の合計トークン数。 + + + + 入力トークンの内訳(キャッシュヒットなど)。 + + + + コンテキストキャッシュから提供されたトークン。 + + + + モデルが生成した合計トークン数。 + + + + 出力トークンの内訳(reasoning など)。 + + + + 思考の連鎖(chain-of-thought)によって消費されたトークン。 + + + + ツールごとの呼び出し回数。 + + + + 画像処理ツールの呼び出し回数。 + + + + MCP ツールの呼び出し回数。 + + + + Web 検索ツールの呼び出し回数。 + + + + サブツールの呼び出し回数のツールごとの内訳。 + + 例: `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例: `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例: `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-pro-260328", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx b/ja/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx new file mode 100644 index 000000000..fbbd2860b --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx @@ -0,0 +1,275 @@ +--- +title: "Comfy Router で Seed Audio 1.0 Multilingual を使用する" +description: "Comfy Router 経由で byteplus/seed-audio-1.0-multilingual を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seed Audio 1.0 Multilingual" +translationSourceHash: 2ecb3379 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx +translationBlockHashes: + "_intro": 0936b282 + "Quick start": 2edf8519 + "Schema": 5e381884 + "Examples": be556f45 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-audio-1.0-multilingual.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-audio-1.0-multilingual` の API リファレンスです。Comfy Router が BytePlus から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP による同じ呼び出しです。 + +**モデル ID:** `byteplus/seed-audio-1.0-multilingual` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0-multilingual", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0-multilingual", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## スキーマ + +### 入力 + + + 出力オーディオの設定。 + + + + 字幕サービスを有効にするかどうか。有効にすると、レスポンスに発話単位および単語単位のタイムスタンプが含まれます(デフォルト: false)。 + + + + 出力オーディオ形式: wav(デフォルト)、mp3、pcm、または ogg_opus。 + + 指定可能な値: `wav`、`mp3`、`pcm`、`ogg_opus` + + + + -50 から 100。100 は 2.0 倍の音量、-50 は 0.5 倍の音量を意味します(デフォルト: 0)。 + + 範囲: `-50` から `100` + + + + -12 から 12(デフォルト: 0)。 + + 範囲: `-12` から `12` + + + + 出力サンプルレート: 8000、16000、24000(デフォルト)、32000、44100、または 48000。 + + 指定可能な値: `8000`、`16000`、`24000`、`32000`、`44100`、`48000` + + + + -50 から 100。100 は 2.0 倍の速度、-50 は 0.5 倍の速度を意味します(デフォルト: 0)。 + + 範囲: `-50` から `100` + + + + モデル識別子。対応モデル: seed-audio-1.0 および seed-audio-1.0-multilingual。POST /proxy/byteplus/api/v3/tts/create への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシはそれ以外の値や省略された値を 400 で拒否します。これがこのスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元は省略します。 + + + + 参照リソース。テキストのみの生成では省略します。最大 3 つのオーディオ参照(それぞれ最大 30 秒、デコード後 10 MB。wav、mp3、pcm、または ogg_opus)、または正確に 1 つの画像参照(デコード後最大 10 MB。jpeg、png、または webp)。画像参照とオーディオ参照は混在できません。これらの上限は BytePlus によるもので、デコード後のバイト数で示されています。base64 はアセットを約 4/3 に膨張させ、Comfy Router の呼び出しは JSON ドキュメント全体で 10 MiB に制限されるため、/v2/models/byteplus/\{model} に送信するインラインの `audio_data`/`image_data` 参照は、デコード後でおよそ 7.5 MB 未満に抑える必要があります。それより大きいものには `audio_url`/`image_url` を使用してください。インライン化された場合、BytePlus 自身の 10 MB 上限に達する参照は、検証が実行される前に 413 で拒否されます。 + + + + Base64 エンコードされた参照オーディオ。 + + + + リモート参照オーディオファイルの URL。 + + + + Base64 エンコードされた参照画像。 + + + + リモート参照画像の URL。 + + + + ボイス ID。対応する Doubao TTS ボイス、またはボイスクローン ID を指定できます。 + + + + 合成するプロンプトまたはテキスト(1 ~ 3,000 文字。空文字列は拒否されます)。オーディオ参照を指定した場合は、@Audio1、@Audio2、@Audio3 を使って順番に参照します。 + + + + ウォーターマーク設定オブジェクト。空のオブジェクトも受け付けられます。 + + + + 暗黙的なウォーターマーク。合成されたオーディオのヘッダーにメタデータを追加します。 + + + + 合成サービスプロバイダーの名前またはコード。 + + + + コンテンツ配信サービスプロバイダーの名前またはコード。 + + + + 暗黙的なウォーターマークを有効にするかどうか(デフォルト: false)。 + + + + コンテンツ制作 ID。 + + + + コンテンツ配信 ID。 + + + + 明示的なウォーターマークの切り替え。合成されたオーディオの末尾にオーディオリズムマーカーを追加します(デフォルト: false)。 + + +これは Router が `GET /v2/models/byteplus/seed-audio-1.0-multilingual/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + 生成済みのオーディオデータ。Base64 でエンコードされています。 + + + + ステータスコード。詳細は公式のエラーコードドキュメントを参照してください。 + + + + 速度変更または後処理後の再生時間(秒)。 + + フォーマット: `double` + + + + ステータスの詳細。 + + + + モデルが元々出力した再生時間(秒)。課金に使用され、上限は 120 秒です。 + + フォーマット: `double` + + + + オーディオの字幕情報。リクエストで audio_config.enable_subtitle が true に設定されている場合にのみ含まれます。 + + + + 発話単位の字幕情報。 + + + + セグメントの終了時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの開始時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの完全なテキスト。 + + + + オーディオに対応する字幕テキスト。 + + + + 単語単位の字幕情報。 + + + + セグメントの終了時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの開始時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの完全なテキスト。 + + + + 一時的なオーディオ URL。2 時間有効です。 + + +## 例 + +### 入力 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 出力 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx b/ja/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx new file mode 100644 index 000000000..9bc16910c --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx @@ -0,0 +1,274 @@ +--- +title: "Comfy Router で Seed Audio 1.0 を使用する" +description: "Comfy Router 経由で byteplus/seed-audio-1.0 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seed Audio 1.0" +translationSourceHash: 1971dfe6 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx +translationBlockHashes: + "_intro": 8371b803 + "Quick start": 20fc3b16 + "Schema": c8c3aa89 + "Examples": be556f45 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/byteplus/seed-audio-1.0.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が BytePlus から提供する `byteplus/seed-audio-1.0` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `byteplus/seed-audio-1.0` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## Schema + +### 入力 + + + 出力オーディオ設定。 + + + + 字幕サービスを有効にするかどうか。有効にすると、レスポンスに発話単位および単語単位のタイムスタンプが含まれます(デフォルト: false)。 + + + + 出力オーディオ形式: wav(デフォルト)、mp3、pcm または ogg_opus。 + + 指定可能な値: `wav`、`mp3`、`pcm`、`ogg_opus` + + + + -50 から 100。100 は 2.0 倍の音量、-50 は 0.5 倍の音量を意味します(デフォルト: 0)。 + + 範囲: `-50` から `100` + + + + -12 から 12(デフォルト: 0)。 + + 範囲: `-12` から `12` + + + + 出力サンプルレート: 8000、16000、24000(デフォルト)、32000、44100 または 48000。 + + 指定可能な値: `8000`、`16000`、`24000`、`32000`、`44100`、`48000` + + + + -50 から 100。100 は 2.0 倍の速度、-50 は 0.5 倍の速度を意味します(デフォルト: 0)。 + + 範囲: `-50` から `100` + + + + モデル識別子。サポートされるモデル: seed-audio-1.0 および seed-audio-1.0-multilingual。POST /proxy/byteplus/api/v3/tts/create への直接の v1 呼び出しでは必ず指定する必要があります。プロキシはそれ以外の値を拒否し、省略された場合も 400 で拒否します。このスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。 + + + + 参照リソース。テキストのみの生成では省略します。最大 3 件のオーディオ参照(それぞれ最大 30 秒、デコード後 10 MB。wav、mp3、pcm または ogg_opus)、またはちょうど 1 件の画像参照(デコード後最大 10 MB。jpeg、png または webp)を指定できます。画像参照とオーディオ参照は混在できません。これらの上限は BytePlus のもので、デコード後のバイト数で示されています。base64 はアセットを約 4/3 に膨らませ、また Comfy Router の呼び出しは JSON ドキュメント全体で 10 MiB に制限されるため、/v2/models/byteplus/\{model} に送るインラインの `audio_data`/`image_data` 参照は、デコード後でおよそ 7.5 MB 未満に収める必要があります。それより大きいものには `audio_url`/`image_url` を使用してください。BytePlus 自身の上限である 10 MB の参照をインラインで送ると、検証が実行される前に 413 で拒否されます。 + + + + Base64 でエンコードされた参照オーディオ。 + + + + リモートの参照オーディオファイルの URL。 + + + + Base64 でエンコードされた参照画像。 + + + + リモートの参照画像の URL。 + + + + ボイス ID。サポートされている Doubao TTS のボイス、または音声クローンのボイス ID を指定できます。 + + + + 合成するプロンプトまたはテキスト(1〜3,000 文字。空の文字列は拒否されます)。オーディオ参照を指定した場合は、@Audio1、@Audio2、@Audio3 を使って順番に参照します。 + + + + 透かし設定オブジェクト。空のオブジェクトも受け付けられます。 + + + + 暗黙的な透かし。合成されたオーディオのヘッダーにメタデータを追加します。 + + + + 合成サービスプロバイダーの名前またはコード。 + + + + コンテンツ配信サービスプロバイダーの名前またはコード。 + + + + 暗黙的な透かしを有効にするかどうか(デフォルト: false)。 + + + + コンテンツ制作 ID。 + + + + コンテンツ配信 ID。 + + + + 明示的な透かしの切り替え。合成されたオーディオの末尾にオーディオリズムのマーカーを追加します(デフォルト: false)。 + + +Router が `GET /v2/models/byteplus/seed-audio-1.0/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するドキュメントと同じものです。### 出力 + + + 生成済みのオーディオデータ。Base64でエンコードされています。 + + + + ステータスコード。詳細は公式のエラーコードドキュメントを参照してください。 + + + + 速度変更または後処理後の再生時間(秒)。 + + 形式: `double` + + + + ステータスの詳細。 + + + + オリジナルのモデル出力の再生時間(秒)。課金に使用され、120秒が上限です。 + + 形式: `double` + + + + オーディオの字幕情報。リクエストで audio_config.enable_subtitle が true に設定されている場合のみ存在します。 + + + + 発話単位の字幕情報。 + + + + セグメントの終了時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの開始時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの完全なテキスト。 + + + + オーディオに対応する字幕テキスト。 + + + + 単語単位の字幕情報。 + + + + セグメントの終了時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの開始時間。オーディオの先頭からのミリ秒単位。 + + + + セグメントの完全なテキスト。 + + + + 一時的なオーディオURL。2時間有効です。 + + +## 例 + +### 入力 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 出力 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx b/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx new file mode 100644 index 000000000..c3b4320b2 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx @@ -0,0 +1,346 @@ +--- +title: "Comfy Router で Seedance 1.0 Lite I2V 250428 を使用する" +description: "Comfy Router 経由で byteplus/seedance-1-0-lite-i2v-250428 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンス。" +sidebarTitle: "Seedance 1.0 Lite I2V 250428" +translationSourceHash: 90148920 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx +translationBlockHashes: + "_intro": 66c320e8 + "Quick start": 3e9c0d27 + "Schema": 0dd61406 + "Examples": d126be96 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-lite-i2v-250428.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-lite-i2v-250428` の API リファレンスです。このモデルは Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `byteplus/seedance-1-0-lite-i2v-250428` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-i2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-i2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応しているのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できません。少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコーディング、またはアセット ID。 +オーディオ URL: オーディオの公開 URL (wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画への生成のための画像コンテンツ (type が "image_url" の場合) +画像URL: 画像URLにアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video (Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio (Seedance 2.5、2.0、2.0 fast のみ)。 + + 取り得る値: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータを含みます。 + +テキストプロンプト (必須): 中国語および英語の文字を使用して生成するビデオの説明。 + +パラメータ (任意): テキストプロンプトの後に --[パラメータ] を追加してビデオの仕様を制御します: +- --resolution (--rs): 480p、720p、1080p (デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive (デフォルト: 16:9 または adaptive) +- --duration (--dur): 3~12 秒 (デフォルト: 5) +- --framepersecond (--fps): 24 (デフォルト: 24) +- --watermark (--wm): true/false (デフォルト: false) +- --seed (--seed): -1 ~ 2^32-1 (デフォルト: -1) +- --camerafixed (--cf): true/false (デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツの種類 + + 取り得る値: `text`, `image_url`, `video_url`, `audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応しているのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL (mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間 (秒)。Seedance 2.5: [4,30] または -1 (自動。ビデオ編集タスクは -1 のみ対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1 (自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2` ~ `30` + + + + タスクのタイムアウトしきい値 (秒)。デフォルト 172800 (48h)。範囲: [3600, 259200]。 + + 範囲: `3600` ~ `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされているモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。直接 v1 で POST /proxy/byteplus/api/v3/contents/generations/tasks を呼び出す場合は必ずこれを指定する必要があります。proxy は他の値や省略された値を受け付けず、400 を返します。これはこのスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ (H.264/AAC、yuv420p) で、幅広い互換性とより小さいファイルサイズ。 +mov: プロフェッショナル向けコンテナ (H.264 High 4:4:4 Predictive/PCM、yuv444p) で高い色精度を持ち、ポストプロダクションに適しています。ファイルサイズはより大きくなります。 + + 取り得る値: `mp4`, `mov` + + + + 生成されるビデオの比率。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 取り得る値: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしていません。Seedance 2.5 は 480p、720p、1080p をサポートしています。 + + 取り得る値: `480p`, `720p`, `1080p`, `4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。 +true: 生成済みビデオの最終フレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報をクエリすることで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、ピクセル幅と高さは生成済みビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成したビデオの最終フレームを次のビデオタスクの最初のフレームとして使用することで、複数の連続したビデオを素早く生成できます。 +false: 生成済みビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するシード整数。範囲: [-1, 2^32-1]。-1 はランダムシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理のためのサービステア。Seedance 2.5、2.0、2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`, `flex` + + + + 生成済みビデオにウォーターマークが含まれるかどうか。 + + +`GET /v2/models/byteplus/seedance-1-0-lite-i2v-250428/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + ビデオ生成タスクの完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返す場合はそのラストフレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされます。ここにあるその他のフィールドはすべて BytePlus 自身のものです。null 許容です: BytePlus はタスクの 24 時間後に URL をクリアするため、その後ポーリングした成功済みドキュメントでは `content` が存在しないか null である可能性があります。 + + + + 生成済みビデオのラストフレームのダウンロード URL です。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像フォーマットを推測しないでください: BytePlus はリクエスト側でラストフレームを PNG としてドキュメント化していますが、Router は渡されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフィングから型を判定します。`image/jpeg` はそのどちらも失敗した場合の最後の手段のフォールバックにすぎません。Router はラストフレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返る可能性があります。再ホストを実行できなかった場合、このフィールドは代わりに BytePlus 自身の URL を保持しますが、BytePlus はタスクの 24 時間後にそれをクリアします。いずれにせよリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成済みビデオのコンテナフォーマット(mp4 または mov)です。BytePlus が `content` の内部にネストする場合に返されます。Seedance モデルではこれを `content` のトップレベルの兄弟として返すことがより一般的です(トップレベルの `output_format` フィールドを参照)。Router は存在するほうを読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返る可能性があります。再ホストを実行できなかった場合、このフィールドは代わりに BytePlus 自身の URL を保持しますが、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルでは 100 回のダウンロードに制限しています。いずれにせよリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + 生成済みビデオの再生時間(秒)です。BytePlus がこれを一貫して扱っていないため、整数ではなく数値として宣言されています。ビデオタスクでは整数秒が返される一方、BytePlus の他のサーフェスでは小数の再生時間が報告されることが観察されているため、クライアントは整数値を前提にしてはいけません。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成済みビデオのコンテナフォーマット(mp4 または mov)です。`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリはここでこれを返します。BytePlus 自身のフィールドで、そのまま転送されます。 + + + + 生成済みビデオの解像度(例: `1080p`)です。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シードです。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + フォーマット: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens です。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-i2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx b/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx new file mode 100644 index 000000000..bfbad44ca --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router で Seedance 1.0 Lite T2V 250428 を使用する" +description: "Comfy Router 経由で byteplus/seedance-1-0-lite-t2v-250428 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedance 1.0 Lite T2V 250428" +translationSourceHash: 25d0588b +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx +translationBlockHashes: + "_intro": a1ec32a9 + "Quick start": bd072989 + "Schema": 060399d4 + "Examples": 7c3591f8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/byteplus/seedance-1-0-lite-t2v-250428.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-lite-t2v-250428` の API リファレンスです。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは生の HTTP 経由で同じ呼び出しを行います。 + +**Model ID:** `byteplus/seedance-1-0-lite-t2v-250428` + +**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-t2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-t2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコード、またはアセット ID。 +オーディオ URL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画を生成するための画像コンテンツ(type が "image_url" の場合) +画像 URL: 画像 URL にアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータを含みます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して生成するビデオを記述します。 + +パラメータ(任意): テキストプロンプトの後に --[parameters] を追加すると、ビデオの仕様を制御できます: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3~12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1~2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツの種類 + + 指定可能な値: `text`、`image_url`、`video_url`、`audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの長さ(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみ対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2`~`30` + + + + タスクのタイムアウトしきい値(秒)。デフォルトは 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600`~`259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされているモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への v1 直接呼び出しでは必ず指定する必要があります。プロキシはそれ以外の値や省略された値を 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから設定するためであり、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)。幅広い互換性があり、ファイルサイズも小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)。色精度が高くポストプロダクションに適しますが、ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`、`mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p に対応していません。Seedance 2.5 は 480p、720p、1080p に対応しています。 + + 指定可能な値: `480p`、`720p`、`1080p`、`4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最後のフレーム画像を返します。このパラメータを true に設定すると、「ビデオ生成タスクの情報を照会する」を呼び出すことで最後のフレーム画像を取得できます。最後のフレーム画像は PNG 形式で、ピクセル単位の幅と高さは生成済みビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成したビデオの最後のフレームを次のビデオタスクの最初のフレームとして使用することで、複数の連続したビデオをすばやく生成できます。 +false: 生成済みビデオの最後のフレーム画像を返しません。 + + + + ランダム性を制御するためのシード整数。範囲: [-1, 2^32-1]。-1 はランダムなシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理のサービス階層。Seedance 2.5、2.0 & 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`、`flex` + + + + 生成済みビデオにウォーターマークを含めるかどうか。 + + +Router が `GET /v2/models/byteplus/seedance-1-0-lite-t2v-250428/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + ビデオ生成タスク完了後の出力。出力ビデオのダウンロード URL と、BytePlus が返す場合は最後のフレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされており、その他のフィールドはすべて BytePlus 独自のものです。null 許容です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後ポーリングされた succeeded ドキュメントでは `content` が存在しないか null になる可能性があります。 + + + + 生成されたビデオの最後のフレームのダウンロード URL。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側で最後のフレームを PNG としてドキュメント化しており、Router は提供されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフィングから型を決定します。`image/jpeg` は両方失敗した場合の最後のフォールバックにすぎません。Router は最後のフレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間程度のものが返される可能性があります。再ホストを実行できなかった場合、このフィールドは BytePlus 独自の URL を保持します。これは BytePlus がタスクの 24 時間後にクリアします。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成されたビデオのコンテナ形式(mp4 または mov)。BytePlus が `content` 内にネストした場合に返されます。Seedance モデルでは、`content` のトップレベルの兄弟フィールドとして返されることがより一般的です。トップレベルの `output_format` フィールドを参照してください。Router は存在する方のいずれかを読み取ります。 + + + + 出力ビデオのダウンロード URL。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間署名され、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間程度のものが返される可能性があります。再ホストを実行できなかった場合、このフィールドは BytePlus 独自の URL を保持します。BytePlus はタスクの 24 時間後にこれをクリアし、一部のモデルでは 100 ダウンロードに制限しています。いずれにしてもリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間。値は UNIX タイムスタンプ(秒)です。 + + + + 生成されたビデオの再生時間(秒)。BytePlus がこの点で一貫性がないため、整数ではなく数値として宣言されています。ビデオタスクでは秒単位の整数値が返されることが観測されており、兄弟の BytePlus サーフェスでは小数の再生時間が報告されています。そのためクライアントは整数値を仮定してはいけません。BytePlus 独自のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + + + エラー情報。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成されたビデオのコンテナ形式(mp4 または mov)。`content` の兄弟としてトップレベルで返されます。これは Seedance ビデオタスククエリが返す場所です。BytePlus 独自のフィールドで、変更されずに転送されます。 + + + + 生成されたビデオの解像度。例:`1080p`。BytePlus 独自のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + + + タスクで実際に使用された生成シード。BytePlus 独自のフィールドで、成功したビデオタスクで返され、変更されずに転送されます。 + + 形式:`int64` + + + + タスクの状態 + + 可能な値:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間。値は UNIX タイムスタンプ(秒)です。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルの場合、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-t2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx b/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx new file mode 100644 index 000000000..0d7faec19 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router で Seedance 1.0 Pro 250528 を使用する" +description: "Comfy Router 経由で byteplus/seedance-1-0-pro-250528 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedance 1.0 Pro 250528" +translationSourceHash: 662d9fd0 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx +translationBlockHashes: + "_intro": 7a940f76 + "Quick start": e301b36e + "Schema": 0a7ca1d5 + "Examples": 2ace8cc9 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/byteplus/seedance-1-0-pro-250528.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-250528` の API リファレンス。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `byteplus/seedance-1-0-pro-250528` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-250528", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-250528", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単独では使用できません。少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコード、またはアセット ID。 +オーディオ URL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画を生成するための画像コンテンツ(type が "image_url" の場合) +画像 URL: 画像 URL にアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータが含まれます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して生成するビデオを記述します。 + +パラメータ(任意): テキストプロンプトの後に --[parameters] を追加して、ビデオの仕様を制御します: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3~12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1~2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + 指定可能な値: `text`、`image_url`、`video_url`、`audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみ対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2`~`30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600`~`259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされるモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ず指定する必要があります。プロキシは他の値や省略された値を 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから設定するためで、Router の呼び出し側は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)で、幅広い互換性とより小さなファイルサイズを実現します。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)で、色精度が高くポストプロダクションに適していますが、ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`、`mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしていません。Seedance 2.5 は 480p、720p、1080p をサポートしています。 + + 指定可能な値: `480p`、`720p`、`1080p`、`4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最終フレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報を照会するを呼び出すことで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、そのピクセル幅と高さは生成済みビデオと同じであり、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成されたビデオの最終フレームが次のビデオタスクの最初のフレームとして使用され、複数の連続したビデオをすばやく生成できます。 +false: 生成済みビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するシード整数。範囲: [-1, 2^32-1]。-1 はランダムなシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理に使用するサービスティア。Seedance 2.5、2.0、2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`、`flex` + + + + 生成済みビデオにウォーターマークが含まれるかどうか。 + + +`GET /v2/models/byteplus/seedance-1-0-pro-250528/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + ビデオ生成タスクの完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返す場合はその最終フレームのダウンロード URL が含まれます。`video_url` と `last_frame_url` はいずれも Comfy のストレージに再ホストされます。ここにあるその他のフィールドはすべて BytePlus 独自のものです。nullable です。BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした succeeded ドキュメントでは `content` が存在しないか null である可能性があります。 + + + + 生成済みビデオの最終フレームのダウンロード URL です。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側で最終フレームを PNG として扱いますが、Router は渡されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフィングから型を判定します。`image/jpeg` はその両方が失敗した場合の最後のフォールバックにすぎません。Router は最終フレームを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります(発行時に 24 時間の署名が付き、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返ることがあります)。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持しますが、BytePlus はタスクの 24 時間後にそれをクリアします。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成済みビデオのコンテナ形式(mp4 または mov)です。BytePlus が `content` の中にネストして返す場合に含まれます。Seedance モデルでは `content` の最上位の兄弟として返すことのほうが一般的です(最上位の `output_format` フィールドを参照)。Router はどちらか存在する方を読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります(発行時に 24 時間の署名が付き、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかないものが返ることがあります)。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持しますが、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルではダウンロード回数が 100 回に制限されます。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間です。値は UNIX タイムスタンプ(秒単位)です。 + + + + 生成済みビデオの再生時間(秒)です。BytePlus の扱いが一貫していないため、整数ではなく number として宣言されています。ビデオタスクが整数秒を返す一方で、BytePlus の他のサーフェスでは小数の再生時間が報告されることが確認されているため、クライアントは整数値だと仮定してはいけません。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成済みビデオのコンテナ形式(mp4 または mov)で、`content` の兄弟として最上位で返されます。Seedance のビデオタスククエリはここで返します。BytePlus 独自のフィールドで、そのまま転送されます。 + + + + 生成済みビデオの解像度です。たとえば `1080p` です。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シードです。BytePlus 独自のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間です。値は UNIX タイムスタンプ(秒単位)です。 + + + + リクエストのトークン使用量 + + + + モデルが生成したトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-250528", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx b/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx new file mode 100644 index 000000000..70bf04f92 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx @@ -0,0 +1,344 @@ +--- +title: "Seedance 1.0 Pro Fast 251015 を Comfy Router で使用する" +description: "Comfy Router 経由で byteplus/seedance-1-0-pro-fast-251015 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて解説します。" +sidebarTitle: "Seedance 1.0 Pro Fast 251015" +translationSourceHash: fe17d7dd +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx +translationBlockHashes: + "_intro": b414baf3 + "Quick start": 39685b9b + "Schema": dfc9d47b + "Examples": f5cd7d00 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-pro-fast-251015.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-fast-251015` の API リファレンスです。BytePlus から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `byteplus/seedance-1-0-pro-fast-251015` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-fast-251015", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-fast-251015", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知アドレス + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。Seedance 2.0 と 2.0 fast はオーディオ単体では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応しています。 + + + + オーディオ URL、Base64 エンコード、またはアセット ID。 +オーディオ URL: オーディオの公開 URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセット ID: 形式 asset://\ + + + + + + + + 画像から動画への生成に使用する画像コンテンツ(type が "image_url" の場合) +画像 URL: 画像 URL にアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセット ID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータが含まれます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用した、生成するビデオの説明。 + +パラメータ(任意): テキストプロンプトの後に --[parameters] を追加してビデオの仕様を制御します: +- --resolution(--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio(--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration(--dur): 3~12 秒(デフォルト: 5) +- --framepersecond(--fps): 24(デフォルト: 24) +- --watermark(--wm): true/false(デフォルト: false) +- --seed(--seed): -1~2^32-1(デフォルト: -1) +- --camerafixed(--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツのタイプ + + 指定可能な値: `text`、`image_url`、`video_url`、`audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力に対応するのは Seedance 2.5、2.0、2.0 fast のみです。 + + + + ビデオ URL またはアセット ID。 +ビデオ URL: ビデオの公開 URL(mp4、mov)。 +アセット ID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみに対応)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2`~`30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600`~`259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされています。生成されるビデオに映像と同期したオーディオを含めるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルの ID。サポートされているモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシは他の値や省略された値を 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)。幅広い互換性があり、ファイルサイズが小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)。色精度が高く、ポストプロダクションに適していますが、ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`、`mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p に対応していません。Seedance 2.5 は 480p、720p、1080p に対応しています。 + + 指定可能な値: `480p`、`720p`、`1080p`、`4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最後のフレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報の取得を呼び出すことで、最後のフレーム画像を取得できます。最後のフレーム画像は PNG 形式で、ピクセル幅と高さは生成済みビデオと同じであり、透かしは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成したビデオの最後のフレームが次のビデオタスクの最初のフレームとして使用され、複数の連続したビデオをすばやく生成できます。 +false: 生成済みビデオの最後のフレーム画像を返しません。 + + + + ランダム性を制御するためのシード整数。範囲: [-1, 2^32-1]。-1 はランダムシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理のサービス階層。Seedance 2.5、2.0 & 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 指定可能な値: `default`、`flex` + + + + 生成済みビデオに透かしが含まれるかどうか。 + + +Router が `GET /v2/models/byteplus/seedance-1-0-pro-fast-251015/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同じドキュメントです。### 出力 + + + ビデオ生成タスク完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返す場合はその最終フレームのダウンロード URL が含まれます。`video_url` と `last_frame_url` はどちらも Comfy ストレージに再ホストされます。ここに含まれるその他のフィールドはすべて BytePlus 自身のものです。Nullable: BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした succeeded ドキュメントでは `content` が存在しないか null になっていることがあります。 + + + + 生成済みビデオの最終フレームのダウンロード URL です。リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側では最終フレームを PNG として文書化していますが、Router は渡されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフによって型を判定します。`image/jpeg` は両方が失敗した場合の最後の手段のフォールバックにすぎません。Router は最終フレームを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。これは発行時に 24 時間で署名され、23 時間のメモから再送されるため、後でポーリングすると残り 1 時間しかない URL が返ることがあります。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持し、BytePlus はタスクの 24 時間後にそれをクリアします。いずれの場合もリンクは失効するので、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成ビデオのコンテナ形式(mp4 または mov)です。BytePlus がこれを `content` 内にネストする場合に含まれます。Seedance モデルではこれを `content` のトップレベルの兄弟フィールドとして返すことのほうが一般的で(トップレベルの `output_format` フィールドを参照)、Router はどちらか存在する方を読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。これは発行時に 24 時間で署名され、23 時間のメモから再送されるため、後でポーリングすると残り 1 時間しかない URL が返ることがあります。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持し、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルではダウンロード数を 100 回に制限します。いずれの場合もリンクは失効するので、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + 生成ビデオの再生時間(秒)です。BytePlus がこれについて一貫していないため、整数ではなく数値として宣言されています。ビデオタスクでは整数秒が返されることが確認されている一方、BytePlus の関連サーフェスでは小数の再生時間が報告されるため、クライアントは整数値を前提にしてはいけません。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合は、エラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成ビデオのコンテナ形式(mp4 または mov)で、`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリが返すのはここです。BytePlus 自身のフィールドで、そのまま転送されます。 + + + + 生成ビデオの解像度(例: `1080p`)。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シードです。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず、デフォルトで 0 になります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-fast-251015", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx b/ja/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx new file mode 100644 index 000000000..1cfbbafb7 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router で Seedance 1.5 Pro 251215 を使用する" +description: "Comfy Router 経由で byteplus/seedance-1-5-pro-251215 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Seedance 1.5 Pro 251215" +translationSourceHash: 1317f7bd +translationFrom: development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx +translationBlockHashes: + "_intro": c67f4c25 + "Quick start": f31d9e26 + "Schema": 0ba08868 + "Examples": ec5f82bf +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-5-pro-251215.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-5-pro-251215` の API リファレンス。BytePlus から Comfy Router によって提供されます。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `byteplus/seedance-1-5-pro-251215` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-5-pro-251215", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-5-pro-251215", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## スキーマ + +### 入力 + + + この生成タスクの結果を受け取るコールバック通知先 + + 形式: `uri` + + + + モデルがビデオを生成するための入力コンテンツ + + + + 入力オーディオオブジェクト。オーディオ入力は Seedance 2.5、2.0、2.0 fast のみがサポートします。Seedance 2.0 と 2.0 fast はオーディオ単独では使用できず、少なくとも 1 つの画像またはビデオを含める必要があります。Seedance 2.5 はオーディオのみの入力に対応します。 + + + + オーディオURL、Base64 エンコード、またはアセットID。 +オーディオURL: オーディオの公開URL(wav、mp3)。 +Base64: 形式 data:audio/\;base64,\ +アセットID: 形式 asset://\ + + + + + + + + 画像から動画への生成用の画像コンテンツ(type が "image_url" の場合) +画像URL: 画像URLにアクセスできることを確認してください。 +Base64 エンコードされたコンテンツ: 形式は data:image/\;base64,\ である必要があります +アセットID: 形式 asset://\ + + + + コンテンツ項目の役割/位置。 +画像の場合: first_frame、last_frame、または reference_image。 +ビデオの場合: reference_video(Seedance 2.5、2.0、2.0 fast のみ)。 +オーディオの場合: reference_audio(Seedance 2.5、2.0、2.0 fast のみ)。 + + 指定可能な値: `first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + モデルへの入力テキスト情報。テキストプロンプトと任意のパラメータを含みます。 + +テキストプロンプト(必須): 中国語および英語の文字を使用して生成するビデオの説明。 + +パラメータ(任意): ビデオの仕様を制御するには、テキストプロンプトの後に --[パラメータ] を追加します: +- --resolution (--rs): 480p、720p、1080p(デフォルト: 720p) +- --ratio (--rt): 21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(デフォルト: 16:9 または adaptive) +- --duration (--dur): 3〜12 秒(デフォルト: 5) +- --framepersecond (--fps): 24(デフォルト: 24) +- --watermark (--wm): true/false(デフォルト: false) +- --seed (--seed): -1 〜 2^32-1(デフォルト: -1) +- --camerafixed (--cf): true/false(デフォルト: false) + +例: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 入力コンテンツの種類 + + 指定可能な値: `text`、`image_url`、`video_url`、`audio_url` + + + + 入力ビデオオブジェクト。ビデオ入力は Seedance 2.5、2.0、2.0 fast のみがサポートします。 + + + + ビデオURL またはアセットID。 +ビデオURL: ビデオの公開URL(mp4、mov)。 +アセットID: 形式 asset://\ + + + + ビデオの再生時間(秒)。Seedance 2.5: [4,30] または -1(自動。ビデオ編集タスクは -1 のみをサポート)。Seedance 2.0 と 2.0 fast: [4,15] または -1(自動)。Seedance 1.5 pro: [4,12] または -1。Seedance 1.0: [2,12]。 + + 範囲: `2` 〜 `30` + + + + タスクのタイムアウトしきい値(秒)。デフォルト 172800(48 時間)。範囲: [3600, 259200]。 + + 範囲: `3600` 〜 `259200` + + + + Seedance 2.5、2.0、2.0 fast、1.5 pro でサポートされます。生成されるビデオに映像と同期したオーディオが含まれるかどうか。 +true: モデルは同期したオーディオ付きのビデオを出力します。 +false: モデルは無音のビデオを出力します。 + + + + 呼び出すモデルのID。サポートされるモデル: seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini、dreamina-seedance-2-5-260628。POST /proxy/byteplus/api/v3/contents/generations/tasks への直接の v1 呼び出しでは必ず指定する必要があります。プロキシは他の値や省略された値を 400 で拒否します。これはこのスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。 + + + + Seedance 2.5 のみ。出力ビデオのコンテナ形式。 +mp4: 汎用コンテナ(H.264/AAC、yuv420p)。幅広い互換性があり、ファイルサイズは小さくなります。 +mov: プロフェッショナル向けコンテナ(H.264 High 4:4:4 Predictive/PCM、yuv444p)。色精度が高く、ポストプロダクションに適しています。ファイルサイズは大きくなります。 + + 指定可能な値: `mp4`、`mov` + + + + 生成されるビデオのアスペクト比。Seedance 2.0 と 2.0 fast、1.5 pro のデフォルト: adaptive。 + + 指定可能な値: `16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + ビデオの解像度。Seedance 2.5、2.0 と 2.0 fast、1.5 pro、1.0 lite のデフォルト: 720p。Seedance 1.0 pro と pro-fast のデフォルト: 1080p。 +注: Seedance 2.0 と 2.0 fast は 1080p をサポートしません。Seedance 2.5 は 480p、720p、1080p をサポートします。 + + 指定可能な値: `480p`、`720p`、`1080p`、`4k` + + + + 生成されたビデオの最後のフレーム画像を返すかどうか。true: 生成済みビデオの最終フレーム画像を返します。このパラメータを true に設定すると、ビデオ生成タスクの情報の照会を呼び出すことで最終フレーム画像を取得できます。最終フレーム画像は PNG 形式で、そのピクセル幅と高さは生成済みビデオと一致し、ウォーターマークは含まれません。このパラメータを使用すると、複数の連続したビデオを生成できます。先に生成したビデオの最終フレームを次のビデオタスクの最初のフレームとして使用することで、複数の連続したビデオをすばやく生成できます。 +false: 生成済みビデオの最終フレーム画像を返しません。 + + + + ランダム性を制御するシード整数。範囲: [-1, 2^32-1]。-1 はランダムなシードを使用します。 + + 範囲: `-1` から `4294967295` + + + + 処理のサービスティア。Seedance 2.5、2.0 & 2.0 fast は flex(オフライン推論)をサポートしていません。 + + 取り得る値: `default`、`flex` + + + + 生成済みビデオにウォーターマークが含まれるかどうか。 + + +Router が `GET /v2/models/byteplus/seedance-1-5-pro-251215/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用する同じドキュメントです。### 出力 + + + ビデオ生成タスク完了後の出力です。出力ビデオのダウンロード URL と、BytePlus が返す場合はその最終フレームのダウンロード URL を含みます。`video_url` と `last_frame_url` はどちらも Comfy のストレージに再ホストされ、ここにあるそれ以外のフィールドはすべて BytePlus 自身のものです。nullable: BytePlus はタスクの 24 時間後に URL をクリアするため、その後でポーリングした成功済みのドキュメントでは `content` が存在しないか null になっている可能性があります。 + + + + 生成されたビデオの最終フレームのダウンロード URL で、リクエストで `return_last_frame` を設定した場合に返されます。この URL から画像形式を推測しないでください。BytePlus はリクエスト側では最終フレームを PNG としてドキュメント化しており、Router は配信されたバイト列をそのまま再ホストし、上流の Content-Type またはコンテンツスニッフィングから型を判定します。`image/jpeg` はその両方が失敗した場合の最後のフォールバックにすぎません。Router は最終フレームを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。生成時に 24 時間で署名され、23 時間のメモから再利用されるため、後でポーリングすると残り 1 時間しかないものが返ってくることもあります。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持し、BytePlus はタスクの 24 時間後にそれをクリアします。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくフレームをダウンロードしてください。 + + + + 生成されたビデオのコンテナ形式(mp4 または mov)で、BytePlus が `content` の中にネストして返す場合のものです。Seedance のモデルでは、`content` のトップレベルの兄弟として返すことのほうが一般的です。トップレベルの `output_format` フィールドを参照してください。Router は存在するほうの値を読み取ります。 + + + + 出力ビデオのダウンロード URL です。Router はビデオを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。生成時に 24 時間で署名され、23 時間のメモから再利用されるため、後でポーリングすると残り 1 時間しかないものが返ってくることもあります。再ホストを実行できなかった場合、このフィールドは BytePlus 自身の URL を保持し、BytePlus はタスクの 24 時間後にそれをクリアし、一部のモデルではダウンロード回数が 100 回に制限されます。いずれの場合もリンクは期限切れになるため、URL を保存するのではなくビデオをダウンロードしてください。 + + + + タスクが作成された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + 生成されたビデオの再生時間(秒)です。整数ではなく数値として宣言されているのは、BytePlus がこの点で一貫していないためです。ビデオタスクでは整数秒を返すことが確認されている一方、BytePlus の別のサーフェスでは小数の再生時間が報告されているため、クライアントは整数値を前提にしてはいけません。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + エラー情報です。タスクが成功した場合は null が返されます。タスクが失敗した場合はエラー情報が返されます。 + + + + エラーコード + + + + エラーメッセージ + + + + ビデオ生成タスクの ID + + + + タスクで使用されたモデルの名前とバージョン + + + + 生成されたビデオのコンテナ形式(mp4 または mov)で、`content` の兄弟としてトップレベルで返されます。Seedance のビデオタスククエリはここでこれを返します。BytePlus 自身のフィールドで、そのまま転送されます。 + + + + 生成されたビデオの解像度です。例えば `1080p` などです。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + + + タスクで実際に使用された生成シードです。BytePlus 自身のフィールドで、成功したビデオタスクで返され、そのまま転送されます。 + + 形式: `int64` + + + + タスクの状態 + + 取り得る値: `queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + タスクが最後に更新された時間です。値は秒単位の UNIX タイムスタンプです。 + + + + リクエストのトークン使用量 + + + + モデルによって生成されたトークン数 + + + + ビデオ生成モデルでは、入力トークン数は計算されず 0 がデフォルトとなります。したがって、total_tokens = completion_tokens となります。 + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 出力 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-5-pro-251215", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx b/ja/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx new file mode 100644 index 000000000..cd7345dca --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router で Seededit 3.0 I2I 250628 を使用する" +description: "Comfy Router 経由で byteplus/seededit-3-0-i2i-250628 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seededit 3.0 I2I 250628" +translationSourceHash: ac63c117 +translationFrom: development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx +translationBlockHashes: + "_intro": b2e7faed + "Quick start": 133e47db + "Schema": fe63d102 + "Examples": 130ffbde +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seededit-3-0-i2i-250628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seededit-3-0-i2i-250628` の API リファレンスです。Comfy Router が BytePlus から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `byteplus/seededit-3-0-i2i-250628` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seededit-3-0-i2i-250628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seededit-3-0-i2i-250628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に従うかを制御します。範囲は [1, 10] です。値が大きいほどプロンプトへの追従性が強くなります。デフォルトは seedream-3-0-t2i-250415 では 2.5、seededit-3-0-i2i-250628 では 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされません。 + + 範囲: `1` から `10` + + フォーマット: `float` + + + + Seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i はこのパラメータをサポートします。 + +編集する画像の Base64 エンコーディングまたはアクセス可能な URL を入力します。Seedream-5.0-pro、5.0-lite、4.5、4.0 は単一の画像または複数の画像の入力に対応しています(複数画像のブレンド例を参照)。一方、seededit-3.0-i2i は単一画像の入力のみをサポートします。 + +• 画像URL: 画像URLがアクセス可能であることを確認してください。 +• Base64 エンコーディング: 形式は data:image/\;base64,\ である必要があります。注: \ は小文字である必要があります(例: data:image/png;base64,\)。 + +Comfy Router は、base64 の展開とすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送制限を超える入力には URL を使用してください。 + +入力画像は次の要件を満たす必要があります: +• 画像フォーマット: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif もサポート。seedream-5.0-pro はさらに heic、heif もサポート) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16] の範囲。seededit-3.0-i2i では [1/3, 3] +• 幅と高さ(px): > 14 +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition が有効)では、image は必須で、単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB、総ピクセル数は [512x512, 6000x6000] の範囲、アスペクト比は [1/16, 16] の範囲である必要があります。 + + + + レイヤー分離を有効にするかどうかを制御します。このパラメータは seedream-5.0-pro のみがサポートします。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 枚のベース画像と複数のレイヤー(最大 16)に分解し、生成された各レイヤーの位置とコンテンツ情報(重なり順(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description))を返します。 +false: 標準の画像生成モード。レイヤー分離は実行されません。 +レイヤー分離モードに関する注意: 単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。いずれか 1 つのレイヤーの生成に失敗すると、リクエスト全体が失敗します。部分的な成功はサポートされません。返される画像は最大 17 枚(ベース画像 1 枚 + レイヤー 16 枚)です。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーが返ります。 + + + + モデル識別子。サポートされるモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。直接の v1 呼び出し POST /proxy/byteplus/api/v3/images/generations では必ずこれを指定する必要があります。プロキシはそれ以外の値や省略された値を 400 で拒否します。これがこのスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを補完するためで、Router の呼び出し元は省略します。 + + + + プロンプト最適化機能の設定です。このパラメータは seedream-5.0-pro/5.0-lite/4.5(スタンダードモードのみサポート)および seedream-4.0 のみがサポートします。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質ですが生成時間が長くなります。fast = より高速ですが品質は平均的です。 + + 指定可能な値: `standard`、`fast` + + + + 出力画像のフォーマットを指定します。このパラメータは seedream-5.0-pro と 5.0-lite のみがサポートします。レイヤー分離シナリオでは、output_format はベース画像のフォーマットのみを制御し、各レイヤーは常に png で出力されます。 + + 指定可能な値: `png`、`jpeg` + + + + 画像の生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では任意です。プロンプトを指定した場合、モデルはプロンプトの意図に従って指定された要素を認識して分離します。プロンプトを指定しない場合、モデルは画像内の主要な要素をすべて自動的に検出し、独立したレイヤーに分離します。 + + + + レスポンスで返される生成画像のフォーマットを指定します + + 指定可能な値: `url`、`b64_json` + + + + 画像生成のランダム性を制御するシードです。範囲: [-1, 2147483647]。指定しない場合はシードが自動的に生成されます。同じ出力を再現するには、同じシード値を使用してください。 + + 範囲: `-1` から `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 のみでサポートされます(seedream-5.0-pro ではサポートされません)。有効な値: +auto: 自動モードでは、モデルはユーザーのプロンプトに基づいて、複数の画像を返すかどうか、および何枚の画像を含めるかを自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 指定可能な値: `auto`、`disabled` + + + + seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。 +バッチ画像生成機能の設定です。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像数 + 生成画像数 ≤ 15。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲である必要があります。 +"seededit-3-0-i2i-250628": 生成画像の幅と高さのピクセルです。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法が利用可能ですが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法が利用可能です。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法が利用可能です。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法が利用可能です(併用はできません)。 + 方法 1 | 解像度を指定し、プロンプトで画像のアスペクト比、形状、用途を記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +layer_decomposition を有効にした "seedream-5-0-pro-260628": 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、元の入力画像のアスペクト比を保ちながら、指定された解像度で出力されます。各レイヤーは指定された解像度に近いサイズで出力され、元の画像におけるアスペクト比を維持します。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] の範囲内の入力は元の入力サイズで出力され、1K より小さい入力は 1K で出力され、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に固定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。false = すべての出力画像が一度に返されます。true = 各出力画像が生成後すぐに返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 「AI generated」ラベル付きのウォーターマークを追加 + + +Router が `GET /v2/models/byteplus/seededit-3-0-i2i-250628/openapi.json` で提供する schema から生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ(秒単位) + + + + 生成された画像の情報を含みます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像(z_index=0)であり、以降の要素がレイヤーで、z_index の昇順で並びます。 + + + + Base64 エンコードされた画像データ(response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + レイヤーのバウンディングボックスの絶対ピクセル座標。出力ベース画像の座標系で、左上隅が (0, 0) となります。座標の形式: [left, top, right, bottom]。 + + + + レイヤーのバウンディングボックスのパーミル量子化(正規化)座標。ベース画像のサイズに基づいて [0, 1000] の離散的な整数範囲に比例マッピングされ、最大 1000 で打ち切られます。座標の形式: [left, top, right, bottom]。 + + + + 現在の分離された要素の詳細な説明。name よりも豊富なレイヤーの特徴(色、状態、マテリアルなど)を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在の分離された要素の名前/ラベル。分離された被写体の特徴からモデルが自動的に生成します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ(ピクセル単位)。形式は \x\ です。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像ダウンロード用の URL(response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重ね順。下から上に向かって増加します。0 が最下層のレイヤー(ベース画像)で、値が大きいほど上に位置します。レイヤーを正しい重ね順で完全な画像に再構成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報(存在する場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルが生成した画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの総数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seededit-3-0-i2i-250628", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx b/ja/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx new file mode 100644 index 000000000..938145610 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx @@ -0,0 +1,312 @@ +--- +title: "Comfy Router で Seedream 3.0 T2I 250415 を使用する" +description: "Comfy Router 経由で byteplus/seedream-3-0-t2i-250415 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedream 3.0 T2I 250415" +translationSourceHash: 0f41197b +translationFrom: development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx +translationBlockHashes: + "_intro": dafe6167 + "Quick start": 42b1f4f6 + "Schema": c6abe2a5 + "Examples": 61ceb30b +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-3-0-t2i-250415.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-3-0-t2i-250415` の API リファレンスです。このモデルは BytePlus から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行います。 + +**モデル ID:** `byteplus/seedream-3-0-t2i-250415` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-3-0-t2i-250415", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-3-0-t2i-250415", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に従うかを制御します。範囲は [1, 10]。値が大きいほどプロンプトへの追従性が強くなります。seedream-3-0-t2i-250415 ではデフォルト 2.5、seededit-3-0-i2i-250628 では 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされません。 + + 範囲: `1` から `10` + + 形式: `float` + + + + seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i がこのパラメータをサポートします。 + +編集する画像の Base64 エンコーディングまたはアクセス可能な URL を入力します。seedream-5.0-pro、5.0-lite、4.5、4.0 は単一画像または複数画像の入力に対応しています(複数画像のブレンド例を参照)。一方、seededit-3.0-i2i は単一画像の入力のみをサポートします。 + +• 画像URL: 画像URLがアクセス可能であることを確認してください。 +• Base64 エンコーディング: 形式は data:image/\;base64,\ でなければなりません。注意: \ は小文字である必要があります(例: data:image/png;base64,\)。 + +Comfy Router は base64 への展開やすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送上限を超える入力には URL を使用してください。 + +入力画像は次の要件を満たす必要があります: +• 画像形式: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif にも対応。seedream-5.0-pro は heic と heif にも対応) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16] の範囲。seededit-3.0-i2i では [1/3, 3] +• 幅と高さ(px): > 14 +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition 有効)では、image は必須で、入力画像は 1 枚のみサポートされます(複数画像を渡すとエラーになります)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB、総ピクセル数が [512x512, 6000x6000] の範囲、アスペクト比が [1/16, 16] の範囲でなければなりません。 + + + + レイヤー分離を有効にするかどうかを制御します。このパラメータは seedream-5.0-pro のみがサポートします。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 枚のベース画像と複数のレイヤー(最大 16)に分解し、生成された各レイヤーの位置とコンテンツ情報を返します。これにはスタッキング順序(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description)が含まれます。 +false: 標準の画像生成モード。レイヤー分離は実行されません。 +レイヤー分離モードに関する注意: 入力画像は 1 枚のみサポートされます(複数画像を渡すとエラーになります)。いずれかのレイヤーの生成が失敗すると、リクエスト全体が失敗します。部分的な成功はサポートされません。返される画像は最大 17 枚(ベース画像 1 枚 + レイヤー 16 枚)です。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーになります。 + + + + モデル識別子。サポートされるモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。POST /proxy/byteplus/api/v3/images/generations への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシはそれ以外の値や省略された値を 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元は省略します。 + + + + プロンプト最適化機能の設定。このパラメータは seedream-5.0-pro/5.0-lite/4.5(スタンダードモードのみをサポート)および seedream-4.0 のみがサポートします。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質ですが生成時間が長くなります。fast = 高速ですが品質は平均的です。 + + 取り得る値: `standard`, `fast` + + + + 出力画像の形式を指定します。このパラメータは seedream-5.0-pro と 5.0-lite のみがサポートします。レイヤー分離シナリオでは、output_format はベース画像の形式のみを制御し、すべてのレイヤーは常に png で出力されます。 + + 取り得る値: `png`, `jpeg` + + + + 画像生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では省略可能です。プロンプトを指定した場合、モデルはプロンプトの意図に従って指定された要素を認識して分離します。プロンプトを指定しない場合、モデルは画像内の主要な要素をすべて自動的に検出し、独立したレイヤーに分離します。 + + + + レスポンスで返される生成画像の形式を指定します + + 取り得る値: `url`, `b64_json` + + + + 画像生成の確率性を制御するランダムシード。範囲: [-1, 2147483647]。指定しない場合、シードは自動的に生成されます。同じ出力を再現するには、同じシード値を使用してください。 + + 範囲: `-1` から `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 のみがサポートします(seedream-5.0-pro はサポートしません)。有効な値: +auto: 自動モードでは、モデルがユーザーのプロンプトに基づいて複数の画像を返すかどうか、および何枚の画像を含めるかを自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 取り得る値: `auto`, `disabled` + + + + このパラメータをサポートするのは seedream-5.0-lite、4.5、4.0 のみです(seedream-5.0-pro は非サポート)。 +バッチ画像生成機能の設定です。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像数 + 生成画像数 ≤ 15。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲内である必要があります +"seededit-3-0-i2i-250628": 生成画像の幅と高さのピクセル。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法が利用できますが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法が利用できます(併用はできません)。 + 方法 1 | 解像度を指定し、画像のアスペクト比、形状、用途をプロンプトで記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628" で layer_decomposition を有効にした場合: 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、元の入力画像のアスペクト比で、指定された解像度で出力されます。各レイヤーは、元の画像でのアスペクト比を保ちながら、指定された解像度に近いサイズで出力されます。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] 内の入力は元の入力サイズで出力され、1K より小さい入力は 1K で出力され、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に固定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。このパラメータをサポートするのは seedream-5.0-lite、4.5、4.0 のみです(seedream-5.0-pro は非サポート)。false = すべての出力画像が一度に返されます。true = 各出力画像は生成され次第すぐに返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 'AI generated' ラベル付きのウォーターマークを追加 + + +Router が `GET /v2/models/byteplus/seedream-3-0-t2i-250415/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ(秒単位) + + + + 生成された画像に関する情報を含みます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像(z_index=0)で、以降の要素は z_index の昇順で並んだレイヤーです。 + + + + Base64 エンコードされた画像データ(response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + レイヤーのバウンディングボックスの絶対ピクセル座標。出力ベース画像の座標系で、左上隅が (0, 0) です。座標形式: [left, top, right, bottom]。 + + + + レイヤーのバウンディングボックスのパーミル量子化(正規化)座標。ベース画像サイズに基づいて [0, 1000] の離散整数範囲に比例マッピングされ、最大 1000 で切り捨てられます。座標形式: [left, top, right, bottom]。 + + + + 現在の分離要素の詳細な説明。name よりも豊富なレイヤー特性(色、状態、マテリアルなど)を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在の分離要素の名前/ラベル。分離された被写体の特徴からモデルが自動生成します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ(ピクセル単位)。形式は \x\。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像ダウンロード用の URL(response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重なり順。下から上へ増加し、0 が最下層のレイヤー(ベース画像)で、値が大きいほど上に位置します。レイヤーを正しい重なり順で完全な画像に再構成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報(存在する場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルが生成した画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの総数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-3-0-t2i-250415", + "usage": { + "generated_images": 1 + } +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx b/ja/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx new file mode 100644 index 000000000..c4618e433 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx @@ -0,0 +1,312 @@ +--- +title: "Comfy Router で Seedream 4.0 250828 を使う" +description: "Comfy Router 経由で byteplus/seedream-4-0-250828 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンス。" +sidebarTitle: "Seedream 4.0 250828" +translationSourceHash: 5f0d0629 +translationFrom: development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx +translationBlockHashes: + "_intro": 6d2bb0be + "Quick start": aadf580d + "Schema": 38af2b63 + "Examples": c5d15057 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-4-0-250828.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-4-0-250828` のAPIリファレンスです。Comfy Router が BytePlus より提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `byteplus/seedream-4-0-250828` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-0-250828", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-0-250828", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に沿うかを制御します。範囲 [1, 10]。値が大きいほどプロンプトへの追従性が強くなります。seedream-3-0-t2i-250415 のデフォルトは 2.5、seededit-3-0-i2i-250628 のデフォルトは 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされていません。 + + 範囲: `1` ~ `10` + + フォーマット: `浮動小数点` + + + + seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i がこのパラメータをサポートしています。 + +編集する画像の Base64 エンコーディングまたはアクセス可能な URL を入力します。seedream-5.0-pro、5.0-lite、4.5、4.0 は単一画像または複数画像の入力に対応しています(複数画像ブレンドの例を参照)。一方、seededit-3.0-i2i は単一画像の入力のみをサポートしています。 + +• 画像URL: 画像URLにアクセスできることを確認してください。 +• Base64エンコーディング: 形式は data:image/\;base64,\ である必要があります。注意: \ は小文字である必要があります。例: data:image/png;base64,\。 + +Comfy Router は、base64 展開およびすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送制限を超える入力には URL を使用してください。 + +入力画像は次の要件を満たす必要があります: +• 画像フォーマット: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif にも対応。seedream-5.0-pro は heic と heif にも対応) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16] の範囲、seededit-3.0-i2i では [1/3, 3] +• 幅と高さ(px): > 14 +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition 有効)では、image は必須であり、単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB、総ピクセル数は [512x512, 6000x6000] の範囲、アスペクト比は [1/16, 16] の範囲である必要があります。 + + + + レイヤー分離を有効にするかどうかを制御します。このパラメータは seedream-5.0-pro のみがサポートしています。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 つのベース画像と複数のレイヤー(最大 16)に分解し、生成された各レイヤーの位置とコンテンツ情報を返します。これにはスタッキング順序(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description)が含まれます。 +false: 標準の画像生成モード。レイヤー分離は実行されません。 +レイヤー分離モードに関する注意: 単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。いずれか 1 つのレイヤーの生成に失敗すると、リクエスト全体が失敗します。部分的な成功はサポートされません。返される画像は最大 17 枚です(ベース画像 1 枚 + レイヤー 16 枚)。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーが返ります。 + + + + モデル識別子。サポートされているモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。POST /proxy/byteplus/api/v3/images/generations への直接 v1 呼び出しでは必ずこれを指定する必要があります。プロキシは他の値を拒否し、省略された場合も 400 で拒否します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元はこれを省略します。 + + + + プロンプト最適化機能の設定。seedream-5.0-pro/5.0-lite/4.5(スタンダードモードのみ対応)および seedream-4.0 がこのパラメータをサポートしています。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質ですが生成時間が長くなります。fast = 高速ですが品質は平均的です。 + + 取り得る値: `standard`, `fast` + + + + 出力画像のフォーマットを指定します。このパラメータは seedream-5.0-pro と 5.0-lite のみがサポートしています。レイヤー分離シナリオでは、output_format はベース画像のフォーマットのみを制御し、各レイヤーは常に png で出力されます。 + + 取り得る値: `png`, `jpeg` + + + + 画像生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では任意です。prompt を指定した場合、モデルはプロンプトの意図に従って指定された要素を認識して分離します。prompt を指定しない場合、モデルは画像内のすべての主要な要素を自動的に検出し、それらを独立したレイヤーに分離します。 + + + + レスポンスで返される生成画像のフォーマットを指定します + + 取り得る値: `url`, `b64_json` + + + + 画像生成の確率性を制御するランダムシード。範囲: [-1, 2147483647]。指定しない場合は、シードが自動的に生成されます。同じ出力を再現するには、同じシード値を使用してください。 + + 範囲: `-1` ~ `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 でのみサポートされています(seedream-5.0-pro ではサポートされていません)。有効な値: +auto: 自動モードでは、モデルがユーザーのプロンプトに基づいて複数の画像を返すかどうか、および何枚の画像を含めるかを自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 取り得る値: `auto`, `disabled` + + + + seedream-5.0-lite、4.5、4.0 のみこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。 +バッチ画像生成機能の設定です。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像数 + 生成画像数 ≤ 15。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲である必要があります。 +"seededit-3-0-i2i-250628": 生成画像の幅と高さ(ピクセル単位)。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法が利用できますが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法が利用できます(併用はできません)。 + 方法 1 | 解像度を指定し、画像のアスペクト比、形状、用途をプロンプトで記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628" で layer_decomposition を有効にした場合: 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、オリジナルの入力画像のアスペクト比で、指定された解像度に出力されます。各レイヤーは、オリジナル画像でのアスペクト比を維持しつつ、指定された解像度に近いサイズで出力されます。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] の範囲内の入力はオリジナルの入力サイズで出力され、1K より小さい入力は 1K で出力され、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は、完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に固定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。seedream-5.0-lite、4.5、4.0 のみこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。false = すべての出力画像がまとめて返されます。true = 生成された各出力画像が生成直後に返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 'AI generated' ラベル付きのウォーターマークを追加 + + +Router が `GET /v2/models/byteplus/seedream-4-0-250828/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ(秒単位) + + + + 生成された画像に関する情報が含まれます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像(z_index=0)で、以降の要素は z_index の昇順に並んだレイヤーです。 + + + + Base64 エンコードされた画像データ(response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + レイヤーのバウンディングボックスの絶対ピクセル座標。左上隅を (0, 0) とする出力ベース画像の座標系で表されます。座標形式:[left, top, right, bottom]。 + + + + レイヤーのバウンディングボックスのパーミル量子化(正規化)座標。ベース画像のサイズに基づき [0, 1000] の離散的な整数範囲に比例マッピングされ、最大 1000 で切り捨てられます。座標形式:[left, top, right, bottom]。 + + + + 現在分離された要素の詳細な説明。name よりも豊富なレイヤーの特性(色、状態、マテリアルなど)を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在分離された要素の名前/ラベル。分離された被写体の特性からモデルによって自動生成されます。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ(ピクセル単位)。形式は \x\。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像のダウンロード URL(response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重なり順。下から上へ増加します。0 が最下層のレイヤー(ベース画像)で、値が大きいほど上に位置します。正しい重なり順でレイヤーを完全な画像に再合成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報(ある場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルによって生成された画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの合計数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-0-250828", + "usage": { + "generated_images": 1 + } +} +``` + + diff --git a/ja/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx b/ja/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx new file mode 100644 index 000000000..c1b2c4b73 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router で Seedream 4.5 251128 を使用する" +description: "Comfy Router 経由で byteplus/seedream-4-5-251128 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedream 4.5 251128" +translationSourceHash: efa9ee24 +translationFrom: development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx +translationBlockHashes: + "_intro": 598e0279 + "Quick start": 8ba3ab6e + "Schema": 9685e55c + "Examples": 3fde19f6 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-4-5-251128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-4-5-251128` の API リファレンスです。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `byteplus/seedream-4-5-251128` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-5-251128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-5-251128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に一致するかを制御します。範囲 [1, 10]。値が大きいほどプロンプトへの追従性が高くなります。seedream-3-0-t2i-250415 ではデフォルト 2.5、seededit-3-0-i2i-250628 では 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされていません。 + + 範囲: `1` から `10` + + 形式: `float` + + + + seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i がこのパラメータをサポートします。 + +編集する画像の Base64 エンコーディング、またはアクセス可能な URL を入力します。seedream-5.0-pro、5.0-lite、4.5、4.0 は単一画像または複数画像の入力に対応しています(複数画像のブレンド例を参照)。一方、seededit-3.0-i2i は単一画像の入力のみに対応しています。 + +• 画像URL: 画像URLにアクセス可能であることを確認してください。 +• Base64 エンコーディング: 形式は data:image/\;base64,\ である必要があります。注意: \ は小文字である必要があります。例: data:image/png;base64,\。 + +Comfy Router は、base64 の展開とすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送制限を超える入力には URL を使用してください。 + +入力画像は次の要件を満たす必要があります: +• 画像形式: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif にも対応。seedream-5.0-pro は heic と heif にも対応) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16] の範囲。seededit-3.0-i2i では [1/3, 3] の範囲 +• 幅と高さ(px): 14 より大きい +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition が有効)では、image は必須で、単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB、総ピクセル数が [512x512, 6000x6000] の範囲、アスペクト比が [1/16, 16] の範囲である必要があります。 + + + + レイヤー分離を有効にするかどうかを制御します。seedream-5.0-pro のみがこのパラメータをサポートします。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 つのベース画像と複数のレイヤー(最大 16)に分解し、生成された各レイヤーの位置とコンテンツ情報を返します。これには重なり順(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description)が含まれます。 +false: スタンダードな画像生成モード。レイヤー分離は行われません。 +レイヤー分離モードに関する注意: 単一の入力画像のみがサポートされます(複数の画像を渡すとエラーが返ります)。いずれか 1 つのレイヤーの生成に失敗すると、リクエスト全体が失敗します(部分的な成功はサポートされません)。返される画像は最大 17 枚です(ベース画像 1 枚 + レイヤー 16 枚)。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーが返ります。 + + + + モデル識別子。サポートされるモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。POST /proxy/byteplus/api/v3/images/generations への直接の v1 呼び出しでは必ず指定する必要があります。プロキシはそれ以外の値を拒否し、省略された場合も 400 で拒否します。このスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するため、Router の呼び出し側は省略します。 + + + + プロンプト最適化機能の設定。seedream-5.0-pro/5.0-lite/4.5(スタンダードモードのみをサポート)と seedream-4.0 のみがこのパラメータをサポートします。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質ですが生成時間が長くなります。fast = より高速ですが品質は平均的です。 + + 指定可能な値: `standard`、`fast` + + + + 出力画像の形式を指定します。seedream-5.0-pro と 5.0-lite のみがこのパラメータをサポートします。レイヤー分離シナリオでは、output_format はベース画像の形式のみを制御します。各レイヤーは常に png として出力されます。 + + 指定可能な値: `png`、`jpeg` + + + + 画像の生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では任意です。プロンプトを指定した場合、モデルはプロンプトの意図に従って指定された要素を認識して分離します。プロンプトを指定しない場合、モデルは画像内の主要な要素をすべて自動検出し、独立したレイヤーに分離します。 + + + + レスポンスで返される生成済み画像の形式を指定します + + 指定可能な値: `url`、`b64_json` + + + + 画像生成のランダム性を制御するシード。範囲: [-1, 2147483647]。指定しない場合、シードは自動的に生成されます。同じ出力を再現するには、同じシード値を使用してください。 + + 範囲: `-1` から `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 でのみサポートされています(seedream-5.0-pro ではサポートされません)。有効な値: +auto: 自動モードでは、ユーザーのプロンプトに基づいて、複数の画像を返すかどうか、および含まれる画像数をモデルが自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 指定可能な値: `auto`、`disabled` + + + + このパラメータをサポートするのは seedream-5.0-lite、4.5、4.0 のみです(seedream-5.0-pro ではサポートされません)。 +バッチ画像生成機能の設定です。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像数 + 生成画像数 ≤ 15 です。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲である必要があります。 +"seededit-3-0-i2i-250628": 生成画像の幅と高さのピクセル数です。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法がありますが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法があります。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法があります。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法があります(併用はできません)。 + 方法 1 | 解像度を指定し、プロンプトで画像のアスペクト比、形状、用途を記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628" で layer_decomposition を有効にした場合: 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、元の入力画像のアスペクト比を保ちながら指定された解像度で出力されます。各レイヤーは、元の画像でのアスペクト比を維持しつつ、指定された解像度に近いサイズで出力されます。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] の範囲の入力は元の入力サイズで出力され、1K より小さい入力は 1K で出力され、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に固定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。このパラメータをサポートするのは seedream-5.0-lite、4.5、4.0 のみです(seedream-5.0-pro ではサポートされません)。false = すべての出力画像が一度に返されます。true = 各出力画像は生成直後に返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 'AI generated' ラベル付きのウォーターマークを追加 + + +Router が `GET /v2/models/byteplus/seedream-4-5-251128/openapi.json` で提供する schema から生成されています。これはリクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ(秒単位) + + + + 生成された画像に関する情報を含みます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像(z_index=0)で、以降の要素がレイヤーとなり、z_index の昇順で並びます。 + + + + Base64 エンコードされた画像データ(response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + レイヤーのバウンディングボックスの絶対ピクセル座標。出力されるベース画像の座標系で、左上隅が (0, 0) となります。座標形式: [left, top, right, bottom]。 + + + + レイヤーのバウンディングボックスのパーミル量子化(正規化)座標。ベース画像のサイズに基づいて [0, 1000] の離散的な整数範囲に比例マッピングされ、最大 1000 で切り捨てられます。座標形式: [left, top, right, bottom]。 + + + + 現在の分離された要素の詳細な説明。name よりも豊富なレイヤーの特徴(色、状態、マテリアルなど)を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在の分離された要素の名前/ラベル。分離された被写体の特徴からモデルによって自動生成されます。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ(ピクセル単位)。形式は \x\。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像ダウンロード用の URL(response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重なり順。下から上へ増加します。0 が最下層のレイヤー(ベース画像)で、値が大きいほど上に位置します。レイヤーを正しい重なり順で完全な画像に再構成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報(存在する場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルが生成した画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの総数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-5-251128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx b/ja/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx new file mode 100644 index 000000000..00e8dc5e8 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router で Seedream 5.0 260128 を使用する" +description: "Comfy Router 経由で byteplus/seedream-5-0-260128 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedream 5.0 260128" +translationSourceHash: 2791f0e2 +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx +translationBlockHashes: + "_intro": 7058e811 + "Quick start": e3755750 + "Schema": 66ac7717 + "Examples": 70b6a1f5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-5-0-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-5-0-260128` の API リファレンスです。BytePlus より Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `byteplus/seedream-5-0-260128` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-260128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-260128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に一致するかを制御します。範囲は [1, 10] です。値が大きいほどプロンプトへの追従性が高くなります。seedream-3-0-t2i-250415 ではデフォルト 2.5、seededit-3-0-i2i-250628 では 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされていません。 + + 範囲: `1` ~ `10` + + 形式: `浮動小数点` + + + + Seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i がこのパラメータをサポートします。 + +編集する画像の Base64 エンコーディングまたはアクセス可能な URL を入力します。Seedream-5.0-pro、5.0-lite、4.5、4.0 は単一画像または複数画像の入力に対応しています(複数画像のブレンド例を参照)が、seededit-3.0-i2i は単一画像の入力のみをサポートします。 + +• 画像URL: 画像URLにアクセスできることを確認してください。 +• Base64 エンコーディング: 形式は data:image/\;base64,\ である必要があります。注: \ は小文字である必要があります(例: data:image/png;base64,\)。 + +Comfy Router は、base64 の展開やすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送制限を超える入力には URL を使用してください。 + +入力画像は次の要件を満たす必要があります: +• 画像形式: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif もサポート。seedream-5.0-pro は heic と heif もサポート) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16]、seededit-3.0-i2i では [1/3, 3] +• 幅と高さ(px): 14 より大きい +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition 有効)では、image は必須であり、単一の入力画像のみがサポートされます(複数画像を渡すとエラーが返ります)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB、総ピクセル数は [512x512, 6000x6000] の範囲、アスペクト比は [1/16, 16] の範囲である必要があります。 + + + + レイヤー分離を有効にするかどうかを制御します。このパラメータは seedream-5.0-pro のみがサポートします。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 つのベース画像と複数のレイヤー(最大 16)に分解し、生成された各レイヤーの位置とコンテンツ情報を返します。これにはスタッキング順序(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description)が含まれます。 +false: スタンダードな画像生成モード。レイヤー分離は行われません。 +レイヤー分離モードに関する注意: 単一の入力画像のみがサポートされます(複数画像を渡すとエラーが返ります)。いずれか 1 つのレイヤーの生成に失敗すると、リクエスト全体が失敗します(部分的な成功はサポートされません)。返される画像は最大 17 枚です(ベース画像 1 枚 + レイヤー 16 枚)。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーが返ります。 + + + + モデル識別子。サポートされるモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。POST /proxy/byteplus/api/v3/images/generations への直接の v1 呼び出しでは必ずこれを指定する必要があります。プロキシはそれ以外の値、および省略された場合を 400 で拒否します。このスキーマの `required` リストには含まれていません。Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。 + + + + プロンプト最適化機能の設定。このパラメータは seedream-5.0-pro/5.0-lite/4.5(スタンダードモードのみサポート)と seedream-4.0 のみがサポートします。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質ですが生成時間が長くなります。fast = より高速ですが品質は平均的です。 + + 可能な値: `standard`, `fast` + + + + 出力画像の形式を指定します。このパラメータは seedream-5.0-pro と 5.0-lite のみがサポートします。レイヤー分離シナリオでは、output_format はベース画像の形式のみを制御します。各レイヤーは常に png で出力されます。 + + 可能な値: `png`, `jpeg` + + + + 画像の生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では省略可能です。prompt を指定した場合、モデルはプロンプトの意図に従って指定された要素を認識して分離します。prompt を指定しない場合、モデルは画像内の主要な要素をすべて自動的に検出し、独立したレイヤーに分離します。 + + + + レスポンスで返される生成画像の形式を指定します + + 可能な値: `url`, `b64_json` + + + + 画像生成の確率性を制御するランダムシード。範囲: [-1, 2147483647]。指定しない場合、シードは自動的に生成されます。同じ出力を再現するには、同じシード値を使用します。 + + 範囲: `-1` ~ `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 のみでサポートされています(seedream-5.0-pro ではサポートされません)。有効な値: +auto: 自動モードでは、モデルはユーザーのプロンプトに基づいて、複数の画像を返すかどうか、および含まれる画像数を自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 可能な値: `auto`, `disabled` + + + + seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。 +バッチ画像生成機能の設定です。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像数 + 生成画像数 ≤ 15。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲内である必要があります。 +"seededit-3-0-i2i-250628": 生成画像の幅と高さのピクセル数。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法が利用できますが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法が利用できます。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法が利用できます(併用はできません)。 + 方法 1 | 解像度を指定し、プロンプトで画像のアスペクト比、形状、用途を記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセル単位で指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628" で layer_decomposition を有効にした場合: 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、元の入力画像のアスペクト比で指定された解像度で出力されます。各レイヤーは指定された解像度に近いサイズで出力され、元の画像内でのアスペクト比が維持されます。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] 内の入力は元の入力サイズで出力され、1K より小さい入力は 1K で出力され、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に確定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。false = すべての出力画像が一度に返されます。true = 各出力画像が生成後すぐに返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 'AI generated' ラベル付きのウォーターマークを追加します + + +`GET /v2/models/byteplus/seedream-5-0-260128/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるのと同じドキュメントです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ (秒単位) + + + + 生成された画像に関する情報が含まれます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像 (z_index=0) で、以降の要素は z_index の昇順で並んだレイヤーです。 + + + + Base64 エンコードされた画像データ (response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力ベース画像の座標系 (左上隅が (0, 0)) における、レイヤーのバウンディングボックスの絶対ピクセル座標。座標形式: [left, top, right, bottom]。 + + + + ベース画像のサイズに基づいて [0, 1000] の離散的な整数範囲に比例マッピングされ、最大 1000 で切り捨てられた、レイヤーのバウンディングボックスのパーミル量子化 (正規化) 座標。座標形式: [left, top, right, bottom]。 + + + + 現在の分離要素の詳細な説明。name よりも豊富なレイヤーの特性 (色、状態、マテリアルなど) を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在の分離要素の名前/ラベル。分離された被写体の特性からモデルが自動的に生成します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ (ピクセル単位)。形式は \x\ です。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像ダウンロード用の URL (response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重なり順。下から上へ向かって増加します。0 が最下層のレイヤー (ベース画像) で、値が大きいほど上に位置します。レイヤーを正しい重なり順で完全な画像に再合成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報 (存在する場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルが生成した画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの総数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-260128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx b/ja/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx new file mode 100644 index 000000000..ee2c37666 --- /dev/null +++ b/ja/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Seedream 5.0 Pro 260628 を Comfy Router で使用する" +description: "Comfy Router 経由で byteplus/seedream-5-0-pro-260628 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Seedream 5.0 Pro 260628" +translationSourceHash: 0171cc6c +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx +translationBlockHashes: + "_intro": f8a92639 + "Quick start": aae3b073 + "Schema": 0936e6ef + "Examples": 60b5bdba +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-5-0-pro-260628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-5-0-pro-260628` の API リファレンスです。Comfy Router が BytePlus から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `byteplus/seedream-5-0-pro-260628` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-pro-260628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-pro-260628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## スキーマ + +### 入力 + + + 出力画像が入力プロンプトにどれだけ忠実に従うかを制御します。範囲は [1, 10] です。値が大きいほどプロンプトへの追従性が高くなります。デフォルトは seedream-3-0-t2i-250415 では 2.5、seededit-3-0-i2i-250628 では 5.5 です。seedream-5.0-pro、5.0-lite、4.5、4.0 ではサポートされません。 + + 範囲: `1` から `10` + + 形式: `float` + + + + Seedream-5.0-pro、5.0-lite、4.5、4.0、および seededit-3.0-i2i がこのパラメータをサポートします。 + +編集する画像の Base64 エンコードまたはアクセス可能な URL を入力します。Seedream-5.0-pro、5.0-lite、4.5、4.0 は単一画像または複数画像の入力に対応しています(複数画像のブレンド例を参照)。一方、seededit-3.0-i2i は単一画像の入力のみをサポートします。 + +• 画像URL: 画像URLがアクセス可能であることを確認してください。 +• Base64 エンコード: 形式は data:image/\<画像形式>;base64,\ である必要があります。注意: \<画像形式> は小文字でなければなりません。例: data:image/png;base64,\。 + +Comfy Router は、Base64 の展開やすべての参照画像を含め、JSON リクエスト全体を 10 MiB に制限します。この転送上限を超える入力には URL を使用してください。 + +入力画像は以下の要件を満たす必要があります: +• 画像形式: jpeg、png(seedream-5.0-pro、5.0-lite、4.5、4.0 は webp、bmp、tiff、gif にも対応。seedream-5.0-pro は heic と heif にも対応) +• アスペクト比(幅/高さ): seedream-5.0-pro、5.0-lite、4.5、4.0 では [1/16, 16] の範囲。seededit-3.0-i2i では [1/3, 3] +• 幅と高さ(px): 14 より大きい +• サイズ: 10 MB 以下(seedream-5.0-pro は 30 MB) +• 総ピクセル数: seedream-5.0-pro では 6000x6000(36,000,000 px)以下 +• 参照画像は最大 14 枚(seedream-5.0-pro は 10 枚) + +レイヤー分離シナリオ(layer_decomposition が有効)では、image は必須であり、単一の入力画像のみをサポートします(複数の画像を渡すとエラーが返されます)。入力画像は png、jpeg、webp、bmp、tiff、gif のいずれかである必要があり(heic と heif はサポートされません)、最大 30 MB で、総ピクセル数は [512x512, 6000x6000] の範囲、アスペクト比は [1/16, 16] の範囲である必要があります。 + + + + レイヤー分離を有効にするかどうかを制御します。seedream-5.0-pro のみがこのパラメータをサポートします。 +true: レイヤー分離モード。モデルは単一の入力画像を 1 枚のベース画像と複数のレイヤー(最大 16 枚)に分解し、生成された各レイヤーの位置とコンテンツ情報(重なり順(z_index)、バウンディングボックス(bounding_box)、名前(name)、説明(description)を含む)を返します。 +false: 標準の画像生成モード。レイヤー分離は実行されません。 +レイヤー分離モードに関する注意: 単一の入力画像のみをサポートします(複数の画像を渡すとエラーが返されます)。いずれか 1 つのレイヤーの生成に失敗すると、リクエスト全体が失敗します。部分的な成功はサポートされません。返される画像は最大 17 枚です(ベース画像 1 枚 + レイヤー 16 枚)。sequential_image_generation、sequential_image_generation_options、tools、stream を渡すとエラーが返されます。 + + + + モデル識別子。サポートされるモデル: seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128、seedream-5-0-pro-260628。POST /proxy/byteplus/api/v3/images/generations への直接の v1 呼び出しでは、これを必ず指定する必要があります。プロキシは他の値を拒否し、省略された場合は 400 を返します。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/byteplus/\{model} の `{model}` パスセグメントからこれを補完するためであり、Router の呼び出し元は省略します。 + + + + プロンプト最適化機能の設定です。seedream-5.0-pro/5.0-lite/4.5(standard モードのみをサポート)および seedream-4.0 のみがこのパラメータをサポートします。 + + + + プロンプト最適化機能のモードを設定します。standard = より高品質だが生成時間は長くなります。fast = より高速だが品質は平均的になります。 + + 取り得る値: `standard`、`fast` + + + + 出力画像の形式を指定します。seedream-5.0-pro と 5.0-lite のみがこのパラメータをサポートします。レイヤー分離シナリオでは、output_format はベース画像の形式のみを制御し、各レイヤーは常に png で出力されます。 + + 取り得る値: `png`、`jpeg` + + + + 画像の生成または変換のためのテキスト記述。 +レイヤー分離シナリオ(layer_decomposition を有効にした seedream-5.0-pro)では任意です。prompt を指定すると、モデルはプロンプトの意図に従って指定された要素を認識して分離します。prompt を指定しない場合、モデルは画像内の主要な要素をすべて自動検出し、独立したレイヤーに分離します。 + + + + レスポンスで返される生成画像の形式を指定します + + 取り得る値: `url`、`b64_json` + + + + 画像生成の確率性を制御するランダムシード。範囲: [-1, 2147483647]。指定しない場合は、シードが自動生成されます。同じ出力を再現するには、同じシード値を使用します。 + + 範囲: `-1` から `2147483647` + + + + バッチ生成機能を無効にするかどうかを制御します。このパラメータは seedream-5.0-lite、4.5、4.0 でのみサポートされます(seedream-5.0-pro ではサポートされません)。有効な値: +auto: 自動モードでは、モデルはユーザーのプロンプトに基づいて、複数の画像を返すかどうか、また何枚の画像を含めるかを自動的に判断します。 +disabled: バッチ生成機能を無効にします。モデルは 1 枚の画像のみを生成します。 + + 取り得る値: `auto`、`disabled` + + + + seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。 +バッチ画像生成機能の設定。このパラメータは sequential_image_generation が auto に設定されている場合にのみ有効です。 + + + + このリクエストで生成する画像の最大数を指定します。入力参照画像の数 + 生成画像の数 ≤ 15。 + + 範囲: `1` から `15` + + + + "seedream-3-0-t2i-250415": 生成画像の寸法(幅 x 高さ、ピクセル単位)を指定します。[512x512, 2048x2048] の範囲である必要があります。 +"seededit-3-0-i2i-250628": 生成画像の幅と高さのピクセル数。現在は adaptive のみをサポートします。 +"seedream-4-0-250828": 生成画像の仕様を設定します。2 つの方法が利用可能ですが、併用はできません。 + 方法 1 | 解像度を指定します。指定可能な値: 1K、2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [1024x1024, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-4-5-251128": 2 つの方法が利用可能です。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、4K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, 4096x4096]、アスペクト比: [1/16, 16] +"seedream-5-0-260128": 2 つの方法が利用可能です。 + 方法 1 | 解像度を指定します。指定可能な値: 2K、3K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 2048x2048、総ピクセル数: [2560x1440, ~3072x3072]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628": 2 つの方法が利用可能です(併用はできません)。 + 方法 1 | 解像度を指定し、画像のアスペクト比、形状、用途をプロンプトで記述します。最終的なサイズはモデルが決定します。指定可能な値: 1K、2K + 方法 2 | 幅と高さをピクセルで指定します。デフォルト: 1024x1024、総ピクセル数: [1024x1024 (1048576), 2048x2048 (4194304)]、アスペクト比: [1/16, 16] +"seedream-5-0-pro-260628" で layer_decomposition を有効にした場合: 解像度レベルの方法のみをサポートします。指定可能な値: 1K、1.5K、2K、auto。デフォルト: auto。 + ベース画像は、元の入力画像のアスペクト比で指定解像度に出力されます。各レイヤーは、元の画像で持っていたアスペクト比を維持しつつ、指定解像度に近いサイズで出力されます。 + auto: 入力画像のサイズとアスペクト比に基づいて出力されます。[1280x720, ~2048x2048] 内の入力は元の入力サイズで出力され、1K より小さい入力は 1K で、2K より大きい入力は 2K で出力されます。 + + + + Comfy Router は完全な JSON 結果を取得するため、明示的に指定された stream フラグを false に確定します。v1 プロキシでは、このフィールドはストリーミング出力モードを有効にするかどうかを制御します。seedream-5.0-lite、4.5、4.0 のみがこのパラメータをサポートします(seedream-5.0-pro ではサポートされません)。false = すべての出力画像が一度に返されます。true = 各出力画像は生成され次第、すぐに返されます。 + + + + 生成画像にウォーターマークを追加するかどうかを指定します。false = ウォーターマークなし、true = 'AI generated' ラベル付きのウォーターマークを追加 + + +Router が `GET /v2/models/byteplus/seedream-5-0-pro-260628/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同じドキュメントです。### 出力 + + + リクエストが作成された時刻を示す Unix タイムスタンプ(秒単位) + + + + 生成された画像に関する情報を含みます。 +レイヤー分離のシナリオでは、配列の最初の要素がベース画像(z_index=0)であり、以降の要素がレイヤーとなり、z_index の昇順で並びます。 + + + + Base64 エンコードされた画像データ(response_format が "b64_json" の場合) + + + + 現在のレイヤーがベース画像内で占める領域のバウンディングボックス情報。このフィールドを返すのはレイヤーのみで、ベース画像はキャンバス全体を覆うため bounding_box を返しません。layer_decomposition が true の場合にのみ返されます。 + + + + レイヤーのバウンディングボックスの絶対ピクセル座標。出力ベース画像の座標系で、左上隅を (0, 0) とします。座標形式: [left, top, right, bottom]。 + + + + レイヤーのバウンディングボックスのパーミル量子化(正規化)座標。ベース画像のサイズに基づいて [0, 1000] の離散整数範囲に比例マッピングされ、最大 1000 で打ち切られます。座標形式: [left, top, right, bottom]。 + + + + 現在の分離要素の詳細な説明。name よりも豊富なレイヤー特性(色、状態、マテリアルなど)を提供します。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 現在の分離要素の名前/ラベル。分離された被写体の特性からモデルによって自動生成されます。このフィールドを返すのはレイヤーのみで、ベース画像は返しません。layer_decomposition が true の場合にのみ返されます。 + + + + 出力画像のファイル形式。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + 画像の幅と高さ(ピクセル単位)。形式は \x\ です。このパラメータをサポートするのは seedream-5.0-pro、5.0-lite、4.5、4.0 のみです。 + + + + 画像ダウンロード用の URL(response_format が "url" の場合) + + 形式: `uri` + + + + レイヤーの重なり順。下から上に向かって増加します。0 が最下層のレイヤー(ベース画像)で、値が大きいほど上に位置します。レイヤーを正しい重なり順で完全な画像に再構成するために使用します。layer_decomposition が true の場合にのみ返されます。 + + + + エラー情報(存在する場合) + + + + エラーコード + + + + エラーメッセージ + + + + リクエストに使用されたモデル ID + + + + + + + + モデルが生成した画像の数 + + + + モデルに入力された画像の数。このフィールドをサポートするのは seedream-5.0-pro のみです。 + + + + モデルが生成した画像に使用されたトークン数。 + + + + このリクエストで消費されたトークンの総数。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-pro-260628", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx b/ja/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx new file mode 100644 index 000000000..b4583fbde --- /dev/null +++ b/ja/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx @@ -0,0 +1,123 @@ +--- +title: "Comfy Router で Eleven Sfx V2 を使う" +description: "Comfy Router 経由で elevenlabs/eleven_sfx_v2 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Eleven Sfx V2" +translationSourceHash: cd7478d8 +translationFrom: development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx +translationBlockHashes: + "_intro": 776f30c7 + "Quick start": 7e465cc1 + "Schema": fc56be8b + "Examples": 6f6a9333 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/elevenlabs/eleven_sfx_v2.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`elevenlabs/eleven_sfx_v2` の API Reference。Comfy Router が Elevenlabs から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデルID:** `elevenlabs/eleven_sfx_v2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_sfx_v2", + { + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_sfx_v2", { + duration_seconds: 5, + text: "A distant rumble of thunder rolling across a valley.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration_seconds\": 5, \"text\": \"A distant rumble of thunder rolling across a valley.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるサウンドの長さ(秒)。 +0.5 以上、30 以下である必要があります。 +このルートでは必須です。フィールドが null の場合に最適な長さを推測する上流の ElevenLabs API とは異なり、このルートは省略されたリクエストを 400 "Duration is required" で拒否します。 +このフィールドが nullable のままであるのは、明示的な null が整形式のドキュメントとなるようにするためだけであり、それでも拒否されます。 +この値が、リクエストの課金対象となる量です。 + + 範囲: `0.5` から `30` + + 形式: `double` + + + + 滑らかにループするサウンドエフェクトを作成するかどうか。 +ElevenLabs のドキュメントでは、これは 'eleven_text_to_sound_v2' モデルでのみ利用可能とされていますが、このルートはそのモデルを受け付けません(model_id を参照)。そのため、ここでは効果がない可能性があります。 + + + + サウンド生成に使用するモデル ID。このルートは 'eleven_sfx_v2' のみを受け付け、それ以外の値はリクエストが ElevenLabs に到達する前に 400 で拒否されます。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/elevenlabs/\{model} の `{model}` パスセグメントからこれを設定するためであり、Router の呼び出し元はこれを省略します。 + + + + prompt influence を高くすると、生成結果がプロンプトに沿いやすくなる一方で、生成のばらつきが小さくなります。 +0 から 1 の間の値である必要があります。デフォルトは 0.3 です。 + + 範囲: `0` から `1` + + 形式: `double` + + + + サウンドエフェクトに変換されるテキスト。 + + +Router が `GET /v2/models/elevenlabs/eleven_sfx_v2/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + +Router はこのモデル向けの出力スキーマを公開していません。 + +## 例 + +### 入力 + +```json +{ + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley." +} +``` + + + diff --git a/ja/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx b/ja/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx new file mode 100644 index 000000000..b0deab646 --- /dev/null +++ b/ja/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx @@ -0,0 +1,173 @@ +--- +title: "Comfy Router で Eleven V3 を使用する" +description: "Comfy Router 経由で elevenlabs/eleven_v3 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Eleven V3" +translationSourceHash: c122bb0a +translationFrom: development/comfy-router/models/elevenlabs/eleven-v3/code.mdx +translationBlockHashes: + "_intro": df41671e + "Quick start": 9120bea9 + "Schema": fa6daefe + "Examples": ef5fbb0e +--- +{/* 生成済みファイル。router-schemas/elevenlabs/eleven_v3.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`elevenlabs/eleven_v3` の API リファレンス。Elevenlabs から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**Model ID:** `elevenlabs/eleven_v3` + +**Endpoint:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_v3", + { + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_v3", { + inputs: [ + { + text: "Hello from Comfy Router.", + voice_id: "21m00Tcm4TlvDq8ikWAM", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"inputs\": [{\"text\":\"Hello from Comfy Router.\",\"voice_id\":\"21m00Tcm4TlvDq8ikWAM\"}]}" +``` + + +## スキーマ + +### 入力 + + + テキスト正規化を 3 つのモードで制御します: +'auto' - システムがテキスト正規化を適用するかどうかを自動的に判断します +'on' - テキスト正規化は常に適用されます +'off' - テキスト正規化はスキップされます + + 指定可能な値: `auto`, `on`, `off` + + + + 対話入力のリスト。各入力にはテキストと音声 ID が含まれ、音声に変換されます。 +一意の音声 ID の最大数は 10 です。 + + + + 音声に変換するテキスト。 + + + + 生成に使用する音声の ID。 + + + + モデルと言語正規化に対して言語を強制するために使用される言語コード (ISO 639-1)。 +指定された言語コードがモデルでサポートされていない場合、エラーが返されます。 + + + + 使用されるモデルの識別子。このルートは +'eleven_v3' のみを受け付け、それ以外の値はリクエストが ElevenLabs に到達する前に +400 で拒否されます。 +利用可能なセットを取得するために GET /v1/models を照会するという +ElevenLabs の上流の推奨は、1 つのモデルを提供するこのルートには +当てはまりません。 +これはこのスキーマの `required` リストに含まれていません。Comfy Router が +/v2/models/elevenlabs/\{model} の `{model}` パスセグメントから +これを埋めるため、Router の呼び出し元は省略します。 + + + + テキストに適用する発音辞書ロケーター (id, version_id) のリスト。 +順番に適用されます。1 リクエストあたり最大 3 つのロケーターを使用できます。 + + + + 発音辞書の ID + + + + 発音辞書のバージョン ID + + + + 指定された場合、システムは決定論的にサンプリングするよう最善を尽くします。 +同じシードとパラメータでリクエストを繰り返すと、同じ結果が返されるはずです。 +0 以上 4294967295 以下の整数である必要があります。 + + 範囲: `0` から `4294967295` + + + + 対話生成を制御する設定 + + + + 音声の安定性と、各生成間のランダム性を決定します。 +低い値では音声の感情の幅が広がります。 +高い値では、感情が限られた単調な音声になることがあります。 + + 形式: `double` + + +これは Router が `GET /v2/models/elevenlabs/eleven_v3/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となる同一のドキュメントです。 + +### 出力 + +Router はこのモデルの出力スキーマを公開していません。 + +## 例 + +### 入力 + +```json +{ + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/fal/h3-max-turbo/code.mdx b/ja/development/comfy-router/models/fal/h3-max-turbo/code.mdx new file mode 100644 index 000000000..08ce9e9c5 --- /dev/null +++ b/ja/development/comfy-router/models/fal/h3-max-turbo/code.mdx @@ -0,0 +1,170 @@ +--- +title: "Comfy Router で H3 Max Turbo を使用する" +description: "Comfy Router 経由で fal/h3-max-turbo を呼び出す: エンドポイント、リクエスト形状、Router が返すレスポンス。" +sidebarTitle: "H3 Max Turbo" +translationSourceHash: 4587bb42 +translationFrom: development/comfy-router/models/fal/h3-max-turbo/code.mdx +translationBlockHashes: + "_intro": 000b76c4 + "Quick start": 3f4586dc + "Schema": fa803ecb + "Examples": 53e0f9d0 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/h3-max-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が fal から提供する `fal/h3-max-turbo` の API Reference。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `fal/h3-max-turbo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/fal/h3-max-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max-turbo", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max-turbo", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比: 21:9、16:9、4:3、1:1、3:4、または 9:16。 + + + + 生成されるビデオの再生時間(秒)。 + + + + 安全性チェッカーを有効にします。 + + + + ビデオ生成用のテキストプロンプト。 + + + + 生成前にプロンプトの書き換えにどの程度の労力を費やすか: balanced または quality。 + + + + 生成されるビデオの解像度: 480P または 768P。 + + + + ランダムシード。省略した場合はランダムシードが選択済みになります。 + + + + 生成されたビデオを CDN URL ではなく base64 として返します。 + + +Router が `GET /v2/models/fal/h3-max-turbo/openapi.json` で提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じドキュメントです。 + +### 出力 + + + 展開後のプロンプト。モデルに送信された内容です。 + + + + エンドツーエンドの所要時間の内訳(秒)。 + + + + 生成されたビデオファイル。 + + + + ビデオファイルの MIME タイプ。 + + + + ビデオファイルの名前。 + + + + ビデオファイルのサイズ(バイト)。 + + + + 生成されたビデオの URL。 + + +## 例 + +### 入力 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 出力 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/fal/h3-max/code.mdx b/ja/development/comfy-router/models/fal/h3-max/code.mdx new file mode 100644 index 000000000..1ef970b58 --- /dev/null +++ b/ja/development/comfy-router/models/fal/h3-max/code.mdx @@ -0,0 +1,170 @@ +--- +title: "Comfy Router で H3 Max を使用する" +description: "Comfy Router 経由で fal/h3-max を呼び出す: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "H3 Max" +translationSourceHash: 3c959af9 +translationFrom: development/comfy-router/models/fal/h3-max/code.mdx +translationBlockHashes: + "_intro": 9639e44f + "Quick start": 09bfe825 + "Schema": 9d6db301 + "Examples": 53e0f9d0 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/fal/h3-max.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`fal/h3-max` の API リファレンス。Comfy Router が fal から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP 経由で同じ呼び出しを行います。 + +**モデル ID:** `fal/h3-max` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/fal/h3-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比: 21:9、16:9、4:3、1:1、3:4、または 9:16。 + + + + 生成されるビデオの再生時間(秒)。 + + + + セーフティチェッカーを有効にします。 + + + + ビデオ生成用のテキストプロンプト。 + + + + 生成前にプロンプトの書き換えにどれだけ手間をかけるか: balanced または quality。 + + + + 生成されるビデオの解像度: 480P または 768P。 + + + + ランダムシード。省略した場合はランダムなシードが選択されます。 + + + + 生成されたビデオを CDN URL ではなく base64 として返します。 + + +Router が `GET /v2/models/fal/h3-max/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 展開後のプロンプト(モデルに送信されたもの)。 + + + + エンドツーエンドの所要時間の内訳(秒)。 + + + + 生成されたビデオファイル。 + + + + ビデオファイルの MIME タイプ。 + + + + ビデオファイルの名前。 + + + + ビデオファイルのサイズ(バイト)。 + + + + 生成されたビデオの URL。 + + +## 例 + +### 入力 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 出力 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/fal/patina/code.mdx b/ja/development/comfy-router/models/fal/patina/code.mdx new file mode 100644 index 000000000..01e60a5e5 --- /dev/null +++ b/ja/development/comfy-router/models/fal/patina/code.mdx @@ -0,0 +1,158 @@ +--- +title: "Comfy Router で Patina を使う" +description: "Comfy Router を通して fal/patina を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Patina" +translationSourceHash: fcac0478 +translationFrom: development/comfy-router/models/fal/patina/code.mdx +translationBlockHashes: + "_intro": 325742dd + "Quick start": 834ddc5c + "Schema": 44320e46 + "Examples": a3177476 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/patina.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`fal/patina` の API リファレンス。fal から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `fal/patina` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/fal/patina` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/patina", + { + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/patina", { + image_url: "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/patina \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png\"}" +``` + + +## スキーマ + +### 入力 + + + 画像の安全チェッカーを有効にします。 + + + + 入力画像(写真またはレンダリング)の URL。 + + + + 予測する PBR マップ。デフォルトでは 5 つすべてです。 + + + + 出力画像のフォーマット: jpeg、png、webp のいずれか。 + + + + 再現可能な denoise のためのランダムシード。 + + + + true の場合、CDN の URL ではなくデータ URI として画像を返します。 + + +Router が `GET /v2/models/fal/patina/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 生成されたタイル状テクスチャ画像と、予測された PBR マテリアルマップ。ベーステクスチャには url のみが含まれ、各マップのエントリには map_type も含まれます。 + + + + PBR マップの種類(basecolor、normal、roughness、metalness、height)。ベーステクスチャ画像の場合には存在しません。 + + + + 生成された画像の URL。 + + + + テクスチャ生成に使用されたプロンプト(展開されている場合があります)。 + + + + テクスチャ生成に使用されたシード。 + + + + エンドツーエンドの所要時間の内訳(秒)。 + + +## 例 + +### 入力 + +```json +{ + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png" +} +``` + +### 出力 + +```json +{ + "images": [ + { + "map_type": "basecolor", + "url": "https://example.invalid/fal/patina/basecolor.png" + }, + { + "map_type": "normal", + "url": "https://example.invalid/fal/patina/normal.png" + }, + { + "map_type": "roughness", + "url": "https://example.invalid/fal/patina/roughness.png" + } + ], + "prompt": "weathered copper roof tiles", + "seed": 1234567, + "timings": { + "inference": 6.25 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx b/ja/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx new file mode 100644 index 000000000..598e13aec --- /dev/null +++ b/ja/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx @@ -0,0 +1,161 @@ +--- +title: "Comfy Router で AI Image Upscaler Precision V2 を使う" +description: "Comfy Router 経由で freepik/ai-image-upscaler-precision-v2 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "AI Image Upscaler Precision V2" +translationSourceHash: f85f4df6 +translationFrom: development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx +translationBlockHashes: + "_intro": 6951b8f3 + "Quick start": 6df99e76 + "Schema": 88d38911 + "Examples": a5cb63c4 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/freepik/ai-image-upscaler-precision-v2.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Freepik から Comfy Router が提供する `freepik/ai-image-upscaler-precision-v2` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `freepik/ai-image-upscaler-precision-v2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-image-upscaler-precision-v2", + { + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-image-upscaler-precision-v2", { + image: "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + scale_factor: 8, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80\", \"scale_factor\": 8}" +``` + + +## スキーマ + +### 入力 + + + 画像処理のフレーバー: +- sublime: 芸術的・イラスト調の画像に最適化 +- photo: 写真画像に最適化 +- photo_denoiser: ノイズ低減を伴う写真に特化 + + 指定可能な値: `sublime`, `photo`, `photo_denoiser` + + + + アップスケーリングするソース画像。次のいずれかを受け付けます: +- 画像を指す公開アクセス可能な HTTPS URL +- base64 エンコードされた画像文字列 + + + + 画像の拡大倍率。入力と比較して出力がどれだけ大きくなるかを決定します。 + + 範囲: `2` ~ `16` + + + + 画像のシャープネス強度の制御。値が高いほどエッジの輪郭と明瞭さが増します。 + + 範囲: `0` ~ `100` + + + + インテリジェントなグレイン(粒子)/テクスチャの強調。値が高いほど、より細かいテクスチャが加わります。 + + 範囲: `0` ~ `100` + + + + ウルトラディテール強調レベル。値が高いほど、より入り組んだ詳細が作成されます。 + + 範囲: `0` ~ `100` + + + + アップスケーリングタスクの完了時に非同期通知を受け取る、任意のコールバック URL。 + + 形式: `uri` + + +Router が `GET /v2/models/freepik/ai-image-upscaler-precision-v2/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + + + + + 完了した生成の画像 URL。Router が返すドキュメントでは存在し、空ではありません。このリストが結果そのものです。リンクは Freepik 自身のものであり、有効期限があります。 + + + + 指定可能な値: `COMPLETED` + + + + 形式: `uuid` + + +## 例 + +### 入力 + +```json +{ + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8 +} +``` + +### 出力 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-image-upscaler-precision-v2/upscaled.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + diff --git a/ja/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx new file mode 100644 index 000000000..d96598d2a --- /dev/null +++ b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx @@ -0,0 +1,135 @@ +--- +title: "Comfy Router で AI Skin Enhancer Creative を使う" +description: "Comfy Router を通じて freepik/ai-skin-enhancer-creative を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "AI Skin Enhancer Creative" +translationSourceHash: d3af36a1 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx +translationBlockHashes: + "_intro": e723a5f3 + "Quick start": c26388b9 + "Schema": 914d2ba2 + "Examples": f51546bd +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/freepik/ai-skin-enhancer-creative.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Freepik から提供する `freepik/ai-skin-enhancer-creative` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `freepik/ai-skin-enhancer-creative` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-creative", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-creative", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## スキーマ + +### 入力 + + + 入力画像。Base64 エンコードまたは HTTPS URL(一般公開されている必要があります)に対応しています。 + + + + シャープネス強度 + + 範囲: `0` ~ `100` + + + + スマートグレイン強度 + + 範囲: `0` ~ `100` + + + + 非同期通知用のオプションのコールバック URL。 + + 形式: `uri` + + +このスキーマは、Router が `GET /v2/models/freepik/ai-skin-enhancer-creative/openapi.json` で公開しているスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるのと同じドキュメントです。 + +### 出力 + + + + + + + 完了した生成の画像 URL。Router が返すドキュメントでは必ず存在し、空にはなりません。このリストが結果そのものです。リンクは Freepik 独自のものであり、有効期限があります。 + + + + 取り得る値: `COMPLETED` + + + + 形式: `uuid` + + +## 例 + +### 入力 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 出力 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-creative/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + diff --git a/ja/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx new file mode 100644 index 000000000..f87ce7b01 --- /dev/null +++ b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx @@ -0,0 +1,141 @@ +--- +title: "AI Skin Enhancer Faithful を Comfy Router で使用する" +description: "Comfy Router 経由で freepik/ai-skin-enhancer-faithful を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "AI Skin Enhancer Faithful" +translationSourceHash: 676f6483 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx +translationBlockHashes: + "_intro": 79e82606 + "Quick start": 42aab383 + "Schema": dd345c18 + "Examples": b81e3b45 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-faithful.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-faithful` の API リファレンスです。Comfy Router が Freepik から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL スニペットは同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `freepik/ai-skin-enhancer-faithful` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-faithful", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-faithful", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## スキーマ + +### 入力 + + + 入力画像。Base64 エンコードまたは HTTPS URL(一般に公開されている必要があります)に対応しています。 + + + + シャープネス強度 + + 範囲: `0` から `100` + + + + 肌のディテール強調レベル + + 範囲: `0` から `100` + + + + スマートグレイン強度 + + 範囲: `0` から `100` + + + + 非同期通知用のオプションのコールバック URL。 + + 形式: `uri` + + +Router が `GET /v2/models/freepik/ai-skin-enhancer-faithful/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + 完了した生成の画像 URL。Router が返すドキュメントには必ず存在し、空にはなりません。このリストが結果そのものです。リンクは Freepik 独自のものであり、有効期限があります。 + + + + 指定可能な値: `COMPLETED` + + + + 形式: `uuid` + + +## 例 + +### 入力 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 出力 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-faithful/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + diff --git a/ja/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx new file mode 100644 index 000000000..58c244eef --- /dev/null +++ b/ja/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx @@ -0,0 +1,142 @@ +--- +title: "Comfy Router で AI Skin Enhancer Flexible を使う" +description: "Comfy Router 経由で freepik/ai-skin-enhancer-flexible を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "AI Skin Enhancer Flexible" +translationSourceHash: b75efd69 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx +translationBlockHashes: + "_intro": d6c2cb7e + "Quick start": 394b124a + "Schema": 70d4c10f + "Examples": 4255df63 +--- +{/* 生成済みファイル。router-schemas/freepik/ai-skin-enhancer-flexible.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-flexible` のAPIリファレンスです。Comfy Router が Freepik から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `freepik/ai-skin-enhancer-flexible` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-flexible", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-flexible", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## スキーマ + +### 入力 + + + 入力画像。Base64 エンコーディングまたは HTTPS URL(公開アクセス可能である必要があります)に対応しています。 + + + + flexible skin enhancer の最適化ターゲット + + 指定可能な値: `enhance_skin`、`improve_lighting`、`enhance_everything`、`transform_to_real`、`no_make_up` + + + + シャープ化の強度 + + 範囲: `0` から `100` + + + + スマートグレインの強度 + + 範囲: `0` から `100` + + + + 非同期通知用のオプションのコールバック URL。 + + フォーマット: `uri` + + +Router が `GET /v2/models/freepik/ai-skin-enhancer-flexible/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに届く前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + + + + + 完了した生成の画像 URL。Router が返すドキュメントでは必ず存在し、空にはなりません。このリストが結果そのものです。リンクは Freepik 自身のものであり、有効期限があります。 + + + + 指定可能な値: `COMPLETED` + + + + フォーマット: `uuid` + + +## 例 + +### 入力 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 出力 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-flexible/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx b/ja/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx new file mode 100644 index 000000000..2ca636e7e --- /dev/null +++ b/ja/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx @@ -0,0 +1,236 @@ +--- +title: "Gemini Omni 1.1 Flash を Comfy Router で使用する" +description: "Comfy Router 経由で gemini-interactions/gemini-omni-1.1-flash を呼び出します: endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gemini Omni 1.1 Flash" +translationSourceHash: 511d9d6a +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx +translationBlockHashes: + "_intro": 491ed41c + "Quick start": 5b337d94 + "Schema": 3db003f3 + "Examples": 02c0f0cf +--- +{/* GENERATED FILE. Generated from router-schemas/gemini-interactions/gemini-omni-1.1-flash.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-1.1-flash` の API Reference です。Comfy Router が Gemini Interactions から提供します。 + +## クイックスタート {#quick-start} + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `gemini-interactions/gemini-omni-1.1-flash` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-1.1-flash", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-1.1-flash", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## スキーマ + +### 入力 + + + プロンプト文字列、または型付きコンテンツパーツ(text、image、audio、video、document)の配列のいずれか。 + + + + Gemini モデルの識別子(例: `gemini-omni-flash-preview`)。Comfy Router のルート `POST /v2/models/gemini-interactions/{model}` ではパスから渡されるため、省略できます。このオペレーションが提供する綴り、つまり Comfy Router が `gemini-interactions/` として扱う集合は、gemini-omni-flash-preview と gemini-omni-1.1-flash(supportedGeminiInteractionModels)です。これらは enum に制約するのではなくここに記述しています。プロキシ自身がモデルを検証し、提供しない綴りに対しては独自の 400 を返すためです。 + + + + 以前に保存されたインタラクションの ID。ステートフルなマルチターンのビデオ編集を可能にします。 + + +Router が `GET /v2/models/gemini-interactions/gemini-omni-1.1-flash/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用する同一のドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + Router のレスポンスでは常に `completed` です。プロバイダーのその他のステータス(`in_progress`、`requires_action`、`failed`、`cancelled`、`incomplete`、`budget_exceeded`)が Router を通じて呼び出し元に 200 として届くことはありません。それらはプロバイダーのボディを伴う Comfy Router エラーとして返されます。 + + 指定可能な値: `completed` + + + + インタラクションのタイムラインを順番に示します。ここでは `GeminiInteraction` の型なし `steps` から絞り込み、出力のリーフを参照できるようにしています。プロバイダーは step の種類を追加し続けるため、各項目は `additionalProperties: true` であり、Router の呼び出し元が読み取るフィールドのみを宣言しています。 + + + + この step の型付きコンテンツブロック。 + + + + インラインで配信されるメディアブロックにおける、Base64 エンコードされたインラインメディア。Google はインラインメディアを 4 MB に制限しており、それを超える場合は `delivery: uri` を要求します。 + + + + メディアブロックにおける `data` または `uri` のメディアタイプ。 + + + + 生成されたテキスト。`text` ブロックに存在し、ナイトリーの Router SDK ケースが検証するリーフでもあります(具体的には `model_output` step 上の `steps[type=model_output].content[].text`)。 + + + + ブロックの種類: `text`、`image`、`audio`、`video`、`document`。 + + + + 帯域外で配信されるメディアへの参照。呼び出し元はそれが示す URI から取得します。 + + + + step の種類。`model_output` は生成された回答、`user_input` は retrieval ルートによってエコーバックされた呼び出し元自身のターン、`thought` は内部推論です。ツールの step(`function_call`、`function_result`、`code_execution_call`、`google_search_call`、...)は拡張可能で、Google が随時追加しています。 + + + + Gemini インタラクションのトークン使用量。 + + + + 1 つのモダリティのトークン数。 + + + + `text`、`image`、`audio`、`video`、`document` のいずれか。 + + + + + + + + 1 つのモダリティのトークン数。 + + + + `text`、`image`、`audio`、`video`、`document` のいずれか。 + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 出力 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + diff --git a/ja/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx b/ja/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx new file mode 100644 index 000000000..092712dcc --- /dev/null +++ b/ja/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx @@ -0,0 +1,237 @@ +--- +title: "Comfy Router で Gemini Omni Flash Preview を使用する" +description: "Comfy Router 経由で gemini-interactions/gemini-omni-flash-preview を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gemini Omni Flash Preview" +translationSourceHash: fa5114f1 +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx +translationBlockHashes: + "_intro": 57398175 + "Quick start": bc6cb831 + "Schema": 32f6dbfb + "Examples": 02c0f0cf +--- +{/* GENERATED FILE. Generated from router-schemas/gemini-interactions/gemini-omni-flash-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-flash-preview` の API リファレンス。Comfy Router が Gemini Interactions から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**Model ID:** `gemini-interactions/gemini-omni-flash-preview` + +**Endpoint:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-flash-preview", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-flash-preview", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## Schema + +### 入力 + + + プロンプト文字列、または型付きコンテンツパーツ(text、image、audio、video、document)の配列のいずれか。 + + + + Gemini モデル識別子(例: `gemini-omni-flash-preview`)。Comfy Router のルート `POST /v2/models/gemini-interactions/{model}` ではパスから指定されるため、省略できます。このオペレーションが対応する表記(Comfy Router が `gemini-interactions/` として扱う集合)は gemini-omni-flash-preview と gemini-omni-1.1-flash(supportedGeminiInteractionModels)です。ここでは enum で制約するのではなく列挙しています。プロキシ自身がモデルを検証し、対応していない表記に対しては独自の 400 を返すためです。 + + + + 以前に保存された interaction の ID。ステートフルなマルチターンのビデオ編集を可能にします。 + + +これは Router が `GET /v2/models/gemini-interactions/gemini-omni-flash-preview/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + Router のレスポンスでは常に `completed` です。プロバイダーのその他のステータス(`in_progress`、`requires_action`、`failed`、`cancelled`、`incomplete`、`budget_exceeded`)が Router を通じて呼び出し元に 200 として届くことはありません。これらはプロバイダーのボディを含む Comfy Router エラーとして返されます。 + + 指定可能な値: `completed` + + + + interaction のタイムラインを順序どおりに示します。ここでは出力のリーフを参照可能にするため、`GeminiInteraction` の型なしの `steps` から絞り込んでいます。プロバイダーはステップ種別を追加し続けるため、各項目は `additionalProperties: true` であり、Router の呼び出し元が読むフィールドのみを宣言しています。 + + + + このステップの型付きコンテンツブロック。 + + + + インラインで配信されるメディアブロックにおける、Base64 エンコードされたインラインメディア。Google はインラインメディアを 4 MB までに制限しており、それを超える場合は `delivery: uri` を必須とします。 + + + + メディアブロックにおける `data` または `uri` のメディアタイプ。 + + + + 生成されたテキスト。`text` ブロックに存在し、ナイトリーの Router SDK ケースが検証するリーフでもあります。具体的には `model_output` ステップ上です(`steps[type=model_output].content[].text`)。 + + + + ブロック種別: `text`、`image`、`audio`、`video`、`document`。 + + + + 帯域外で配信されるメディアへの参照。呼び出し元が、それが示す URI から取得します。 + + + + ステップ種別。`model_output` は生成された回答、`user_input` は取得ルートがそのまま返す呼び出し元自身のターン、`thought` は内部推論です。ツールのステップ(`function_call`、`function_result`、`code_execution_call`、`google_search_call` など)は拡張可能で、Google が随時追加しています。 + + + + Gemini interaction のトークン使用量。 + + + + 1 つのモダリティあたりのトークン数。 + + + + `text`、`image`、`audio`、`video`、`document` のいずれか。 + + + + + + + + 1 つのモダリティあたりのトークン数。 + + + + `text`、`image`、`audio`、`video`、`document` のいずれか。 + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 出力 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx b/ja/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx new file mode 100644 index 000000000..913f39e3b --- /dev/null +++ b/ja/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx @@ -0,0 +1,570 @@ +--- +title: "Comfy Router で Gemini 2.5 Flash Image を使用する" +description: "Comfy Router 経由で vertexai/gemini-2.5-flash-image を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gemini 2.5 Flash Image" +translationSourceHash: 6835dcc5 +translationFrom: development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx +translationBlockHashes: + "_intro": 825f99d2 + "Quick start": d08e1cfe + "Schema": cbd6697c + "Examples": 19258aaa +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/vertexai/gemini-2.5-flash-image.json から生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Google から Comfy Router が提供する `vertexai/gemini-2.5-flash-image` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `vertexai/gemini-2.5-flash-image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash-image", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash-image", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## Schema + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは単一のインスタンスです。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオおよびビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオおよびビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルからの思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + 生成のためのサンプリング、長さ、および出力の設定。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自体の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成される画像のアスペクト比 + + + + 任意。生成される画像の画像出力形式。 + + + + 任意。出力画像の圧縮品質。 + + + + 任意。出力を保存する画像形式。 + + + + 任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + 応答で生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じ応答を返すよう最善を尽くします。決定論的な出力は保証されません。また、モデルや temperature などのパラメータ設定を変更すると、同じ seed 値を使用していても応答にばらつきが生じることがあります。デフォルトでは、ランダムな seed 値が使用されます。以下のモデルで利用可能です: gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +temperature は、topP と topK が適用される応答生成時のサンプリングに使用されます。temperature はトークン選択のランダム性の度合いを制御します。低い temperature は、あまり自由奔放でない、または創造的でない応答が求められるプロンプトに適しており、高い temperature はより多様または創造的な結果につながる可能性があります。temperature が 0 の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対する応答はほぼ確定的ですが、わずかな変動が生じる可能性はあります。モデルが一般的すぎる応答、短すぎる応答を返す場合、またはフォールバック応答を返す場合は、temperature を上げてみてください。 + + 範囲: `0` から `2` + + 形式: `float` + + + + 省略可能。思考機能の設定です。思考とは、モデルが複雑なタスクをより小さなステップに分解し、より高品質な応答を生成するプロセスです。 + + + + 省略可能。true の場合、モデルは応答に自身の思考を含めます。 + + + + 省略可能。モデルの思考プロセス用のトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。 + + + + 省略可能。モデルの思考レベルです。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンはモデルの語彙内のすべてのトークンの中で最も確率の高いものになります。Top-K が 3 の場合、次に選択されるトークンは、temperature を使用して最も確率の高い 3 つのトークンの中から選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus sampling が使用されます。 +Top-P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率の高いもの (top-K を参照) から低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは temperature を使用して A または B のいずれかを次のトークンとして選択し、C は候補から除外します。 +ランダム性の低い応答にはより低い値を、よりランダムな応答にはより高い値を指定してください。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidates に適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへと導くための指示です。たとえば、「できるだけ簡潔に回答してください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各 part 内の content は別々の段落にしてください。 + + + + 1 つのメッセージを構成する順序付けられた part のリストです。part ごとに異なる IANA MIME タイプを持つ場合があります。最大トークン数や画像数などの入力の制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報です。以下の値がサポートされています: user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空のままにするか、未設定にできます。 + + 指定可能な値: `user`、`model` + + + + システムがモデルの知識と範囲外のアクションまたは一連のアクションを実行するために、外部システムと連携できるようにするコードの一部です。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON スキーマ + + + + true の場合、生成済みの画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に有効期限が切れます。 + + + + ビデオ入力の場合、ビデオの開始と終了のオフセットを Duration 形式で指定します。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } および "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定してください。 + + ビデオタイムライン上の位置に対する再生時間オフセットを表します。 + + + + ナノ秒解像度での秒の符号付き小数部。小数を含む負の秒値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)である必要があります。 + + 範囲: `-315576000000` ~ `315576000000` + + + + ビデオタイムライン上の位置に対する再生時間オフセットを表します。 + + + + ナノ秒解像度での秒の符号付き小数部。小数を含む負の秒値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)である必要があります。 + + 範囲: `-315576000000` ~ `315576000000` + + +Router が `GET /v2/models/vertexai/gemini-2.5-flash-image/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash の場合、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオおよびビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 使用可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash の場合、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash の場合、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオおよびビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 使用可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論のステップであることを示します。 + + + + 使用可能な値: `user`、`model` + + + + + + + + + + + + 使用可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 使用可能な値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルバージョン。 + + + + + + + + + + + + + + + + + + + + 使用可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + +Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスの一意な識別子。 + + + + + + + + 出力のみ。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + thoughts 出力内に存在するトークン数。 + + + + ツール使用プロンプト内に存在するトークン数。 + + + + トークンの総数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックの種類(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "inlineData": { + "data": "PGJhc2U2ND4=", + "mimeType": "image/png" + } + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-2.5-flash-image", + "responseId": "7c6b5a49-3827-1605-f4e3-d2c1b0a99887", + "usageMetadata": { + "candidatesTokenCount": 1290, + "promptTokenCount": 11, + "totalTokenCount": 1301 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx b/ja/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx new file mode 100644 index 000000000..e5a91f4ec --- /dev/null +++ b/ja/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx @@ -0,0 +1,567 @@ +--- +title: "Comfy Router で Gemini 3.1 Flash Lite を使用する" +description: "Comfy Router 経由で vertexai/gemini-3.1-flash-lite を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Gemini 3.1 Flash Lite" +translationSourceHash: 442db7a1 +translationFrom: development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx +translationBlockHashes: + "_intro": 063db100 + "Quick start": 963c53e7 + "Schema": c1f3ccb6 + "Examples": 2ebce337 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-3.1-flash-lite.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-3.1-flash-lite` の API リファレンス。Google から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用しています(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `vertexai/gemini-3.1-flash-lite` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生バイトのインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`、`model` + + + + 生成のためのサンプリング、長さ、出力の設定。すべてのフィールドはオプションです。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成済み画像のアスペクト比率 + + + + オプション。生成済み画像の画像出力形式。 + + + + オプション。出力画像の圧縮品質。 + + + + オプション。出力を保存する画像形式。 + + + + オプション。生成済み画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できるトークンの最大数。1 トークンはおよそ 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16`~`65536` + + + + + + + + シードを特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、temperature などのモデルやパラメータ設定を変更すると、同じシード値を使用してもレスポンスが変動する可能性があります。デフォルトでは、ランダムなシード値が使用されます。以下のモデルで利用可能です: gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +温度は、topP と topK が適用される際に行われる応答生成中のサンプリングに使用されます。温度はトークン選択におけるランダム性の度合いを制御します。低い温度は、あまり自由奔放でない、または創造性を必要としないプロンプトに適しており、高い温度はより多様な、または創造的な結果をもたらす可能性があります。温度が 0 の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対する応答はほぼ決定的になりますが、わずかなばらつきが生じる可能性は依然としてあります。モデルが返す応答が一般的すぎる、短すぎる、またはフォールバック応答を返す場合は、温度を上げてみてください + + 範囲: `0` から `2` + + 形式: `float` + + + + オプション。思考機能の設定です。思考とは、モデルが複雑なタスクを小さなステップに分解して、より高品質な応答を生成するプロセスです。 + + + + オプション。true の場合、モデルは応答に自身の思考を含めます。 + + + + オプション。モデルの思考プロセスに割り当てるトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。 + + + + オプション。モデルの思考レベルです。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力用のトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンはモデルの語彙内のすべてのトークンの中で最も確率が高いものになります。Top-K が 3 の場合、次のトークンは確率が上位 3 つのトークンの中から温度を用いて選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力用のトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率の高いもの(top-K を参照)から低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは温度を用いて A または B のいずれかを次のトークンとして選択し、C は候補から除外します。 +よりランダム性の低い応答には低い値を、よりランダム性の高い応答には高い値を指定してください。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidates に対して適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへと導くための指示です。たとえば、「できるだけ簡潔に答えてください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各 part のコンテンツは別々の段落にしてください。 + + + + 単一のメッセージを構成する順序付けされた parts のリストです。part ごとに異なる IANA MIME タイプを持つ場合があります。最大トークン数や画像数などの入力の制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報です。次の値がサポートされています: user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空白のままか未設定にできます。 + + 指定可能な値: `user`、`model` + + + + システムがモデルの知識と範囲外のアクションまたは一連のアクションを実行するために、外部システムとやり取りできるようにするコードの一部です。関数呼び出しを参照してください。 + + + + + + + + + + + + + + + + 関数のパラメータ用の JSON スキーマ + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に失効します。 + + + + ビデオ入力の場合、ビデオの開始と終了のオフセットを Duration 形式で指定します。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } および "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定する必要があります。 + + ビデオタイムライン位置の再生時間オフセットを表します。 + + + + ナノ秒単位の精度で表される、符号付きの秒の小数部です。小数を含むネガティブな秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数です。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` ~ `315576000000` + + + + ビデオタイムライン位置の再生時間オフセットを表します。 + + + + ナノ秒単位の精度で表される、符号付きの秒の小数部です。小数を含むネガティブな秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数です。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` ~ `315576000000` + + +Router が `GET /v2/models/vertexai/gemini-3.1-flash-lite/openapi.json` で提供している schema から生成されたもので、これはリクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは単一のインスタンスです。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 使用可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生バイトのインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 使用可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + この部分がモデルからの思考/推論ステップであることを示します。 + + + + 使用可能な値: `user`、`model` + + + + + + + + + + + + 使用可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 使用可能な値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルバージョン。 + + + + + + + + + + + + + + + + + + + + 使用可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + +指定可能な値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力専用。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + thoughts 出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの総数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.1-flash-lite", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/google/gemini-3-7-flash/code.mdx b/ja/development/comfy-router/models/google/gemini-3-7-flash/code.mdx new file mode 100644 index 000000000..6eed45de8 --- /dev/null +++ b/ja/development/comfy-router/models/google/gemini-3-7-flash/code.mdx @@ -0,0 +1,567 @@ +--- +title: "Comfy Router で Gemini 3.7 Flash を使う" +description: "Comfy Router 経由で vertexai/gemini-3.7-flash を呼び出します: endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gemini 3.7 Flash" +translationSourceHash: 34f567fc +translationFrom: development/comfy-router/models/google/gemini-3-7-flash/code.mdx +translationBlockHashes: + "_intro": bb1d4fb3 + "Quick start": 99a8441f + "Schema": 5b123ea5 + "Examples": 1da8dd0c +--- +{/* 生成済みファイル。`router-schemas/vertexai/gemini-3.7-flash.json` から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Google が提供し、Comfy Router が配信する `vertexai/gemini-3.7-flash` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `vertexai/gemini-3.7-flash` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.7-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.7-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(オーディオなし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生バイトのインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(オーディオなし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルからの思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + 生成のためのサンプリング、長さ、出力の設定。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作に従います。 + + + + 画像生成の設定 + + + + 生成済み画像のアスペクト比 + + + + 任意。生成済み画像の画像出力フォーマット。 + + + + 任意。出力画像の圧縮品質。 + + + + 任意。出力を保存する画像フォーマット。 + + + + 任意。生成済み画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できるトークンの最大数。トークンは約 4 文字です。100 トークンはおおよそ 60~80 語に相当します。 + + 範囲: `16` から `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、同じ seed 値を使用しても、モデルや temperature などのパラメータ設定を変更すると、レスポンスが変動する可能性があります。デフォルトでは、ランダムな seed 値が使用されます。次のモデルで利用可能です: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +温度は、応答生成中のサンプリングに使用されます。これは topP と topK が適用されるときに行われます。温度はトークン選択におけるランダム性の度合いを制御します。低い温度は、あまり自由度が高くない、あるいは創造的でない応答が求められるプロンプトに適しており、高い温度はより多様または創造的な結果につながる可能性があります。温度 0 は、常に最も確率の高いトークンが選択されることを意味します。この場合、特定のプロンプトに対する応答はほとんど決定論的ですが、わずかな変動は依然として起こり得ます。モデルが一般的すぎる応答や短すぎる応答を返す場合、またはモデルがフォールバック応答を返す場合は、温度を上げてみてください + + 範囲: `0` から `2` + + 形式: `float` + + + + 任意。思考機能の設定。思考とは、モデルが複雑なタスクをより小さなステップに分解して、より高品質な応答を生成するプロセスです。 + + + + 任意。true の場合、モデルは応答に自身の思考を含めます。 + + + + 任意。モデルの思考プロセスに割り当てるトークン予算。モデルはこの予算内に収まるよう最善を尽くします。 + + + + 任意。モデルの思考レベル。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力するトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンはモデルの語彙全体の中で最も確率の高いものになります。Top-K が 3 の場合、次のトークンは確率の高い上位 3 個のトークンの中から温度を用いて選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力するトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率の高いもの (top-K を参照) から最も低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは温度を用いて A または B のいずれかを次のトークンとして選択し、C は候補から除外されます。 +ランダム性の低い応答にはより低い値を、ランダム性の高い応答にはより高い値を指定してください。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定。GenerateContentResponse.candidates に対して適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへ導くための指示。たとえば「できるだけ簡潔に回答してください」「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各 part の content は別々の段落にしてください。 + + + + 1 つのメッセージを構成する、順序付けられた part のリスト。part ごとに異なる IANA MIME タイプを持つ場合があります。最大トークン数や画像数などの入力の制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報。次の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空欄または未設定のままにできます。 + + 指定可能な値: `user`、`model` + + + + システムが外部システムと連携して、モデルの知識と範囲外のアクションまたは一連のアクションを実行できるようにするコードの断片。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON schema + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に期限切れになります。 + + + + ビデオ入力の場合、Duration 形式でのビデオの開始オフセットと終了オフセット。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } と "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定してください。 + + ビデオタイムライン位置に対する再生時間のオフセットを表します。 + + + + ナノ秒単位で表される秒の符号付き小数部。小数部を含むネガティブな秒値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 時間幅の秒(符号付き)。-315,576,000,000 から +315,576,000,000 まで(両端を含む)の範囲でなければなりません。 + + 範囲: `-315576000000` から `315576000000` まで + + + + ビデオタイムライン位置に対する再生時間のオフセットを表します。 + + + + ナノ秒単位で表される秒の符号付き小数部。小数部を含むネガティブな秒値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 時間幅の秒(符号付き)。-315,576,000,000 から +315,576,000,000 まで(両端を含む)の範囲でなければなりません。 + + 範囲: `-315576000000` から `315576000000` まで + + +Router が `GET /v2/models/vertexai/gemini-3.7-flash/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に照らし合わせるドキュメントと同じものです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生バイトのインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論のステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 指定可能な値: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルのバージョン。 + + + + + + + + + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + +Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力のみ。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの総サイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + 思考の出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの総数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.7-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/google/gemini-3-8-flash/code.mdx b/ja/development/comfy-router/models/google/gemini-3-8-flash/code.mdx new file mode 100644 index 000000000..0df037d7e --- /dev/null +++ b/ja/development/comfy-router/models/google/gemini-3-8-flash/code.mdx @@ -0,0 +1,566 @@ +--- +title: "Comfy Router で Gemini 3.8 Flash を使う" +description: "Comfy Router 経由で vertexai/gemini-3.8-flash を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gemini 3.8 Flash" +translationSourceHash: 7422d325 +translationFrom: development/comfy-router/models/google/gemini-3-8-flash/code.mdx +translationBlockHashes: + "_intro": 9675ac82 + "Quick start": 2223913a + "Schema": ddb5baa0 + "Examples": 48b9d5db +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/vertexai/gemini-3.8-flash.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-3.8-flash` の API リファレンスです。これは Google から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `vertexai/gemini-3.8-flash` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.8-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.8-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツです。単一ターンのクエリでは単一のインスタンスになります。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン上限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生バイトのインラインデータです。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディングです。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ上限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン上限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`、`model` + + + + 生成のためのサンプリング、長さ、出力の設定です。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成される画像のアスペクト比 + + + + 任意。生成される画像の画像出力形式です。 + + + + 任意。出力画像の圧縮品質です。 + + + + 任意。出力を保存する画像形式です。 + + + + 任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できるトークンの最大数です。1 トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、モデルや temperature などのパラメータ設定を変更すると、同じ seed 値を使用していてもレスポンスが変動することがあります。デフォルトではランダムな seed 値が使用されます。以下のモデルで利用できます: gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +The temperature is used for sampling during response generation, which occurs when topP and topK are applied. Temperature controls the degree of randomness in token selection. Lower temperatures are good for prompts that require a less open-ended or creative response, while higher temperatures can lead to more diverse or creative results. A temperature of 0 means that the highest probability tokens are always selected. In this case, responses for a given prompt are mostly deterministic, but a small amount of variation is still possible. If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature + + 範囲: `0` から `2` + + 形式: `浮動小数点` + + + + オプション。思考機能の設定です。思考とは、モデルが複雑なタスクをより小さなステップに分解し、より高品質な応答を生成するプロセスです。 + + + + オプション。true の場合、モデルは自身の思考を応答に含めます。 + + + + オプション。モデルの思考プロセスに割り当てるトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。 + + + + オプション。モデルの思考レベルです。 + + 取り得る値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力用のトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンはモデルの語彙内のすべてのトークンの中で最も確率が高いものになります。Top-K が 3 の場合、次のトークンは温度を用いて、最も確率が高い 3 つのトークンの中から選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力用のトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率が高いもの (top-K を参照) から最も低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは温度を用いて A または B のいずれかを次のトークンとして選択し、C は候補から除外します。 +ランダム性の低い応答には低い値を、ランダム性の高い応答には高い値を指定します。 + + 範囲: `0` から `1` + + 形式: `浮動小数点` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidates に適用されます。 + + + + 取り得る値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 取り得る値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへ導くための指示です。たとえば「できるだけ簡潔に答えてください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各パートのコンテンツは別々の段落にしてください。 + + + + 1 つのメッセージを構成する、順序付けられたパートのリストです。パートごとに異なる IANA MIME タイプを持つ場合があります。最大トークン数や画像数などの入力の制限については、Google モデルページのモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報です。次の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model 値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空のままにするか、未設定にできます。 + + 取り得る値: `user`、`model` + + + + モデルの知識や範囲外でアクションまたは一連のアクションを実行するために、システムが外部システムと連携できるようにするコードです。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON スキーマ + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に期限切れになります。 + + + + ビデオ入力の場合、Duration 形式でビデオの開始オフセットと終了オフセットを指定します。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } と "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提供されている場合にのみ指定してください。 + + ビデオのタイムライン位置に対する再生時間のオフセットを表します。 + + + + ナノ秒解像度での符号付きの秒の小数部分。小数を含む負の秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` + + + + ビデオのタイムライン位置に対する再生時間のオフセットを表します。 + + + + ナノ秒解像度での符号付きの秒の小数部分。小数を含む負の秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` + + +Router が `GET /v2/models/vertexai/gemini-3.8-flash/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツです。単一ターンのクエリでは単一のインスタンスになります。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash の場合、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生バイトのインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、そのデータのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash の場合、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論のステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 指定可能な値: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルのバージョン。 + + + + + + + + + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + +指定可能な値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力専用。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの総サイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + thoughts 出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの総数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックの種類(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.8-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + diff --git a/ja/development/comfy-router/models/google/gemini/code.mdx b/ja/development/comfy-router/models/google/gemini/code.mdx new file mode 100644 index 000000000..e0342a89f --- /dev/null +++ b/ja/development/comfy-router/models/google/gemini/code.mdx @@ -0,0 +1,788 @@ +--- +title: "Comfy Router で Google Gemini を使用する" +description: "Comfy Router 経由で HTTP を使って Google Gemini のテキストモデルを呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Google Gemini" +translationSourceHash: 9ed5f7bd +translationFrom: development/comfy-router/models/google/gemini/code.mdx +translationBlockHashes: + "_intro": 9975ebcd + "Quick start": 96c7cde8 + "Schema": 226eecab + "Examples": 4bb73c12 +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Google Gemini の API リファレンス。Google Gemini は Google のマルチモーダルテキストモデル群で、Flash および Pro の各ティアにわたり、高速なドラフト作成から深い推論までをカバーします。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用します。cURL スニペットは raw HTTP 経由で同じ呼び出しを行います。 + +呼び出したいモデルを選択してください。モデルは 1 つのリクエストとレスポンスの形状を共有しており、以下で一度だけ説明します。 + + +**モデル ID:** `vertexai/gemini-3.1-pro-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-pro-preview", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-pro-preview", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**モデル ID:** `vertexai/gemini-3.5-flash` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**モデル ID:** `vertexai/gemini-2.5-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-pro", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-pro", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**モデルID:** `vertexai/gemini-2.5-flash` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは単一のインスタンスになります。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度には制限がありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生のバイトによるインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度には制限がありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルからの思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`、`model` + + + + 生成のためのサンプリング、長さ、出力の設定。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成画像のアスペクト比 + + + + 任意。生成画像の画像出力形式。 + + + + 任意。出力画像の圧縮品質。 + + + + 任意。出力を保存する画像形式。 + + + + 任意。生成画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できるトークンの最大数。トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、モデルや temperature などのパラメータ設定を変更すると、同じ seed 値を使用してもレスポンスにばらつきが生じることがあります。デフォルトでは、ランダムな seed 値が使用されます。次のモデルで利用可能です: gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +temperature はレスポンス生成中のサンプリングに使用され、これは topP と topK が適用されるときに発生します。temperature はトークン選択におけるランダム性の度合いを制御します。低い temperature は、あまり自由度の高くない回答や創造性を必要としないプロンプトに適しており、高い temperature はより多様で創造的な結果をもたらす可能性があります。temperature が 0 の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対するレスポンスはほぼ決定的になりますが、わずかなばらつきが生じる可能性は残ります。モデルが一般的すぎる回答、短すぎる回答を返す場合、またはフォールバック応答を返す場合は、temperature を上げてみてください。 + + 範囲: `0` ~ `2` + + 形式: `float` + + + + 任意。thinking 機能の設定です。thinking とは、モデルが複雑なタスクをより小さなステップに分解して、より高品質なレスポンスを生成するプロセスです。 + + + + 任意。true の場合、モデルはレスポンスに自身の思考を含めます。 + + + + 任意。モデルの thinking プロセスに割り当てるトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。 + + + + 任意。モデルの thinking レベルです。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力するトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンはモデルの語彙全体の中で最も確率の高いものになります。Top-K が 3 の場合、次のトークンは最も確率の高い 3 つのトークンの中から temperature を用いて選択されます。 + + 範囲: `1` ~ `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力するトークンを選択する方法を変更します。トークンは確率の高いもの(top-K を参照)から低いものへと、その確率の合計が top-P の値に等しくなるまで選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは temperature を用いて A または B のいずれかを次のトークンとして選択し、C は候補から除外されます。 +ランダム性の低いレスポンスには低い値を、ランダム性の高いレスポンスには高い値を指定してください。 + + 範囲: `0` ~ `1` + + 形式: `float` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidates に対して適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへ導くための指示です。たとえば、「できるだけ簡潔に回答してください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン上限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各 part の content は別々の段落にしてください。 + + + + 単一のメッセージを構成する順序付けられた part のリストです。part ごとに異なる IANA MIME タイプを持つ場合があります。トークンの最大数や画像の数など、入力の制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの役割です。次の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターン会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空欄または未設定のままにできます。 + + 指定可能な値: `user`、`model` + + + + システムが外部システムと連携して、モデルの知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON スキーマ + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に有効期限が切れます。 + + + + ビデオ入力の場合、ビデオの開始オフセットと終了オフセットを Duration 形式で指定します。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } および "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定してください。 + + ビデオタイムライン上の位置に対する再生時間オフセットを表します。 + + + + ナノ秒解像度での符号付き秒の小数部。小数部を伴うネガティブな秒の値であっても、nanos の値は非ネガティブでなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 期間の符号付き秒数。-315,576,000,000 以上 +315,576,000,000 以下である必要があります。 + + 範囲: `-315576000000` から `315576000000` まで + + + + ビデオタイムライン上の位置に対する再生時間オフセットを表します。 + + + + ナノ秒解像度での符号付き秒の小数部。小数部を伴うネガティブな秒の値であっても、nanos の値は非ネガティブでなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 期間の符号付き秒数。-315,576,000,000 以上 +315,576,000,000 以下である必要があります。 + + 範囲: `-315576000000` から `315576000000` まで + + +`GET /v2/models/vertexai/gemini-3.1-pro-preview/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全カテゴリに違反する確率 + + 指定可能な値: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルバージョン。 + + + + + + + + + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全カテゴリに違反する確率 + +Possible values: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力専用。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプト全体のサイズを表し、キャッシュされたコンテンツのトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + thoughts 出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの総数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence." + } + ] + } + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256 + } +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "text": "A single red maple leaf rests on a plain white background, its edges sharp and its color deep." + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 18, + "candidatesTokenCount": 24 + } +} +``` + + diff --git a/ja/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx b/ja/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..df7658daa --- /dev/null +++ b/ja/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx @@ -0,0 +1,201 @@ +--- +title: "Comfy Router で Imagen 3.0 Fast Generate 001 を使用する" +description: "Comfy Router 経由で vertexai/imagen-3.0-fast-generate-001 を呼び出します。endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Imagen 3.0 Fast Generate 001" +translationSourceHash: e525f52a +translationFrom: development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 7d487c80 + "Quick start": 00063379 + "Schema": 60702cd0 + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-fast-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Google の Comfy Router が提供する `vertexai/imagen-3.0-fast-generate-001` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `vertexai/imagen-3.0-fast-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-fast-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + 画像生成用のテキストプロンプト + + + + + + + + + + + + 指定可能な値: `1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 範囲: `0` から `100` + + + + 指定可能な値: `image/png`、`image/jpeg` + + + + 指定可能な値: `dont_allow`、`allow_adult`、`allow_all` + + + + 指定可能な値: `block_most`、`block_some`、`block_few`、`block_fewest` + + + + 範囲: `1` から `4` + + + + フォーマット: `uint32` + + + + + + +Router が `GET /v2/models/vertexai/imagen-3.0-fast-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + Base64 エンコードされた画像コンテンツ + + フォーマット: `byte` + + + + 生成された画像の MIME タイプ + + + + この画像の生成に使用された、拡張または書き換えられたプロンプト + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx b/ja/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx new file mode 100644 index 000000000..8475c67a9 --- /dev/null +++ b/ja/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx @@ -0,0 +1,200 @@ +--- +title: "Comfy Router で Imagen 3.0 Generate 001 を使用する" +description: "Comfy Router 経由で vertexai/imagen-3.0-generate-001 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Imagen 3.0 Generate 001" +translationSourceHash: 43b01e2e +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 71b466b2 + "Quick start": 1c03feb4 + "Schema": c1d82edb + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`vertexai/imagen-3.0-generate-001` の API リファレンス。Google から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `vertexai/imagen-3.0-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + 画像生成のテキストプロンプト + + + + + + + + + + + + 指定可能な値: `1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 範囲: `0` から `100` + + + + 指定可能な値: `image/png`、`image/jpeg` + + + + 指定可能な値: `dont_allow`、`allow_adult`、`allow_all` + + + + 指定可能な値: `block_most`、`block_some`、`block_few`、`block_fewest` + + + + 範囲: `1` から `4` + + + + フォーマット: `uint32` + + + + + + +Router が `GET /v2/models/vertexai/imagen-3.0-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + + + + + Base64 エンコードされた画像コンテンツ + + フォーマット: `byte` + + + + 生成された画像の MIME type + + + + この画像の生成に使用された、拡張または書き換えられたプロンプト + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx b/ja/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx new file mode 100644 index 000000000..e1129dc2d --- /dev/null +++ b/ja/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Comfy Router で Imagen 3.0 Generate 002 を使用する" +description: "Comfy Router 経由で vertexai/imagen-3.0-generate-002 を呼び出します: エンドポイント、リクエストの形状、および Router が返すレスポンスについて。" +sidebarTitle: "Imagen 3.0 Generate 002" +translationSourceHash: 63ccef44 +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx +translationBlockHashes: + "_intro": 0286732d + "Quick start": d6972ab3 + "Schema": 187e4020 + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-generate-002.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Google が Comfy Router を通じて提供する `vertexai/imagen-3.0-generate-002` の API Reference です。 + + + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `vertexai/imagen-3.0-generate-002` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-002", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-002", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## Schema + +### 入力 + + + + + + + 画像生成用のテキストプロンプト + + + + + + + + + + + + 指定可能な値: `1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 範囲: `0` から `100` + + + + 指定可能な値: `image/png`、`image/jpeg` + + + + 指定可能な値: `dont_allow`、`allow_adult`、`allow_all` + + + + 指定可能な値: `block_most`、`block_some`、`block_few`、`block_fewest` + + + + 範囲: `1` から `4` + + + + フォーマット: `uint32` + + + + + + +Router が `GET /v2/models/vertexai/imagen-3.0-generate-002/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + Base64 でエンコードされた画像コンテンツ + + フォーマット: `byte` + + + + 生成された画像の MIME タイプ + + + + この画像の生成に使用された、拡張または書き換えられたプロンプト + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/google/nano-banana-2-lite/code.mdx b/ja/development/comfy-router/models/google/nano-banana-2-lite/code.mdx new file mode 100644 index 000000000..026ca29fd --- /dev/null +++ b/ja/development/comfy-router/models/google/nano-banana-2-lite/code.mdx @@ -0,0 +1,590 @@ +--- +title: "Comfy Router で Nano Banana 2 Lite を使用する" +description: "Comfy Router を通じて HTTP で Nano Banana 2 Lite (Gemini 3.1 Flash-Lite Image) による画像を生成するための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Nano Banana 2 Lite" +translationSourceHash: 18fa4c40 +translationFrom: development/comfy-router/models/google/nano-banana-2-lite/code.mdx +translationBlockHashes: + "_intro": a8ccbe06 + "Quick start": 882b3026 + "Schema": bc5fa507 + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Nano Banana 2 Lite の API リファレンスです。Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)は、Google の Nano Banana 画像生成ファミリーの Flash-Lite ティアに位置し、低レイテンシと低コスト向けに調整されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用しており(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)、cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `vertexai/gemini-3.1-flash-lite-image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは単一のインスタンスです。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + この part がモデルによる思考/推論のステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + 生成のサンプリング、長さ、出力の設定。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成済み画像のアスペクト比 + + + + 任意。生成済み画像の画像出力フォーマット。 + + + + 任意。出力画像の圧縮品質。 + + + + 任意。出力を保存する画像フォーマット。 + + + + 任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、モデルや temperature などのパラメータ設定を変更すると、同じ seed 値を使用していてもレスポンスが変化する可能性があります。デフォルトでは、ランダムな seed 値が使用されます。以下のモデルで利用可能です: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + +The temperature is used for sampling during response generation, which occurs when topP and topK are applied. Temperature controls the degree of randomness in token selection. Lower temperatures are good for prompts that require a less open-ended or creative response, while higher temperatures can lead to more diverse or creative results. A temperature of 0 means that the highest probability tokens are always selected. In this case, responses for a given prompt are mostly deterministic, but a small amount of variation is still possible. If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature + + 範囲: `0` ~ `2` + + 形式: `浮動小数点` + + + + オプション。思考機能の構成。思考とは、モデルが複雑なタスクをより小さなステップに分解し、より高品質な応答を生成するプロセスです。 + + + + オプション。true の場合、モデルは応答に自身の思考を含めます。 + + + + オプション。モデルの思考プロセスのトークン予算。モデルはこの予算内に収まるよう最善を尽くします。 + + + + オプション。モデルの思考レベル。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力用のトークンを選択する方法を変更します。top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンの中で最も確率が高いものになります。top-K が 3 の場合、次のトークンは、温度を使用して、最も確率の高い 3 つのトークンの中から選択されます。 + + 範囲: `1` ~ `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力用のトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率が高いもの (top-K を参照) から最も低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは温度を使用して A または B を次のトークンとして選択し、C を候補から除外します。 +ランダム性の低い応答には低い値を、ランダム性の高い応答には高い値を指定します。 + + 範囲: `0` ~ `1` + + 形式: `浮動小数点` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定。GenerateContentResponse.candidates に適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへ導くための指示。たとえば「できるだけ簡潔に回答してください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各部分のコンテンツは別々の段落にしてください。 + + + + 単一のメッセージを構成する順序付けられた parts のリスト。異なる parts は異なる IANA MIME タイプを持つ場合があります。トークンの最大数や画像の数など入力の制限については、Google モデルページのモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報。次の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model 値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空白のままにするか未設定にできます。 + + 指定可能な値: `user`、`model` + + + + モデルの知識と範囲外でアクションまたは一連のアクションを実行するために、システムが外部システムと対話できるようにするコードの一部。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON スキーマ + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インライン base64 データではなく署名付き URL として返されます。URL は 24 時間後に期限切れになります。 + + + + ビデオ入力の場合、Duration 形式でのビデオの開始オフセットと終了オフセット。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } および "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定してください。 + + ビデオタイムライン位置の再生時間オフセットを表します。 + + + + ナノ秒解像度の秒の符号付き端数。端数を伴う負の秒値であっても、nanos 値は非負でなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` まで + + + + ビデオタイムライン位置の再生時間オフセットを表します。 + + + + ナノ秒解像度の秒の符号付き端数。端数を伴う負の秒値であっても、nanos 値は非負でなければなりません。 + + 範囲: `0` から `999999999` まで + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` まで + + +Router が `GET /v2/models/vertexai/gemini-3.1-flash-lite-image/openapi.json` で提供する schema から生成済みです。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + フォーマット: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツです。単一ターンのクエリでは、これは単一のインスタンスになります。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。指定できる値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生のバイト形式のインラインデータです。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコードです。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + フォーマット: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。指定できる値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 指定可能な値: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルのバージョン。 + + + + + + + + + + + + + + + + + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + +指定可能な値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスの一意な識別子。 + + + + + + + + 出力専用。入力のうちキャッシュされた部分(キャッシュ済みコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプト全体のサイズであり、キャッシュ済みコンテンツ内のトークン数も含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + 指定可能な値: `MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + 思考(thoughts)出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの合計数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +デフォルトでは、生成された画像パートには `inlineData.data` に base64 バイトが、`inlineData.mimeType` にメディアタイプが含まれます。バイト列をデコードしてファイルに保存してください。`uploadImagesToStorage: true` の場合、アップロードされた画像は代わりに、署名付き URL には `fileData.fileUri`、メディアタイプには `fileData.mimeType` を使用します。これらの画像は、URL が失効する前にダウンロードしてください。URL は作成から 24 時間後に失効します。アップロードに失敗した場合、その画像はインラインのまま残るため、各パートの `inlineData` または `fileData` を確認してください。テキストパートが含まれることもあり、画像が必ず最初のパートであるとは限りません。 + + diff --git a/ja/development/comfy-router/models/google/nano-banana-2/code.mdx b/ja/development/comfy-router/models/google/nano-banana-2/code.mdx new file mode 100644 index 000000000..a5a7dc284 --- /dev/null +++ b/ja/development/comfy-router/models/google/nano-banana-2/code.mdx @@ -0,0 +1,587 @@ +--- +title: "Comfy Router で Nano Banana 2 を使う" +description: "Comfy Router 経由で HTTP を使って Nano Banana 2 (Gemini 3.1 Flash Image) で画像を生成するための Python、TypeScript、cURL スニペット、およびリクエストのフィールドと結果の形状" +sidebarTitle: "Nano Banana 2" +translationSourceHash: 56517d1b +translationFrom: development/comfy-router/models/google/nano-banana-2/code.mdx +translationBlockHashes: + "_intro": 8a65bc55 + "Quick start": 8373c3fb + "Schema": 5391bdc4 + "Examples": a15177bb +--- +{/* 生成されたファイルです。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Nano Banana 2 の API リファレンスです。Nano Banana 2(Gemini 3.1 Flash Image)はテキストから画像を生成し、入力画像が指定された場合はその画像を編集します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**Model ID:** `vertexai/gemini-3.1-flash-image` + +**Endpoint:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは単一のインスタンスになります。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + フォーマット: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルからの思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`、`model` + + + + 生成のためのサンプリング、長さ、出力の設定。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成される画像のアスペクト比 + + + + 任意。生成された画像の画像出力フォーマット。 + + + + 任意。出力画像の圧縮品質。 + + + + 任意。出力を保存する画像フォーマット。 + + + + 任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + 応答で生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じ応答を返すよう最善を尽くします。決定的な出力は保証されません。また、モデルや temperature などのパラメータ設定を変更すると、同じ seed 値を使用しても応答が変動する可能性があります。デフォルトではランダムな seed 値が使用されます。以下のモデルで利用可能です: gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +temperature は、topP と topK が適用されるときに行われる応答生成中のサンプリングに使用されます。temperature はトークン選択におけるランダム性の度合いを制御します。低い temperature は、あまり自由奔放でない、あるいは創造的でない応答が求められるプロンプトに適しており、高い temperature はより多様な、あるいは創造的な結果につながる可能性があります。temperature が 0 の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対する応答はほぼ決定論的ですが、わずかな変動は依然として起こりえます。モデルが汎用的すぎる応答や短すぎる応答を返す場合、あるいはフォールバック応答を返す場合は、temperature を上げてみてください + + 範囲: `0` から `2` + + 形式: `float` + + + + 任意。thinking 機能の設定です。thinking とは、モデルが複雑なタスクをより小さなステップに分解して、より高品質な応答を生成するプロセスです。 + + + + 任意。true の場合、モデルは応答に自身の思考内容を含めます。 + + + + 任意。モデルの thinking プロセスに割り当てるトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。 + + + + 任意。モデルの thinking レベルです。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K は、モデルが出力するトークンを選択する方法を変更します。top-K が 1 の場合、次に選択されるトークンはモデルの語彙内のすべてのトークンの中で最も確率の高いものになります。top-K が 3 の場合、temperature を用いて、最も確率の高い 3 つのトークンの中から次のトークンが選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力するトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率の高いもの (top-K を参照) から最も低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で、top-P の値が 0.5 の場合、モデルは temperature を用いて A または B のいずれかを次のトークンとして選択し、C は候補から除外されます。 +よりランダム性の低い応答には低い値を、よりランダム性の高い応答には高い値を指定します。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidates に対して適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへ導くための指示です。たとえば、「できるだけ簡潔に回答してください」や「応答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスには影響しません。注: parts にはテキストのみを使用し、各 part の内容は別々の段落にしてください。 + + + + 1 つのメッセージを構成する、順序付けられた part のリストです。part ごとに異なる IANA MIME タイプを持つ場合があります。最大トークン数や画像数などの入力の制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの識別情報です。以下の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターン会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空欄または未設定のままにできます。 + + 指定可能な値: `user`, `model` + + + + モデルの知識と範囲の外にあるアクションまたは一連のアクションを実行するために、システムが外部システムと連携できるようにするコードの一部です。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数パラメータの JSON スキーマ + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データではなく署名付き URL として返されます。URL は 24 時間後に失効します。 + + + + ビデオ入力の場合、Duration 形式でビデオの開始と終了のオフセットを指定します。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } と "endOffset": \{ "seconds": 70 } を設定します。メタデータは、ビデオデータが inlineData または fileData で提供されている場合にのみ指定してください。 + + ビデオタイムライン上の位置に対する再生時間のオフセットを表します。 + + + + 符号付き秒の小数部(ナノ秒解像度)。小数部を含む負の秒値の場合でも、nanos 値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数。-315,576,000,000 ~ +315,576,000,000(両端を含む)の範囲でなければなりません。 + + 範囲: `-315576000000` ~ `315576000000` + + + + ビデオタイムライン上の位置に対する再生時間のオフセットを表します。 + + + + 符号付き秒の小数部(ナノ秒解像度)。小数部を含む負の秒値の場合でも、nanos 値は非負でなければなりません。 + + 範囲: `0` ~ `999999999` + + + + 期間の符号付き秒数。-315,576,000,000 ~ +315,576,000,000(両端を含む)の範囲でなければなりません。 + + 範囲: `-315576000000` ~ `315576000000` + + +Router が `GET /v2/models/vertexai/gemini-3.1-flash-image/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 取り得る値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 取り得る値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論のステップであることを示します。 + + + + 取り得る値: `user`、`model` + + + + + + + + + + + + 取り得る値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 取り得る値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルのバージョン。 + + + + + + + + + + + + + + + + + + + + 取り得る値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力専用。入力内のキャッシュ部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティごとの候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプト全体のサイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。 + + + + モダリティごとのプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + 思考出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの合計数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +デフォルトでは、生成された画像の parts には `inlineData.data` に base64 バイト列が、`inlineData.mimeType` にメディアタイプが含まれます。バイト列をデコードしてファイルに保存してください。`uploadImagesToStorage: true` の場合、アップロードされた画像は代わりに `fileData.fileUri` に署名付き URL、`fileData.mimeType` にメディアタイプを使用します。これらの画像は URL の作成から 24 時間後に期限切れとなるため、それより前にダウンロードしてください。アップロードに失敗した画像はインラインのまま残るため、各 part に `inlineData` または `fileData` が含まれているかを確認してください。テキストの part が現れることもあり、画像が最初の part であるとは限りません。 + + diff --git a/ja/development/comfy-router/models/google/nano-banana-pro/code.mdx b/ja/development/comfy-router/models/google/nano-banana-pro/code.mdx new file mode 100644 index 000000000..d784c9477 --- /dev/null +++ b/ja/development/comfy-router/models/google/nano-banana-pro/code.mdx @@ -0,0 +1,587 @@ +--- +title: "Comfy Router で Nano Banana Pro を使う" +description: "Comfy Router 経由の HTTP で Nano Banana Pro(Gemini 3 Pro Image)を使って画像を生成するための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Nano Banana Pro" +translationSourceHash: 3c4ad72a +translationFrom: development/comfy-router/models/google/nano-banana-pro/code.mdx +translationBlockHashes: + "_intro": a2c404c6 + "Quick start": bf1dcb2a + "Schema": fff3776b + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Nano Banana Pro の API リファレンスです。Nano Banana Pro (Gemini 3 Pro Image) は、Google の Nano Banana 画像生成ファミリーの Pro ティアであり、複雑なシーンや読み取りやすいテキストを対象としています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `vertexai/gemini-3-pro-image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3-pro-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3-pro-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## スキーマ + +### 入力 + + + モデルとの現在の会話のコンテンツです。単一ターンのクエリでは単一のインスタンスになります。マルチターンのクエリでは、会話履歴と最新のリクエストを含む繰り返しフィールドになります。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data または fileUri フィールドで指定されたファイルのメディアタイプです。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 生のバイト形式のインラインデータです。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディングです。メディアをインラインで含める場合は、データのメディアタイプ (mimeType) も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data または fileUri フィールドで指定されたファイルのメディアタイプです。指定可能な値は以下のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。 + + 指定可能な値: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルからの思考/推論ステップであることを示します。 + + + + 指定可能な値: `user`, `model` + + + + 生成のためのサンプリング、長さ、および出力の設定です。すべてのフィールドは任意です。以下で `default` を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル固有の動作にフォールバックします。 + + + + 画像生成の設定 + + + + 生成される画像のアスペクト比 + + + + 任意。生成される画像の画像出力形式です。 + + + + 任意。出力画像の圧縮品質です。 + + + + 任意。出力を保存する画像形式です。 + + + + 任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。 + + + + レスポンスで生成できる最大トークン数です。トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。 + + 範囲: `16` ~ `65536` + + + + + + + + seed を特定の値に固定すると、モデルは繰り返しのリクエストに対して同じレスポンスを返すよう最善を尽くします。決定論的な出力は保証されません。また、同じ seed 値を使用しても、モデルや temperature などのパラメータ設定を変更すると、レスポンスにばらつきが生じる可能性があります。デフォルトでは、ランダムな seed 値が使用されます。以下のモデルで使用できます: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +temperature は、応答生成中のサンプリングに使用されます。これは topP と topK が適用されるときに発生します。temperature はトークン選択におけるランダム性の度合いを制御します。低い temperature は、あまり自由奔放でない、あるいは創造性を必要としないプロンプトに適しており、高い temperature はより多様で創造的な結果につながる可能性があります。temperature が 0 の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対する応答はほぼ確定的ですが、わずかなばらつきが生じる可能性は依然としてあります。モデルが一般的すぎる応答、短すぎる応答を返す場合、またはフォールバック応答を返す場合は、temperature を上げてみてください + + 範囲: `0` から `2` + + 形式: `浮動小数点` + + + + オプション。thinking 機能の設定です。thinking とは、モデルが複雑なタスクをより小さなステップに分解し、より高品質な応答を生成するプロセスです。 + + + + オプション。true の場合、モデルはその思考を応答に含めます。 + + + + オプション。モデルの thinking プロセスに割り当てるトークン予算。モデルはこの予算内に収まるよう最善を尽くします。 + + + + オプション。モデルの thinking レベル。 + + 指定可能な値: `THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K は、モデルが出力するトークンを選択する方法を変更します。top-K が 1 の場合、次に選択されるトークンはモデルの語彙内のすべてのトークンの中で最も確率が高いものになります。top-K が 3 の場合、temperature を使用して、確率の高い上位 3 個のトークンの中から次のトークンが選択されます。 + + 範囲: `1` から `…` + + + + 指定した場合、nucleus サンプリングが使用されます。 +Top-P は、モデルが出力するトークンを選択する方法を変更します。トークンは、その確率の合計が top-P の値に等しくなるまで、最も確率が高いもの (top-K を参照) から低いものへと選択されます。たとえば、トークン A、B、C の確率がそれぞれ 0.3、0.2、0.1 で top-P の値が 0.5 の場合、モデルは temperature を使用して A または B のいずれかを次のトークンとして選択し、C は候補から除外します。 +ランダム性の低い応答には低い値を、ランダム性の高い応答には高い値を指定してください。 + + 範囲: `0` から `1` + + 形式: `浮動小数点` + + + + 安全でないコンテンツをブロックするためのリクエストごとの設定。GenerateContentResponse.candidates に対して適用されます。 + + + + 指定可能な値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 指定可能な値: `OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + モデルをより良いパフォーマンスへと導くための指示。たとえば、「できるだけ簡潔に回答してください」や「回答に専門用語を使用しないでください」などです。テキスト文字列はトークン上限にカウントされます。systemInstruction の role フィールドは無視され、モデルのパフォーマンスに影響しません。注: parts にはテキストのみを使用し、各 part の content は別々の段落にしてください。 + + + + 単一のメッセージを構成する、順序付けられた part のリスト。part ごとに異なる IANA MIME タイプを使用できます。最大トークン数や画像数など入力に関する制限については、Google のモデルページにあるモデル仕様を参照してください。 + + + + テキストプロンプトまたはコードスニペット。 + + + + メッセージを作成するエンティティの identity。以下の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。model の値は、マルチターンの会話中にモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空欄または未設定のままにできます。 + + 指定可能な値: `user`、`model` + + + + システムが外部システムとやり取りして、モデルの知識や範囲外のアクションまたは一連のアクションを実行できるようにするコード。Function calling を参照してください。 + + + + + + + + + + + + + + + + 関数のパラメータの JSON schema + + + + true の場合、生成された画像はクラウドストレージにアップロードされ、インラインの base64 データの代わりに署名付き URL として返されます。URL は 24 時間後に失効します。 + + + + ビデオ入力の場合、Duration 形式でのビデオの開始オフセットと終了オフセット。たとえば、1:00 から始まる 10 秒のクリップを指定するには、"startOffset": \{ "seconds": 60 } と "endOffset": \{ "seconds": 70 } を設定します。このメタデータは、ビデオデータが inlineData または fileData で提示されている場合にのみ指定してください。 + + ビデオタイムライン上の位置に対する再生時間のオフセットを表します。 + + + + ナノ秒解像度での符号付き秒の小数部分。小数を含む負の秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` + + + + ビデオタイムライン上の位置に対する再生時間のオフセットを表します。 + + + + ナノ秒解像度での符号付き秒の小数部分。小数を含む負の秒の値であっても、nanos の値は非負でなければなりません。 + + 範囲: `0` から `999999999` + + + + 時間幅の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)でなければなりません。 + + 範囲: `-315576000000` から `315576000000` + + +Router が `GET /v2/models/vertexai/gemini-3-pro-image/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となる同一のドキュメントです。### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + 形式: `date` + + + + + + + + + + + + + + + + モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。 + + + + + + + + URI ベースのデータ。 + + + + URI + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 取り得る値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。 + + + + プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコード。メディアをインラインで含める場合は、データのメディアタイプ(mimeType)も指定する必要があります。サイズ制限: 20MB + + 形式: `byte` + + + + data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル(音声なし)の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。 + + 取り得る値: `application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + テキストプロンプトまたはコードスニペット。 + + + + このパートがモデルによる思考/推論ステップであることを示します。 + + + + 取り得る値: `user`、`model` + + + + + + + + + + + + 取り得る値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率 + + 取り得る値: `NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + レスポンスが作成されたタイムスタンプ。 + + + + レスポンスの生成に使用されたモデルのバージョン。 + + + + + + + + + + + + + + + + + + + + 取り得る値: `HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + コンテンツが指定された安全性カテゴリに違反する確率Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + レスポンスの一意の識別子。 + + + + + + + + 出力のみ。入力内のキャッシュ部分(キャッシュされたコンテンツ)のトークン数。 + + + + レスポンス内のトークン数。 + + + + モダリティ別の候補トークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュされたコンテンツ内のトークン数が含まれます。 + + + + モダリティ別のプロンプトトークンの内訳。 + + + + 入力または出力コンテンツのモダリティの種類。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定されたモダリティのトークン数。 + + + + 思考出力に含まれるトークン数。 + + + + ツール使用プロンプトに含まれるトークン数。 + + + + トークンの合計数(プロンプト + 候補)。 + + + + リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。 + + +## 例 + +### 入力 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 出力 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +デフォルトでは、生成済みの画像パートには `inlineData.data` に base64 バイト列が、`inlineData.mimeType` にメディアタイプが含まれます。バイト列をデコードしてファイルに保存してください。`uploadImagesToStorage: true` を指定した場合、アップロードされた画像では代わりに `fileData.fileUri` に署名付き URL、`fileData.mimeType` にメディアタイプが入ります。これらの画像は作成から 24 時間後に URL が期限切れになるため、それより前にダウンロードしてください。アップロードに失敗した画像はインラインのまま残るので、各パートに `inlineData` または `fileData` が含まれているかを確認してください。テキストのパートが含まれることもあり、画像が最初のパートであるとは限りません。 + + diff --git a/ja/development/comfy-router/models/heygen/starfish/code.mdx b/ja/development/comfy-router/models/heygen/starfish/code.mdx new file mode 100644 index 000000000..de531b408 --- /dev/null +++ b/ja/development/comfy-router/models/heygen/starfish/code.mdx @@ -0,0 +1,164 @@ +--- +title: "Comfy Router で Starfish を使う" +description: "Comfy Router 経由で heygen/starfish を呼び出します: エンドポイント、リクエスト形状、および Router が返すレスポンスについて説明します。" +sidebarTitle: "Starfish" +translationSourceHash: 61d22fda +translationFrom: development/comfy-router/models/heygen/starfish/code.mdx +translationBlockHashes: + "_intro": 2fa9af39 + "Quick start": 67de0272 + "Schema": e2e4a0e8 + "Examples": 91957ee9 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/heygen/starfish.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`heygen/starfish` の API リファレンス。HeyGen から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `heygen/starfish` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/heygen/starfish` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "heygen/starfish", + { + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("heygen/starfish", { + text: "This is a billing verification test for HeyGen speech generation.", + voice_id: "d2f4f24783d04e22ab49ee8fdc3715e0", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/heygen/starfish \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text\": \"This is a billing verification test for HeyGen speech generation.\", \"voice_id\": \"d2f4f24783d04e22ab49ee8fdc3715e0\"}" +``` + + +## スキーマ + +### 入力 + + + 入力の種類: プレーンテキストの場合は 'text'、SSML マークアップの場合は 'ssml'。デフォルトは 'text' + + + + ベース言語コード (例: 'en')。省略時はテキストから自動検出されます + + + + BCP-47 ロケールタグ (例: 'en-US')。設定されている場合、言語はロケールから推定されます + + + + 速度の倍率 (0.5~2.0) + + 範囲: `0.5` ~ `2` + + 形式: `double` + + + + 合成するテキスト (1~5000 文字) + + + + 使用するボイス ID。ボイスは starfish エンジンをサポートしている必要があります + + +Router が `GET /v2/models/heygen/starfish/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + 成功した HeyGen テキスト読み上げレスポンスのペイロード + + + + 生成されたオーディオファイルの URL + + + + オーディオの再生時間 (秒) + + 形式: `double` + + + + この生成リクエストの一意の識別子 + + + + 単語単位のタイミングデータ + + + + 終了時間 (秒) + + 形式: `double` + + + + 開始時間 (秒) + + 形式: `double` + + + + 単語 + + +## 例 + +### 入力 + +```json +{ + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0" +} +``` + +### 出力 + +```json +{ + "data": { + "audio_url": "https://example.invalid/heygen/starfish/speech.mp3", + "duration": 12.5, + "request_id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9" + } +} +``` + + diff --git a/ja/development/comfy-router/models/ideogram/ideogram-v3/code.mdx b/ja/development/comfy-router/models/ideogram/ideogram-v3/code.mdx new file mode 100644 index 000000000..189182514 --- /dev/null +++ b/ja/development/comfy-router/models/ideogram/ideogram-v3/code.mdx @@ -0,0 +1,207 @@ +--- +title: "Comfy Router で Ideogram V3 を使用する" +description: "Comfy Router 経由で ideogram/ideogram-v3 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Ideogram V3" +translationSourceHash: 42cffa9c +translationFrom: development/comfy-router/models/ideogram/ideogram-v3/code.mdx +translationBlockHashes: + "_intro": 074a583c + "Quick start": bc06ae27 + "Schema": f5d9b6a6 + "Examples": 1fc8611a +--- +{/* GENERATED FILE. Generated from router-schemas/ideogram/ideogram-v3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`ideogram/ideogram-v3` の API リファレンス。Comfy Router が Ideogram から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `ideogram/ideogram-v3` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v3", + { + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/ideogram-v3", { + prompt: "A beautiful mountain landscape", + rendering_speed: "TURBO", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\", \"rendering_speed\": \"TURBO\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比(WxH 形式) + + + + + + + + 重み(任意)を付けられる明示的な色 + + + + 16 進数のカラーコード + + + + 色の重み(任意、0~1) + + 範囲: `0` ~ `1` + + + + カラーパレットの名前 + + + + magic prompt による拡張を有効にするかどうか + + 指定可能な値: `AUTO`、`ON`、`OFF` + + + + 生成時に避けたい内容を指定するテキストプロンプト + + + + 生成する画像の数 + + 範囲: `1` ~ `…` + + + + 画像生成のためのテキストプロンプト + + + + 生成速度と品質のトレードオフを制御するレンダリング速度の設定 + + 指定可能な値: `DEFAULT`、`TURBO`、`QUALITY` + + + + 画像の解像度(WxH 形式) + + + + 再現可能な生成のためのシード値 + + + + 16 進数形式のスタイルコードの配列 + + + + 指定可能な値: `AUTO`、`GENERAL`、`REALISTIC`、`DESIGN`、`FICTION` + + +Router が `GET /v2/models/ideogram/ideogram-v3/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された日時。 + + 形式: `date-time` + + + + 生成された画像情報の配列。 + + + + 画像が安全と見なされるかどうかを示します。 + + + + この画像の生成に使用されたプロンプト。 + + + + 生成された画像の解像度(例: '1024x1024')。 + + + + この生成に使用されたシード値。 + + + + 生成に使用されたスタイルタイプ(例: 'REALISTIC'、'ANIME')。 + + + + 生成された画像の URL。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO" +} +``` + +### 出力 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/ideogram-v3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/ideogram/ideogram-v4/code.mdx b/ja/development/comfy-router/models/ideogram/ideogram-v4/code.mdx new file mode 100644 index 000000000..c214bb25e --- /dev/null +++ b/ja/development/comfy-router/models/ideogram/ideogram-v4/code.mdx @@ -0,0 +1,166 @@ +--- +title: "Comfy Router で Ideogram 4.0 を使用する" +description: "Comfy Router 経由で HTTP を使って Ideogram 4.0 で画像を生成するための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Ideogram 4.0" +translationSourceHash: e77eb667 +translationFrom: development/comfy-router/models/ideogram/ideogram-v4/code.mdx +translationBlockHashes: + "_intro": b9914544 + "Quick start": e25a5de5 + "Schema": da4e8bcc + "Examples": 094048af +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Ideogram 4.0 の API リファレンス。Ideogram 4.0 は Ideogram のテキストから画像へのモデルで、生成済み画像内に読みやすいテキストを描画します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `ideogram/ideogram-v4` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v4", + { + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT", + }, + ) + +print("image:", result["data"][0]["url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { data: { url: string }[] }; +const { data } = await comfy.models.run("ideogram/ideogram-v4", { + text_prompt: "a single red maple leaf on a plain white background, studio lighting", + resolution: "1024x1024", + rendering_speed: "DEFAULT", +}); + +console.log("image:", data.data[0].url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text_prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"resolution\": \"1024x1024\", \"rendering_speed\": \"DEFAULT\"}" +``` + + +## スキーマ + +### 入力 + + + 生成後の著作権検出(Hive による類似性チェックとロゴチェック)を有効にします。 + + + + 構造化された V4 プロンプト。Magic Prompt を無効化し、そのまま使用されます。text_prompt または json_prompt のいずれか一方のみを指定してください。 + + + + 生成速度と品質のトレードオフを制御するレンダリング速度の設定 + + 指定可能な値: `DEFAULT`、`TURBO`、`QUALITY` + + + + WIDTHxHEIGHT 形式の出力解像度。省略すると、モデルがアスペクト比を選択します。サポートされる 2K の値: 2048x2048, 1440x2880, 2880x1440, 1664x2496, 2496x1664, 1792x2240, 2240x1792, 1440x2560, 2560x1440, 1600x2560, 2560x1600, 1728x2304, 2304x1728, 1296x3168, 3168x1296, 1152x2944, 2944x1152, 1248x3328, 3328x1248, 1280x3072, 3072x1280。 + + + + 自然言語のプロンプト。Magic Prompt が自動的に有効になります。text_prompt または json_prompt のいずれか一方のみを指定してください。 + + +Router が `GET /v2/models/ideogram/ideogram-v4/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたタイムスタンプ。 + + フォーマット: `date-time` + + + + 生成された画像情報の配列。 + + + + 画像が安全であると見なされるかどうかを示します。 + + + + この画像の生成に使用されたプロンプト。 + + + + 生成された画像の解像度(例: '1024x1024')。 + + + + この生成に使用されたシード値。 + + + + 生成に使用されたスタイルタイプ(例: 'REALISTIC'、'ANIME')。 + + + + 生成された画像への URL。 + + +## 例 + +### 入力 + +```json +{ + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT" +} +``` + +### 出力 + +```json +{ + "response_type": "url", + "created": "2026-08-27T21:00:00Z", + "data": [ + { + "url": "https://.../image.png", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "seed": 1234567890, + "is_image_safe": true + } + ] +} +``` + +URL は一時的なものです。画像を保持する必要がある場合は、速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx b/ja/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx new file mode 100644 index 000000000..e8054e4b7 --- /dev/null +++ b/ja/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx @@ -0,0 +1,164 @@ +--- +title: "P Image Ideogram を Comfy Router で使用する" +description: "Comfy Router 経由で ideogram/p-image-ideogram を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "P Image Ideogram" +translationSourceHash: 063a5bfe +translationFrom: development/comfy-router/models/ideogram/p-image-ideogram/code.mdx +translationBlockHashes: + "_intro": de73d082 + "Quick start": c96cb422 + "Schema": 3aed066f + "Examples": 20db9e6c +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/ideogram/p-image-ideogram.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`ideogram/p-image-ideogram` の API リファレンスです。Comfy Router が Ideogram から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用しており(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)、cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `ideogram/p-image-ideogram` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/ideogram/p-image-ideogram` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/p-image-ideogram", + { + "prompt": "A beautiful mountain landscape", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/p-image-ideogram", { + prompt: "A beautiful mountain landscape", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/p-image-ideogram \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\"}" +``` + + +## スキーマ + +### 入力 + + + WxH 形式のアスペクト比。サポートされる値: 1x3、3x1、1x2、2x1、9x16、16x9、10x16、16x10、2x3、3x2、3x4、4x3、4x5、5x4、1x1。デフォルトは 1x1。 + + + + 生成後の著作権検出(Hive による類似性およびロゴのチェック)をオプトインします。 + + + + 画像生成用のプロンプト。自然言語、または Ideogram 4.0 の JSON 構造化プロンプトのいずれかです。 + + + + プロンプトのアップサンプリングモード。サポートされる値は AUTO、ON、OFF です。デフォルトは AUTO。 + + + + 生成品質レベル。サポートされる値は VERY_LOW、LOW、MEDIUM、HIGH です。デフォルトは MEDIUM。 + + + + 出力解像度。サポートされる値は 1K と 2K です。デフォルトは 1K。 + + + + 再現可能な生成のためのシード値 + + +Router が `GET /v2/models/ideogram/p-image-ideogram/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 生成が作成されたタイムスタンプ。 + + 形式: `date-time` + + + + 生成済み画像情報の配列。 + + + + 画像が安全であると見なされるかどうかを示します。 + + + + この画像の生成に使用されたプロンプト。 + + + + 生成済み画像の解像度(例: '1024x1024')。 + + + + この生成に使用されたシード値。 + + + + 生成に使用されたスタイルタイプ(例: 'REALISTIC'、'ANIME')。 + + + + 生成済み画像への URL。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A beautiful mountain landscape" +} +``` + +### 出力 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/p-image-ideogram/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx b/ja/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx new file mode 100644 index 000000000..24751c3d3 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx @@ -0,0 +1,288 @@ +--- +title: "Comfy Router で Kling 3.0 Turbo を使用する" +description: "Comfy Router 経由で kling/kling-3.0-turbo を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling 3.0 Turbo" +translationSourceHash: d9428b90 +translationFrom: development/comfy-router/models/kling/kling-3-0-turbo/code.mdx +translationBlockHashes: + "_intro": b67babfc + "Quick start": a4f17f83 + "Schema": 2e661ab0 + "Examples": 0a9a8bbe +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/kling/kling-3.0-turbo.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-3.0-turbo` の API リファレンス。Kling から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `kling/kling-3.0-turbo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-3.0-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-3.0-turbo", + { + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-3.0-turbo", { + prompt: "A neon-lit alley in the rain, slow dolly forward.", + settings: { + aspect_ratio: "16:9", + duration: 5, + resolution: "1080p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-3.0-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A neon-lit alley in the rain, slow dolly forward.\", \"settings\": {\"aspect_ratio\":\"16:9\",\"duration\":5,\"resolution\":\"1080p\"}}" +``` + + +## スキーマ + +### 入力 + + + コールバックアドレスやウォーターマークオプションなどの一般設定。 + + + + タスク結果のコールバック通知 URL。タスクのステータスが変化したときにサーバーが通知します。 + + + + カスタムタスク ID。システムが生成したタスク ID を上書きすることはありませんが、クエリに使用できます。1 つのユーザーアカウント内で一意である必要があります。 + + + + ウォーターマーク付きの結果を同時に生成するかどうか。カスタムウォーターマークには対応していません。 + + + + true の場合はウォーターマーク付きの結果を生成し、false の場合は生成しません。デフォルトは false。 + + + + ポジティブとネガティブの両方の記述を含めることができるプロンプト。推奨の長さは 2500 文字以下です。マルチショットビデオでは "shot n, m, words; shot n, m, words;" の形式を使用します。 + + + + 解像度、アスペクト比、再生時間などの出力設定。 + + + + 生成されるフレームのアスペクト比(幅:高さ)。"16:9"、"9:16"、"1:1" のいずれか。デフォルトは "16:9"。 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + ビデオの長さ(秒)。対応する値は 3 から 15 です。デフォルトは 5。 + + 範囲: `3` から `15` + + + + 生成されるビデオの鮮明さ。"720p" または "1080p" のいずれか。デフォルトは "720p"。 + + 指定可能な値: `720p`, `1080p` + + +スキーマから生成されており、Router が `GET /v2/models/kling/kling-3.0-turbo/openapi.json` で提供するドキュメント、つまりリクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + エラーコード。0 は成功を示します。 + + + + クエリに一致するタスク。 + + + + タスクの課金詳細。 + + + + 消費量。小数点以下 2 桁まで正確です。 + + + + 消費アカウントの種類。残高の場合は "cash"、リソースパッケージの場合は "unit"。 + + + + 消費可能なリソースバンドルの種類(charge_type が "unit" の場合のみ存在)。"video"、"image"、"audio" のいずれか。 + + + + タスクの作成時刻。ミリ秒単位の Unix タイムスタンプ。 + + フォーマット: `int64` + + + + このタスクのカスタムタスク ID(存在する場合)。 + + + + タスク ID。 + + + + タスクのステータス情報。タスクが失敗した場合は失敗理由を表示します。 + + + + タスクの生成済み出力。 + + + + 生成されるビデオの再生時間(秒)。 + + + + グループ化マーカー。グループ化された画像の場合のみ存在します。 + + + + システムが生成した出力 ID。 + + + + 生成される MP3 オーディオの再生時間(秒)。 + + + + 生成されるオーディオの MP3 URL(直リンク防止あり)。 + + + + 生成されるマテリアルの名前。 + + + + マテリアルのソース。"kling" は公式ライブラリを示し、数値はクリエイター ID です。 + + + + マテリアルのステータス。"succeeded" または "deleted" のいずれか。 + + + + 出力コンテンツの種類。"video"、"image"、"audio"、"voice"、"element" のいずれか。 + + + + 生成された結果の URL(直リンク防止あり)。30 日後にクリアされます。 + + + + ウォーターマーク付きの結果の URL(直リンク防止あり)。 + + + + 生成される WAV オーディオの再生時間(秒)。 + + + + 生成されるオーディオの WAV URL(直リンク防止あり)。 + + + + タスクのステータス。"submitted"、"processing"、"succeeded"、"failed" のいずれか。 + + + + タスクの更新時刻。ミリ秒単位の Unix タイムスタンプ。 + + フォーマット: `int64` + + + + エラーメッセージ。 + + + + システムが生成したリクエスト ID。 + + +## 例 + +### 入力 + +```json +{ + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p" + } +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": [ + { + "create_time": 1798761600000, + "id": "kling-v2-task-7c8d9e0f1a2b", + "message": "", + "outputs": [ + { + "duration": "5", + "id": "kling-v2-output-2b1a0f9e8d7c", + "type": "video", + "url": "https://example.invalid/kling/kling-3.0-turbo/generated.mp4" + } + ], + "status": "succeeded", + "update_time": 1798761820000 + } + ], + "message": "SUCCEED", + "request_id": "3d7e5c91-0b42-4f68-9a13-8e2c6d4b0a75" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-image-o1/code.mdx b/ja/development/comfy-router/models/kling/kling-image-o1/code.mdx new file mode 100644 index 000000000..e4a51723a --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-image-o1/code.mdx @@ -0,0 +1,273 @@ +--- +title: "Comfy Router で Kling Image O1 を使用する" +description: "Comfy Router を通じて kling/kling-image-o1 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling Image O1" +translationSourceHash: 596065da +translationFrom: development/comfy-router/models/kling/kling-image-o1/code.mdx +translationBlockHashes: + "_intro": 39366fac + "Quick start": a99898b2 + "Schema": d18a5393 + "Examples": 826db173 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-image-o1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Kling から提供する `kling/kling-image-o1` の API Reference です。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**Model ID:** `kling/kling-image-o1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/kling/kling-image-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-image-o1", + { + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-image-o1", { + aspect_ratio: "1:1", + n: 1, + prompt: "A watercolour koi pond at dawn, soft light.", + resolution: "1k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-image-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"n\": 1, \"prompt\": \"A watercolour koi pond at dawn, soft light.\", \"resolution\": \"1k\"}" +``` + + +## スキーマ + +### 入力 + + + 生成画像のアスペクト比 (幅:高さ)。auto は、入力コンテンツに基づいて画像をインテリジェントに生成します。 + + 指定可能な値: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `3:2`, `2:3`, `21:9`, `auto` + + + + このタスクの結果を受け取るコールバック通知先アドレス。設定すると、タスクステータスが変化したときにサーバーから能動的に通知されます。 + + 形式: `uri` + + + + 要素 ID の設定に基づく参照要素リスト。参照要素と参照画像の合計は 10 を超えてはなりません。 + + + + 要素 ID + + 形式: `int64` + + + + カスタムタスク ID。単一のユーザーアカウント内で一意である必要があります。 + + + + 参照画像リスト。画像の Base64 エンコーディングまたは画像 URL (アクセス可能であること) を入力できます。対応形式は .jpg/.jpeg/.png です。ファイルサイズは 10MB を超えることはできません。幅と高さは 300px 以上、アスペクト比は 1:2.5 ~ 2.5:1 の範囲である必要があります。参照要素と参照画像の合計は 10 を超えてはなりません。 + + + + 画像の Base64 エンコーディングまたは画像 URL (アクセス可能であること) + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信します。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 生成する画像の数。値の範囲 [1,9]。 + + 範囲: `1` から `9` + + + + テキストプロンプト。ポジティブおよびネガティブの記述を含めることができます。2,500 文字を超えてはなりません。Omni モデルは、要素と画像を含むプロンプトを通じてさまざまな機能を実現できます。画像は \<\<\<>>> の形式で指定します。例: \<\<\>>。 + + + + 画像生成の解像度。1k は 1K スタンダード、2k は 2K 高解像度、4k は 4K 高解像度です。 + + 指定可能な値: `1k`, `2k`, `4k` + + + + 単一の画像を生成するか、一連の画像を生成するかを制御します。 + + 指定可能な値: `single`, `series` + + + + シリーズ内の画像数。値の範囲 [2,9]。 + + 範囲: `2` から `9` + + +Router が `GET /v2/models/kling/kling-image-o1/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。 + +### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ (ミリ秒) + + + + タスクの消費ユニット数 + + + + タスク ID + + + + + + + + 顧客定義のタスク ID + + + + + + + + + + + + 画像番号 (0-9) + + + + 生成画像の URL + + 形式: `uri` + + + + 結果が単一の画像か一連の画像か + + 指定可能な値: `single`, `series` + + + + シリーズ画像の結果リスト + + + + シリーズ画像のシーケンス番号 + + + + 生成画像の URL + + 形式: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`, `processing`, `succeed`, `failed` + + + + タスクのステータス情報。タスクが失敗した場合は失敗理由 (プラットフォームのコンテンツリスクコントロールに抵触した場合など) を表示します。 + + + + タスク更新時間、Unix タイムスタンプ (ミリ秒) + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k" +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-image-task-3c4d5e6f7a8b", + "task_result": { + "images": [ + { + "index": 0, + "url": "https://example.invalid/kling/kling-image-o1/generated.png" + } + ], + "result_type": "single" + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761660000 + }, + "message": "SUCCEED", + "request_id": "6a4b2c80-1e93-4d57-b8f2-05c7e9a3d146" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v1-5/code.mdx b/ja/development/comfy-router/models/kling/kling-v1-5/code.mdx new file mode 100644 index 000000000..f7374c6af --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v1-5/code.mdx @@ -0,0 +1,385 @@ +--- +title: "Comfy Router で Kling V1.5 を使用する" +description: "Comfy Router 経由で kling/kling-v1-5 を呼び出します。endpoint、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V1.5" +translationSourceHash: fa5c5f9d +translationFrom: development/comfy-router/models/kling/kling-v1-5/code.mdx +translationBlockHashes: + "_intro": f02fc14d + "Quick start": 21e511ce + "Schema": d81409e3 + "Examples": e835e733 +--- +{/* 生成済みファイル。router-schemas/kling/kling-v1-5.json から `pnpm code-pages:gen` によって生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1-5` の API リファレンス。Comfy Router が Kling から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `kling/kling-v1-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v1-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-5", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-5", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## スキーマ + +### 入力 + + + コールバック通知アドレス。タスクのステータスが変化したときにサーバーが通知します。 + + 形式: `uri` + + + + + + + + + + + + カメラの水平軸(x軸)に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左への回転、正の値は右への回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸(y軸)に沿った移動を制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広くなることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラ動作タイプ。simple: カスタマイズ可能なカメラ動作。down_back: カメラが下降して後方に移動します。forward_up: カメラが前方に移動して上にチルトします。right_turn_forward: 右に回転して前方に移動します。left_turn_forward: 左に回転して前方に移動します。 + + 指定可能な値: `simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほど、モデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 動的ブラシ設定リスト(最大6グループ)。5秒のビデオの場合、軌跡の長さは77座標を超えてはなりません。 + + + + 動的ブラシの適用領域(ユーザーがモーションブラシで作成したマスク画像)。アスペクト比は入力画像と一致している必要があります。 + + 形式: `uri` + + + + + + + + 軌跡ポイントの水平座標。画像の左下隅を原点(0,0)とします。 + + + + 軌跡ポイントの垂直座標。画像の左下隅を原点(0,0)とします。 + + + + 要素IDの設定に基づく参照要素リスト。最大3つの参照要素をサポートします。element_list パラメータと voice_list パラメータは同時に使用できません。 + + + + 要素ID + + 形式: `int64` + + + + カスタマイズされたタスクID。単一のユーザーアカウント内で一意である必要があります。 + + + + 参照画像 - URL または Base64 エンコード文字列。10MB を超えることはできず、解像度は 300*300px 以上、アスペクト比は 1:2.5 ~ 2.5:1 の範囲である必要があります。Base64 には data:image プレフィックスを含めないでください。 + + + + 参照画像 - 終了フレーム制御。URL または Base64 エンコード文字列。10MB を超えることはできず、解像度は 300*300px 以上である必要があります。Base64 には data:image プレフィックスを含めないでください。dynamic_masks/static_mask または camera_control と同時に使用することはできません。 + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質は高くなります。 + + 指定可能な値: `std`、`pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合はそのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大6つのストーリーボードをサポートし、最低1つ必要です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1未満であってはなりません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの連番 + + + + このストーリーボードのプロンプトワード。最大長は512文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効になります。false の場合、shot_type および multi_prompt パラメータは無効になります。 + + +Negative text prompt. It is recommended to supplement negative prompt information through negative sentences directly within positive prompts. + + + + Positive text prompt. Use \<\<\>> to specify a voice matching the voice_list parameter order. A task can reference up to 2 tones. When specifying a tone, the sound parameter value must be on. + + + + Storyboard method. Required when the multi_shot parameter is set to true. + + Possible values: `customize`, `intelligence` + + + + Whether to generate sound simultaneously when generating videos. Only V2.6 and subsequent versions of the model support this parameter. + + Possible values: `on`, `off` + + + + Static Brush Application Area (Mask image created by users using the motion brush). The aspect ratio must match the input image. + + + + List of voices referenced when generating videos. Supports up to 2 voices. The element_list and voice_list parameters are mutually exclusive. + + + + Voice ID returned through the voice customization API or a system preset voice ID. + + + + Whether to generate watermarked results simultaneously. Custom watermark is not supported at this time. + + + + true means generate watermark, false means do not generate. + + +Generated from the schema Router serves at `GET /v2/models/kling/kling-v1-5/openapi.json`, the same document it validates a call against before the request reaches the provider.### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL、直リンク防止形式 + + 形式: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスク失敗時には失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 実行例 + +### 入力 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + diff --git a/ja/development/comfy-router/models/kling/kling-v1-6/code.mdx b/ja/development/comfy-router/models/kling/kling-v1-6/code.mdx new file mode 100644 index 000000000..0c69f6c48 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v1-6/code.mdx @@ -0,0 +1,340 @@ +--- +title: "Comfy Router で Kling V1.6 を使用する" +description: "Comfy Router 経由で kling/kling-v1-6 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V1.6" +translationSourceHash: a868053a +translationFrom: development/comfy-router/models/kling/kling-v1-6/code.mdx +translationBlockHashes: + "_intro": e5d8f71a + "Quick start": fa734b11 + "Schema": ffd91cca + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v1-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Kling から提供する `kling/kling-v1-6` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `kling/kling-v1-6` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v1-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`、`9:16`、`1:1` + + + + コールバック通知先アドレス + + フォーマット: `uri` + + + + + + + + + + + + カメラの水平軸 (x軸) に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転 (x軸) を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量 (z軸) を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転 (y軸) を制御します。負の値は左回転、正の値は右回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸 (y軸) に沿った移動を制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなり、正の値は画角が広くなります。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラムーブメントの種類。simple: カスタマイズ可能なカメラムーブメント。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上にチルトします。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + ビデオの長さ (秒) + + 指定可能な値: `3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + カスタムタスク ID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質は高くなります。 + + 指定可能な値: `std`、`pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報 (プロンプトや再生時間など)。最大 6 つのストーリーボードをサポートし、最小 1 つ必要です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間 (秒)。タスク全体の再生時間を超えてはならず、1 未満であってはなりません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの順序番号 + + + + このストーリーボードのプロンプトワード。最大長 512 文字。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type および multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文として補足することを推奨します。 + + + + ポジティブテキストプロンプト。voice_list パラメータの順序に対応する音声を指定するには \<\<\>> を使用します。1 つのタスクで参照できるトーンは最大 2 つです。トーンを指定する場合、sound パラメータの値は on にする必要があります。 + + + + ストーリーボードの方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`、`intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのはモデルの V2.6 以降のバージョンのみです。 + + 指定可能な値: `on`、`off` + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成する、false は生成しないことを示します。 + + +Router が `GET /v2/models/kling/kling-v1-6/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じドキュメントです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオの ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL(直リンク防止形式) + + 形式: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由が表示されます + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + diff --git a/ja/development/comfy-router/models/kling/kling-v1/code.mdx b/ja/development/comfy-router/models/kling/kling-v1/code.mdx new file mode 100644 index 000000000..2127d7f40 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v1/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Kling V1 を Comfy Router で使用する" +description: "Comfy Router 経由で kling/kling-v1 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V1" +translationSourceHash: ec2e1ff4 +translationFrom: development/comfy-router/models/kling/kling-v1/code.mdx +translationBlockHashes: + "_intro": 88237ef1 + "Quick start": f9ab16cf + "Schema": 16c4273c + "Examples": 14429ff8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-v1.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1` の API リファレンス。Comfy Router が Kling から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `kling/kling-v1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + コールバック通知先アドレス + + フォーマット: `uri` + + + + + + + + + + + + カメラの水平軸(x軸)に沿った動きを制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左回転、正の値は右回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸(y軸)に沿った動きを制御します。負の値は下方向、正の値は上方向を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広くなることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラ動作タイプ。simple: カスタマイズ可能なカメラ動作。down_back: カメラが下降して後方へ移動します。forward_up: カメラが前進して上にチルトします。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + ビデオの再生時間(秒) + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + カスタムタスクID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率が高い。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質が高くなります。 + + 指定可能な値: `std`, `pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信します。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大6つのストーリーボードをサポートし、最小1つです。multi_shot が true で shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1以上である必要があります。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットのシーケンス番号 + + + + このストーリーボードのプロンプトワード。最大長は512文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type と multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文で補うことを推奨します。 + + + + ポジティブテキストプロンプト。\<\<\>> を使用して、voice_list パラメータの順序に対応する音声を指定します。1つのタスクで参照できるトーンは最大2つです。トーンを指定する場合、sound パラメータの値は on である必要があります。 + + + + ストーリーボード方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`, `intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのはモデルの V2.6 以降のバージョンのみです。 + + 指定可能な値: `on`, `off` + + + + 透かし入りの結果を同時に生成するかどうか。現時点ではカスタム透かしはサポートされていません。 + + + + true は透かしを生成する、false は生成しないことを意味します。 + + +`GET /v2/models/kling/kling-v1/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除単位 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの総再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付き生成済みビデオの URL、直リンク防止形式 + + 形式: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスク失敗時に失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v2-1-master/code.mdx b/ja/development/comfy-router/models/kling/kling-v2-1-master/code.mdx new file mode 100644 index 000000000..7af80edd8 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v2-1-master/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router で Kling V2.1 Master を使用する" +description: "Comfy Router 経由で kling/kling-v2-1-master を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V2.1 Master" +translationSourceHash: 82fdab1d +translationFrom: development/comfy-router/models/kling/kling-v2-1-master/code.mdx +translationBlockHashes: + "_intro": a94d25f9 + "Quick start": 1402bdfa + "Schema": 3d3492a4 + "Examples": 14429ff8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-v2-1-master.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1-master` の API リファレンス。Comfy Router が Kling から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `kling/kling-v2-1-master` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + コールバック通知先アドレス + + フォーマット: `uri` + + + + + + + + + + + + カメラの水平軸(x 軸)に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x 軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z 軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y 軸)を制御します。負の値は左回転、正の値は右回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸(y 軸)に沿った移動を制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなり、正の値は画角が広くなります。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラ動作タイプ。simple: カスタマイズ可能なカメラ動作。down_back: カメラが下降して後方へ移動します。forward_up: カメラが前進して上にチルトします。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + カスタムタスク ID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質は高くなります。 + + 指定可能な値: `std`, `pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大 6 つのストーリーボードをサポートし、最小 1 つです。multi_shot が true で shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1 未満にもできません。すべてのストーリーボードの再生時間の合計はタスク全体の再生時間と等しくなります。 + + + + ショットの通し番号 + + + + このストーリーボードのプロンプトワード。最大長は 512 文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type パラメータと multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接否定的な文で補足することを推奨します。 + + + + ポジティブテキストプロンプト。\<ポジティブテキストプロンプト。\>> を使用します。1 つのタスクで最大 2 つのトーンを参照できます。トーンを指定する場合、sound パラメータの値は on にする必要があります。 + + + + ストーリーボード方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`, `intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのは V2.6 以降のバージョンのモデルのみです。 + + 指定可能な値: `on`, `off` + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成する、false は生成しないことを示します。 + + +このスキーマは Router が `GET /v2/models/kling/kling-v2-1-master/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間。Unixタイムスタンプ(ミリ秒) + + + + タスクの控除単位 + + + + タスクID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオID + + + + 生成済みビデオのURL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオのURL。直リンク保護形式 + + 形式: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスク失敗時に失敗理由を表示します + + + + タスク更新時間。Unixタイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエストID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v2-1/code.mdx b/ja/development/comfy-router/models/kling/kling-v2-1/code.mdx new file mode 100644 index 000000000..87782c5b0 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v2-1/code.mdx @@ -0,0 +1,386 @@ +--- +title: "Comfy Router で Kling V2.1 を使用する" +description: "Comfy Router 経由で kling/kling-v2-1 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V2.1" +translationSourceHash: 5300b41e +translationFrom: development/comfy-router/models/kling/kling-v2-1/code.mdx +translationBlockHashes: + "_intro": d015787e + "Quick start": e2365bed + "Schema": 175b57fe + "Examples": e835e733 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1` の API リファレンス。Comfy Router が Kling から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは、生の HTTP 経由で同じ呼び出しを行います。 + +**モデル ID:** `kling/kling-v2-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## スキーマ + +### 入力 + + + コールバック通知先のアドレス。タスクのステータスが変更されるとサーバーが通知します。 + + 形式: `uri` + + + + + + + + + + + + カメラの水平軸(x軸)に沿った動きを制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左への回転、正の値は右への回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸(y軸)に沿った動きを制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広くなることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラムーブメントタイプ。simple: カスタマイズ可能なカメラムーブメント。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上を向きます。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 動的ブラシ設定リスト(最大6グループ)。5秒のビデオの場合、軌跡の長さは77座標を超えてはなりません。 + + + + 動的ブラシの適用領域(ユーザーがモーションブラシを使用して作成したマスク画像)。アスペクト比は入力画像と一致している必要があります。 + + 形式: `uri` + + + + + + + + 軌跡ポイントの水平座標。画像の左下隅を原点(0,0)とします。 + + + + 軌跡ポイントの垂直座標。画像の左下隅を原点(0,0)とします。 + + + + エレメントID設定に基づく参照エレメントリスト。最大3つの参照エレメントをサポートします。element_list パラメータと voice_list パラメータは同時に使用できません。 + + + + エレメントID + + 形式: `int64` + + + + カスタマイズしたタスクID。単一のユーザーアカウント内で一意である必要があります。 + + + + 参照画像: URL または Base64 エンコード文字列。10MB を超えることはできず、解像度は 300*300px 以上、アスペクト比は 1:2.5 ~ 2.5:1 の範囲である必要があります。Base64 には data:image プレフィックスを含めないでください。 + + + + 参照画像: 終了フレーム制御。URL または Base64 エンコード文字列。10MB を超えることはできず、解像度は 300*300px 以上である必要があります。Base64 には data:image プレフィックスを含めないでください。dynamic_masks/static_mask または camera_control と同時に使用することはできません。 + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質が高くなります。 + + 指定可能な値: `std`, `pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大6つのストーリーボードをサポートし、最低1つ必要です。multi_shot が true で shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスクの合計再生時間を超えてはならず、1未満であってもなりません。すべてのストーリーボードの再生時間の合計がタスクの合計再生時間と等しくなります。 + + + + ショットの連番 + + + + このストーリーボードのプロンプトワード。最大長512文字。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type パラメータと multi_prompt パラメータは無効です。 + + +Negative text prompt. It is recommended to supplement negative prompt information through negative sentences directly within positive prompts. + + + + ポジティブテキストプロンプト。\> を使用して、voice_list パラメータの順序に対応する音声を指定します。1つのタスクで最大2つのトーンを参照できます。トーンを指定する場合、sound パラメータの値は on である必要があります。 + + + + 絵コンテ方式。multi_shot パラメータが true に設定されている場合に必須です。 + + 取り得る値: `customize`、`intelligence` + + + + 動画生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのは V2.6 以降のバージョンのモデルのみです。 + + 取り得る値: `on`、`off` + + + + 静的ブラシ適用領域(ユーザーがモーションブラシを使用して作成するマスク画像)。アスペクト比は入力画像と一致する必要があります。 + + + + 動画生成時に参照する音声のリスト。最大2つの音声をサポートします。element_list パラメータと voice_list パラメータは相互に排他的です。 + + + + 音声カスタマイズ API を通じて返される音声 ID、またはシステムプリセットの音声 ID。 + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成する、false は生成しないことを意味します。 + + +スキーマから生成されています。Router は `GET /v2/models/kling/kling-v2-1/openapi.json` でこのスキーマを提供しており、リクエストがプロバイダーに到達する前に、呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + フォーマット: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL、直リンク保護フォーマット + + フォーマット: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx b/ja/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx new file mode 100644 index 000000000..0979fc1d5 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx @@ -0,0 +1,343 @@ +--- +title: "Kling V2.5 Turbo を Comfy Router で使用する" +description: "Comfy Router 経由で kling/kling-v2-5-turbo を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V2.5 Turbo" +translationSourceHash: 5bf98997 +translationFrom: development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx +translationBlockHashes: + "_intro": 451e11db + "Quick start": a34d4881 + "Schema": 5bae6f71 + "Examples": 14429ff8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-v2-5-turbo.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-5-turbo` の API リファレンスです。Comfy Router が Kling から提供しています。 + + + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `kling/kling-v2-5-turbo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v2-5-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-5-turbo", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-5-turbo", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-5-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`、`9:16`、`1:1` + + + + コールバック通知先アドレス + + 形式: `uri` + + + + + + + + + + + + カメラの水平軸(x軸)に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` ~ `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` ~ `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` ~ `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左への回転、正の値は右への回転を示します。 + + 範囲: `-10` ~ `10` + + + + カメラの垂直軸(y軸)に沿った移動を制御します。負の値は下向き、正の値は上向きを示します。 + + 範囲: `-10` ~ `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広くなることを示します。 + + 範囲: `-10` ~ `10` + + + + 定義済みのカメラワークの種類。simple: カスタマイズ可能なカメラワーク。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上にチルトします。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` ~ `1` + + 形式: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + カスタムタスクID + + + + ビデオ生成モード。std: コスト効率の良いスタンダードモード。pro: プロフェッショナルモードで、より長い再生時間と高品質な出力のビデオを生成します。 + + 指定可能な値: `std`、`pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大6つのストーリーボードをサポートし、最低1つ必要です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1未満にもできません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの順番 + + + + このストーリーボードのプロンプト。最大長は512文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効になります。false の場合、shot_type および multi_prompt パラメータは無効になります。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文を追加して補うことを推奨します。 + + + + ポジティブテキストプロンプト。\ を使用して、voice_list パラメータの順序に対応するボイスを指定します。1つのタスクで最大2つの音声トーンを参照できます。トーンを指定する場合、sound パラメータの値は on にする必要があります。 + + + + ストーリーボードの方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`、`intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータはモデルの V2.6 以降のバージョンのみがサポートします。 + + 指定可能な値: `on`、`off` + + + + 透かし入りの結果を同時に生成するかどうか。現時点ではカスタム透かしはサポートされていません。 + + + + true は透かしを生成することを意味し、false は生成しないことを意味します。 + + +`GET /v2/models/kling/kling-v2-5-turbo/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成されたビデオの ID + + + + 生成されたビデオの URL + + フォーマット: `uri` + + + + ウォーターマーク付きの生成されたビデオの URL、直リンク防止形式 + + フォーマット: `uri` + + + + タスクステータス + + 有効な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v2-6/code.mdx b/ja/development/comfy-router/models/kling/kling-v2-6/code.mdx new file mode 100644 index 000000000..dbb2316cf --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v2-6/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router で Kling V2.6 を使用する" +description: "Comfy Router 経由で kling/kling-v2-6 を呼び出します。endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V2.6" +translationSourceHash: cd8992d4 +translationFrom: development/comfy-router/models/kling/kling-v2-6/code.mdx +translationBlockHashes: + "_intro": 5fc8e902 + "Quick start": 5d439f69 + "Schema": c2e4ff7b + "Examples": 14429ff8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-v2-6.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-6` の API リファレンスです。Kling が提供し、Comfy Router が配信します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `kling/kling-v2-6` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v2-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`、`9:16`、`1:1` + + + + コールバック通知先アドレス + + 形式: `uri` + + + + + + + + + + + + カメラの水平軸 (x軸) に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転 (x軸) を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量 (z軸) を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転 (y軸) を制御します。負の値は左回転、正の値は右回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸 (y軸) に沿った移動を制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広がることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラの動きの種類。simple: カスタマイズ可能なカメラの動き。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上を向きます。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性の度合いが低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + ビデオの長さ (秒) + + 指定可能な値: `3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + カスタムタスク ID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間で、より高品質な出力のビデオを生成します。 + + 指定可能な値: `std`、`pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報 (プロンプトや再生時間など)。最大 6 つのストーリーボードをサポートし、最小は 1 です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間 (秒)。タスク全体の再生時間を超えてはならず、1 未満にもできません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの順序番号 + + + + このストーリーボードのプロンプト。最大長は 512 文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type および multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文として補足することを推奨します。 + + + + ポジティブテキストプロンプト。\<\\<\\>> を使用して、voice_list パラメータの順序に対応するボイスを指定します。1 つのタスクで最大 2 つのトーンを参照できます。トーンを指定する場合、sound パラメータの値は on である必要があります。 + + + + ストーリーボードの方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`、`intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのは V2.6 以降のバージョンのモデルのみです。 + + 指定可能な値: `on`、`off` + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成することを意味し、false は生成しないことを意味します。 + + +Router が `GET /v2/models/kling/kling-v2-6/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間。Unix タイムスタンプ(ミリ秒) + + + + タスクの消費ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成されたビデオの ID + + + + 生成されたビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成ビデオの URL。直リンク防止形式 + + 形式: `uri` + + + + タスクのステータス + + 指定可能な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクのステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間。Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v2-master/code.mdx b/ja/development/comfy-router/models/kling/kling-v2-master/code.mdx new file mode 100644 index 000000000..2adab321f --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v2-master/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Kling V2 Master を Comfy Router で使用する" +description: "Comfy Router 経由で kling/kling-v2-master を呼び出します: endpoint、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V2 Master" +translationSourceHash: d0755597 +translationFrom: development/comfy-router/models/kling/kling-v2-master/code.mdx +translationBlockHashes: + "_intro": c470eb90 + "Quick start": b5d778cc + "Schema": 769d8e31 + "Examples": 14429ff8 +--- +{/* 生成済みファイル。router-schemas/kling/kling-v2-master.json から `pnpm code-pages:gen` によって生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-master` の API リファレンスです。Comfy Router が Kling から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデルID:** `kling/kling-v2-master` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v2-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + コールバック通知先アドレス + + 形式: `uri` + + + + + + + + + + + + カメラの水平軸(x軸)に沿った移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左への回転、正の値は右への回転を示します。 + + 範囲: `-10` から `10` + + + + カメラの垂直軸(y軸)に沿った移動を制御します。負の値は下方向、正の値は上方向を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなること、正の値は画角が広がることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラ動作タイプ。simple: カスタマイズ可能なカメラ動作。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上にチルトします。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + ビデオ生成における自由度。値が高いほどモデルの自由度が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + カスタマイズされたタスクID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質が高くなります。 + + 指定可能な値: `std`, `pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合はそのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大 6 つのストーリーボードをサポートし、最小は 1 です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1 未満にもできません。すべてのストーリーボードの再生時間の合計がタスク全体の再生時間と等しくなります。 + + + + ショットの連番 + + + + このストーリーボードのプロンプト。最大長 512 文字。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type および multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文を記述して補うことが推奨されます。 + + + + ポジティブテキストプロンプト。voice_list パラメータの順序に対応する音声を指定するには \<\<\>> を使用します。1 つのタスクで最大 2 つの音声を参照できます。音声を指定する場合、sound パラメータの値は on である必要があります。 + + + + ストーリーボード方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`, `intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。モデルの V2.6 以降のバージョンのみがこのパラメータをサポートします。 + + 指定可能な値: `on`, `off` + + + + 透かし入りの結果を同時に生成するかどうか。現時点ではカスタム透かしはサポートされていません。 + + + + true の場合は透かしを生成し、false の場合は生成しません。 + + +Router が `GET /v2/models/kling/kling-v2-master/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除単位 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL、直リンク保護形式 + + 形式: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v3-omni/code.mdx b/ja/development/comfy-router/models/kling/kling-v3-omni/code.mdx new file mode 100644 index 000000000..ae9958ec6 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v3-omni/code.mdx @@ -0,0 +1,323 @@ +--- +title: "Kling V3 Omni を Comfy Router で使用する" +description: "Comfy Router 経由で kling/kling-v3-omni を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V3 Omni" +translationSourceHash: 7d45d7ed +translationFrom: development/comfy-router/models/kling/kling-v3-omni/code.mdx +translationBlockHashes: + "_intro": 5d80a95b + "Quick start": eb42d71e + "Schema": f9b37353 + "Examples": d0ddb30c +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-v3-omni.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Kling から提供する `kling/kling-v3-omni` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `kling/kling-v3-omni` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v3-omni` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3-omni", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3-omni", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3-omni \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるビデオフレームのアスペクト比(幅:高さ)。先頭フレーム参照またはビデオ編集機能を使用しない場合に必須です。 + + 取り得る値: `16:9`, `9:16`, `1:1` + + + + このタスクの結果を受け取るコールバック通知先アドレス。設定すると、タスクのステータスが変化した際にサーバーが能動的に通知します。 + + フォーマット: `uri` + + + + ビデオの長さ(秒)。ビデオ編集機能(refer_type: base)を使用する場合、出力の再生時間は入力ビデオと同じになり、このパラメータは無効です。 + + 取り得る値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + エレメントIDの設定に基づく参照エレメントリスト。 + + + + エレメントID + + フォーマット: `int64` + + + + カスタムタスクID。単一のユーザーアカウント内で一意である必要があります。 + + + + 参照画像リスト。エレメント、シーン、スタイルなどの参照画像を含めることができ、また先頭または最後のフレームとしてビデオを生成するために使用できます。 + + + + 画像のBase64エンコードまたは画像URL(アクセス可能であることを確認してください)。サポートされるフォーマットには .jpg/.jpeg/.png が含まれます。ファイルサイズは10MBを超えることはできません。幅と高さの寸法は300px以上、アスペクト比は1:2.5~2.5:1の範囲である必要があります。 + + + + 画像が先頭フレームか最後のフレームかを示します。first_frame は先頭フレーム、end_frame は最後のフレームです。現在、最後のフレームのみはサポートされていません。 + + 取り得る値: `first_frame`, `end_frame` + + + + ビデオ生成モード。std: スタンダードモード、720Pビデオを生成、コスト効率が良い。pro: プロフェッショナルモード、1080Pビデオを生成、より高品質なビデオ出力。 + + 取り得る値: `pro`, `std` + + + + モデル名。Comfy Routerを使用する場合は省略するかnullを送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致する必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大6つのストーリーボードをサポートし、最小1つです。multi_shot が true で shot_type が customize の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1未満であってはなりません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの順序番号 + + + + このストーリーボードのプロンプトワード。最大長512文字。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type および multi_prompt パラメータは無効です。 + + + + テキストプロンプトワード。ポジティブおよびネガティブな記述を含めることができます。2,500文字を超えてはなりません。\<\<\<>>> の形式でエレメント、画像、ビデオを指定できます。例: \<\>、\<\<\>>、\<\<\>>。 + + + + ストーリーボード方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 取り得る値: `customize`, `intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。 + + 取り得る値: `on`, `off` + + + + 参照ビデオリスト。特徴の参照ビデオとして、または編集対象のビデオとして使用できます。デフォルトでは編集対象のビデオです。 + + + + ビデオのオリジナルサウンドを保持するかどうか。yes は保持、no は保持しないことを示します。 + + 取り得る値: `yes`, `no` + + + + 参照ビデオタイプ。feature は特徴参照ビデオ、base は編集対象のビデオです。 + + 取り得る値: `feature`, `base` + + + + アップロードされたビデオのURL。.mp4/.mov フォーマットのみサポートされます。再生時間は3~10秒。解像度は720px~2160pxである必要があります。24~60 fpsのフレームレートをサポートします。アップロードできるビデオは1つだけで、サイズは200MBを超えてはなりません。 + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成、false は生成しないことを意味します。 + + +Routerが `GET /v2/models/kling/kling-v3-omni/openapi.json` で提供するスキーマから生成されており、これはリクエストがプロバイダーに到達する前に呼び出しを検証する際に使用する同じドキュメントです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unixタイムスタンプ(ミリ秒) + + + + タスクの消費ユニット数 + + + + タスクID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成されたビデオのID + + + + 生成されたビデオのURL + + 形式: `uri` + + + + ウォーターマーク付きの生成されたビデオのURL、直リンク防止形式 + + 形式: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由が表示されます + + + + タスク更新時間、Unixタイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエストID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/kling-v3/code.mdx b/ja/development/comfy-router/models/kling/kling-v3/code.mdx new file mode 100644 index 000000000..ed13303c4 --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-v3/code.mdx @@ -0,0 +1,340 @@ +--- +title: "Comfy Router で Kling V3 を使用する" +description: "Comfy Router 経由で kling/kling-v3 を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling V3" +translationSourceHash: 3ec18bf8 +translationFrom: development/comfy-router/models/kling/kling-v3/code.mdx +translationBlockHashes: + "_intro": 17dd9361 + "Quick start": 61c5bb98 + "Schema": 771b3376 + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-v3` の API リファレンス。Kling から提供され、Comfy Router 経由で配信されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、raw HTTP 経由の同じ呼び出しです。 + +**モデル ID:** `kling/kling-v3` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオのアスペクト比 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + コールバック通知先アドレス + + 形式: `uri` + + + + + + + + + + + + 水平軸(x軸)に沿ったカメラの移動を制御します。負の値は左、正の値は右を示します。 + + 範囲: `-10` から `10` + + + + 垂直面内でのカメラの回転(x軸)を制御します。負の値は下向きの回転、正の値は上向きの回転を示します。 + + 範囲: `-10` から `10` + + + + カメラのロール量(z軸)を制御します。負の値は反時計回り、正の値は時計回りを示します。 + + 範囲: `-10` から `10` + + + + 水平面内でのカメラの回転(y軸)を制御します。負の値は左回転、正の値は右回転を示します。 + + 範囲: `-10` から `10` + + + + 垂直軸(y軸)に沿ったカメラの移動を制御します。負の値は下、正の値は上を示します。 + + 範囲: `-10` から `10` + + + + カメラの焦点距離の変化を制御します。負の値は画角が狭くなり、正の値は画角が広がることを示します。 + + 範囲: `-10` から `10` + + + + 定義済みのカメラ動作タイプ。simple: カスタマイズ可能なカメラ動作。down_back: カメラが下降しながら後退します。forward_up: カメラが前進しながら上方向に傾きます。right_turn_forward: 右に回転して前進します。left_turn_forward: 左に回転して前進します。 + + 指定可能な値: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + ビデオ生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + ビデオの長さ(秒) + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + カスタムタスクID + + + + ビデオ生成モード。std: スタンダードモード。コスト効率に優れています。pro: プロフェッショナルモード。より長い再生時間のビデオを生成しますが、出力品質は高くなります。 + + 指定可能な値: `std`, `pro` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードの情報(プロンプトや再生時間など)。最大 6 つのストーリーボードをサポートし、最小は 1 です。multi_shot が true かつ shot_type が `customize` の場合に必須です。 + + + + このストーリーボードの再生時間(秒)。タスク全体の再生時間を超えてはならず、1 未満にもできません。すべてのストーリーボードの再生時間の合計は、タスク全体の再生時間と等しくなります。 + + + + ショットの連番 + + + + このストーリーボードのプロンプトワード。最大長 512 文字。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type と multi_prompt パラメータは無効です。 + + + + ネガティブテキストプロンプト。ネガティブプロンプトの情報は、ポジティブプロンプト内に直接ネガティブな文を加えて補足することを推奨します。 + + + + ポジティブテキストプロンプト。voice_list パラメータの順序に対応する音声を指定するには、\<\<\>> を使用します。1 つのタスクで参照できるトーンは最大 2 つです。トーンを指定する場合、sound パラメータの値は on である必要があります。 + + + + ストーリーボード方法。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`, `intelligence` + + + + ビデオ生成時に同時にサウンドを生成するかどうか。このパラメータをサポートするのは V2.6 以降のモデルのみです。 + + 指定可能な値: `on`, `off` + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成することを意味し、false は生成しないことを意味します。 + + +Router が `GET /v2/models/kling/kling-v3/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に Router が使用するドキュメントと同じです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの消費ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + フォーマット: `uri` + + + + ウォーターマーク付き生成済みビデオの URL、直リンク防止フォーマット + + フォーマット: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスク失敗時に失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + diff --git a/ja/development/comfy-router/models/kling/kling-video-o1/code.mdx b/ja/development/comfy-router/models/kling/kling-video-o1/code.mdx new file mode 100644 index 000000000..23dcc437b --- /dev/null +++ b/ja/development/comfy-router/models/kling/kling-video-o1/code.mdx @@ -0,0 +1,323 @@ +--- +title: "Kling Video O1 を Comfy Router で使用する" +description: "Comfy Router 経由で kling/kling-video-o1 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Kling Video O1" +translationSourceHash: db7770c2 +translationFrom: development/comfy-router/models/kling/kling-video-o1/code.mdx +translationBlockHashes: + "_intro": 01639b96 + "Quick start": a416cd0c + "Schema": 6f4cf55b + "Examples": d0ddb30c +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/kling/kling-video-o1.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/kling-video-o1` の API リファレンスです。Kling のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `kling/kling-video-o1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/kling-video-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-video-o1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-video-o1", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-video-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるビデオフレームのアスペクト比(幅:高さ)。先頭フレーム参照またはビデオ編集機能を使用しない場合に必須です。 + + 指定可能な値: `16:9`, `9:16`, `1:1` + + + + このタスクの結果を受け取るコールバック通知先アドレス。設定すると、タスクのステータスが変化した際にサーバーから能動的に通知されます。 + + 形式: `uri` + + + + ビデオの長さ(秒)。ビデオ編集機能(refer_type: base)を使用する場合、出力の再生時間は入力ビデオと同じになり、このパラメータは無効です。 + + 指定可能な値: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + element ID の設定に基づく参照エレメントリスト。 + + + + エレメントID + + 形式: `int64` + + + + カスタムタスクID。1 つのユーザーアカウント内で一意である必要があります。 + + + + 参照画像リスト。エレメント、シーン、スタイルなどの参照画像を含めることも、ビデオを生成するための先頭フレームまたは終了フレームとして使用することもできます。 + + + + 画像の Base64 エンコードまたは画像URL(アクセス可能であることを確認してください)。サポートされる形式は .jpg/.jpeg/.png です。ファイルサイズは 10MB を超えることはできません。幅と高さの寸法は 300px 以上である必要があり、アスペクト比は 1:2.5 ~ 2.5:1 の範囲です。 + + + + 画像が先頭フレームか終了フレームかを指定します。first_frame は先頭フレーム、end_frame は終了フレームです。現時点では終了フレームのみを指定することはサポートされていません。 + + 指定可能な値: `first_frame`, `end_frame` + + + + ビデオ生成モード。std: スタンダードモード。720P のビデオを生成し、コスト効率に優れます。pro: プロフェッショナルモード。1080P のビデオを生成し、より高品質なビデオを出力します。 + + 指定可能な値: `pro`, `std` + + + + モデル名。Comfy Router を使用する場合は省略するか null を送信してください。モデルはリクエストパスによって選択されます。名前を指定する場合は、そのパスと一致している必要があります。 + + + + 各ストーリーボードに関する情報(プロンプトや再生時間など)。最大 6 個のストーリーボードをサポートし、最低 1 個必要です。multi_shot が true かつ shot_type が customize の場合に必須です。 + + + + このストーリーボードの長さ(秒)。タスク全体の長さを超えることはできず、1 未満にすることもできません。すべてのストーリーボードの長さの合計は、タスク全体の長さと等しくなります。 + + + + ショットの連番 + + + + このストーリーボードのプロンプト。最大長は 512 文字です。 + + + + マルチショットビデオを生成するかどうか。true の場合、prompt パラメータは無効です。false の場合、shot_type および multi_prompt パラメータは無効です。 + + + + テキストプロンプト。ポジティブおよびネガティブな記述を含めることができます。2,500 文字を超えることはできません。エレメント、画像、ビデオを \<\<\<>>> の形式で指定できます。例: \<\>, \<\<\>>, \<\<\>>。 + + + + ストーリーボード方式。multi_shot パラメータが true に設定されている場合に必須です。 + + 指定可能な値: `customize`, `intelligence` + + + + ビデオ生成時にサウンドを同時に生成するかどうか。 + + 指定可能な値: `on`, `off` + + + + 参照ビデオのリスト。feature の参照ビデオとして、または編集対象のビデオとして使用できます。デフォルトは編集対象のビデオです。 + + + + ビデオのオリジナルサウンドを保持するかどうか。yes は保持、no は保持しないことを示します。 + + 指定可能な値: `yes`, `no` + + + + 参照ビデオのタイプ。feature は feature 参照ビデオ、base は編集対象のビデオです。 + + 指定可能な値: `feature`, `base` + + + + アップロードするビデオの URL。.mp4/.mov 形式のみサポートされます。再生時間は 3~10 秒です。解像度は 720px 以上 2160px 以下である必要があります。フレームレートは 24~60 fps をサポートします。アップロードできるビデオは 1 本のみで、サイズは 200MB を超えることはできません。 + + + + ウォーターマーク付きの結果を同時に生成するかどうか。現時点ではカスタムウォーターマークはサポートされていません。 + + + + true はウォーターマークを生成、false は生成しないことを意味します。 + + +`GET /v2/models/kling/kling-video-o1/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じドキュメントです。### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除ユニット数 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL(直リンク防止形式) + + 形式: `uri` + + + + タスクステータス + + 有効な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx b/ja/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx new file mode 100644 index 000000000..e49c6499d --- /dev/null +++ b/ja/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx @@ -0,0 +1,245 @@ +--- +title: "Comfy Router で Videos Avatar Image 2video を使用する" +description: "Comfy Router 経由で kling/videos-avatar-image2video を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Videos Avatar Image 2video" +translationSourceHash: 2d32d740 +translationFrom: development/comfy-router/models/kling/videos-avatar-image2video/code.mdx +translationBlockHashes: + "_intro": 6e4b5479 + "Quick start": f4efb7f6 + "Schema": eeb06fe1 + "Examples": ce6803dd +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-avatar-image2video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/videos-avatar-image2video` の API リファレンス。Kling から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `kling/videos-avatar-image2video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/videos-avatar-image2video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-avatar-image2video", + { + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-avatar-image2video", { + image: "https://example.invalid/kling/avatar.png", + mode: "std", + prompt: "The presenter smiles and gestures towards the camera.", + sound_file: "https://example.invalid/kling/voice.mp3", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-avatar-image2video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://example.invalid/kling/avatar.png\", \"mode\": \"std\", \"prompt\": \"The presenter smiles and gestures towards the camera.\", \"sound_file\": \"https://example.invalid/kling/voice.mp3\"}" +``` + + +## Schema + +### 入力 + + + TTS API で生成されたオーディオ ID。過去 30 日以内に生成された 2~300 秒のオーディオのみをサポートします。audio_id または sound_file のいずれかを指定する必要があります (相互排他)。 + + + + このタスクの結果を受け取るコールバック通知アドレス。 + + 形式: `uri` + + + + カスタムタスク ID。単一のユーザーアカウント内で一意である必要があります。 + + + + アバター参照画像。Base64 エンコードまたは画像 URL をサポートします。対応形式: .jpg/.jpeg/.png。最大 10MB、幅/高さの最小 300px、アスペクト比は 1:2.5 から 2.5:1 の間。 + + + + ビデオ生成モード。std: スタンダードモード (コスト効率重視)、pro: プロフェッショナルモード (より長い再生時間、高品質)。 + + 指定可能な値: `std`, `pro` + + + + ポジティブテキストプロンプト。アバターのアクション、感情、カメラの動きを定義できます。 + + + + サウンドファイル。Base64 エンコードされたオーディオまたはアクセス可能なオーディオ URL をサポートします。対応形式: .mp3/.wav/.m4a/.aac (最大 5MB)、2~300 秒。audio_id または sound_file のいずれかを指定する必要があります (相互排他)。 + + + + + + + + ウォーターマーク付きの結果を同時に生成するかどうか。 + + +Router が `GET /v2/models/kling/videos-avatar-image2video/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。 + +### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ (ミリ秒) + + + + タスクの差し引き単位 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間 (秒) + + + + 生成されたビデオ ID + + + + 生成されたビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きで生成されたビデオの URL、ホットリンク保護形式 + + 形式: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`, `processing`, `succeed`, `failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します。 + + + + タスク更新時間、Unix タイムスタンプ (ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3" +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-avatar-task-8b7a6c5d4e3f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-1c2d3e4f5a6b", + "url": "https://example.invalid/kling/videos-avatar-image2video/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761900000 + }, + "message": "SUCCEED", + "request_id": "b41d7c58-9e26-4f03-a7d1-5c8e0b3f2a69" +} +``` + + + diff --git a/ja/development/comfy-router/models/kling/videos-lip-sync/code.mdx b/ja/development/comfy-router/models/kling/videos-lip-sync/code.mdx new file mode 100644 index 000000000..ece7689d2 --- /dev/null +++ b/ja/development/comfy-router/models/kling/videos-lip-sync/code.mdx @@ -0,0 +1,273 @@ +--- +title: "Comfy Router で Videos Lip Sync を使う" +description: "Comfy Router 経由で kling/videos-lip-sync を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて。" +sidebarTitle: "Videos Lip Sync" +translationSourceHash: 18911f14 +translationFrom: development/comfy-router/models/kling/videos-lip-sync/code.mdx +translationBlockHashes: + "_intro": 2cd8e6e0 + "Quick start": eddd7537 + "Schema": 2993a979 + "Examples": 380debef +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-lip-sync.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/videos-lip-sync` の API リファレンスです。Kling から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `kling/videos-lip-sync` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/videos-lip-sync` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-lip-sync", + { + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-lip-sync", { + input: { + mode: "text2video", + text: "Welcome to Comfy Cloud.", + video_id: "kling-video-6f5e4d3c2b1a", + voice_id: "genshin_vindi2", + voice_language: "en", + voice_speed: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-lip-sync \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"mode\":\"text2video\",\"text\":\"Welcome to Comfy Cloud.\",\"video_id\":\"kling-video-6f5e4d3c2b1a\",\"voice_id\":\"genshin_vindi2\",\"voice_language\":\"en\",\"voice_speed\":1}}" +``` + + +## スキーマ + +### 入力 + + + コールバック通知アドレス。タスクのステータスが変更されるとサーバーから通知されます。 + + 形式: `uri` + + + + + + + + オーディオファイルのローカルパス。対応形式: .mp3/.wav/.m4a/.aac、最大ファイルサイズ 5MB。Base64コード。 + + + + リップシンク用のオーディオファイルの送信方法。mode が audio2video の場合に必須です。 + + 指定可能な値: `file`、`url` + + + + オーディオファイルのダウンロードURL。対応形式: .mp3/.wav/.m4a/.aac、最大ファイルサイズ 5MB。 + + + + ビデオ生成モード。text2video: テキストから動画への生成モード、audio2video: オーディオから動画への生成モード + + 指定可能な値: `text2video`、`audio2video` + + + + リップシンクビデオ生成用のテキストコンテンツ。mode が text2video の場合に必須です。最大長は 120 文字です。 + + + + Kling AI によって生成されたビデオの ID。過去 30 日以内に生成された 5 秒または 10 秒のビデオのみサポートします。 + + + + アップロードされたビデオのリンクを取得します。ビデオファイルは .mp4/.mov に対応し、ファイルサイズは 100MB を超えず、ビデオの長さは 2~10 秒です。 + + + + ボイス ID。mode が text2video の場合に必須です。システムは選択可能なさまざまなボイスオプションを提供しています。 + + + + ボイス言語はボイス ID に対応します。 + + 指定可能な値: `zh`、`en` + + + + 話速。有効範囲: 0.8~2.0、小数点第 1 位まで正確です。 + + 範囲: `0.8` から `2` + + +Router が `GET /v2/models/kling/videos-lip-sync/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + エラーコード + + + + + + + + タスク作成時間、Unix タイムスタンプ(ミリ秒) + + + + タスクの控除単位 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成済みビデオ ID + + + + 生成済みビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成済みビデオの URL、直リンク保護形式 + + 形式: `uri` + + + + タスクステータス + + 指定可能な値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクのステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間、Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1 + } +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-lip-sync-task-4f3e2d1c0b9a", + "task_result": { + "videos": [ + { + "duration": "8", + "id": "kling-video-9a8b7c6d5e4f", + "url": "https://example.invalid/kling/videos-lip-sync/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798761780000 + }, + "message": "SUCCEED", + "request_id": "5e0a9b17-6d3c-42f8-91b4-7a2c8d6e0f35" +} +``` + + diff --git a/ja/development/comfy-router/models/kling/videos-video-extend/code.mdx b/ja/development/comfy-router/models/kling/videos-video-extend/code.mdx new file mode 100644 index 000000000..d95f0168d --- /dev/null +++ b/ja/development/comfy-router/models/kling/videos-video-extend/code.mdx @@ -0,0 +1,227 @@ +--- +title: "Comfy Router で Videos Video Extend を使用する" +description: "Comfy Router 経由で kling/videos-video-extend を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Videos Video Extend" +translationSourceHash: 5f7f926c +translationFrom: development/comfy-router/models/kling/videos-video-extend/code.mdx +translationBlockHashes: + "_intro": fbba135e + "Quick start": 61b7b535 + "Schema": c05db7c2 + "Examples": d7326d1b +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/kling/videos-video-extend.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`kling/videos-video-extend` の API リファレンスです。Kling が提供し、Comfy Router から配信されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `kling/videos-video-extend` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/kling/videos-video-extend` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-video-extend", + { + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-video-extend", { + cfg_scale: 0.5, + prompt: "The camera keeps drifting forward down the alley.", + video_id: "kling-video-6f5e4d3c2b1a", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-video-extend \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"cfg_scale\": 0.5, \"prompt\": \"The camera keeps drifting forward down the alley.\", \"video_id\": \"kling-video-6f5e4d3c2b1a\"}" +``` + + +## スキーマ + +### 入力 + + + コールバック通知アドレス。タスクのステータスが変更されるとサーバーが通知します。 + + 形式: `uri` + + + + 動画生成における柔軟性。値が高いほどモデルの柔軟性が低くなり、ユーザーのプロンプトとの関連性が強くなります。 + + 範囲: `0` から `1` + + 形式: `float` + + + + 拡張されたビデオで避けたい要素を指定するネガティブテキストプロンプト + + + + ビデオ拡張を導くためのポジティブテキストプロンプト + + + + 拡張するビデオの ID。テキストから動画へ、画像から動画へ、および以前のビデオ拡張操作で生成されたビデオをサポートします。拡張後の合計再生時間は 3 分を超えることはできません。 + + +Router が `GET /v2/models/kling/videos-video-extend/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。 + +### 出力 + + + エラーコード + + + + + + + + タスク作成時間。Unix タイムスタンプ(ミリ秒) + + + + タスクの控除単位 + + + + タスク ID + + + + + + + + + + + + + + + + + + + + ビデオの合計再生時間(秒) + + + + 生成されたビデオ ID + + + + 生成されたビデオの URL + + 形式: `uri` + + + + ウォーターマーク付きの生成されたビデオの URL。ホットリンク保護形式 + + 形式: `uri` + + + + タスクステータス + + 取り得る値: `submitted`、`processing`、`succeed`、`failed` + + + + タスクステータス情報。タスクが失敗した場合は失敗理由を表示します + + + + タスク更新時間。Unix タイムスタンプ(ミリ秒) + + + + + + + + + + + + エラーメッセージ + + + + リクエスト ID + + +## 例 + +### 入力 + +```json +{ + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a" +} +``` + +### 出力 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-video-extend-task-0a1b2c3d4e5f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-5f4e3d2c1b0a", + "url": "https://example.invalid/kling/videos-video-extend/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798762020000 + }, + "message": "SUCCEED", + "request_id": "c7b6a504-3f2e-41d0-8a9c-6b5d4e3f2a10" +} +``` + + + diff --git a/ja/development/comfy-router/models/krea/krea-2-large/code.mdx b/ja/development/comfy-router/models/krea/krea-2-large/code.mdx new file mode 100644 index 000000000..15f7775d6 --- /dev/null +++ b/ja/development/comfy-router/models/krea/krea-2-large/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Comfy Router で Krea 2 Large を使う" +description: "Comfy Router 経由で krea/krea-2-large を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Krea 2 Large" +translationSourceHash: b67b29a6 +translationFrom: development/comfy-router/models/krea/krea-2-large/code.mdx +translationBlockHashes: + "_intro": 7c6287ca + "Quick start": f1ed8f98 + "Schema": 2003ef08 + "Examples": 91f72543 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/krea/krea-2-large.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-large` の API リファレンス。Krea から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `krea/krea-2-large` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/krea/krea-2-large` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-large", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-large", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-large \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比。次のいずれか: 1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 指定可能な値: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + プロンプト解釈の強度: raw=0、low=10、medium=50、high=100。 + + 指定可能な値: `raw`, `low`, `medium`, `high` + + + + 生成に使用するスタイル参照 + + + + 範囲: `-2` から `2` + + フォーマット: `double` + + + + フォーマット: `uri` + + + + 生成に使用するムードボード。現在は1つのムードボードに限定されています。 + + + + フォーマット: `uuid` + + + + 範囲: `-0.5` から `1.5` + + フォーマット: `double` + + + + + + + + 解像度スケール。次のいずれか: 1K。 + + 指定可能な値: `1K` + + + + + + + + 生成に使用するスタイル(通常は LoRA) + + + + + + + + 範囲: `-2` から `2` + + フォーマット: `double` + + +このスキーマは Router が `GET /v2/models/krea/krea-2-large/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じです。 + +### 出力 + + + フォーマット: `date-time` + + + + フォーマット: `date-time` + + + + フォーマット: `uuid` + + + + 完了した生成。`KreaJob` とは異なり、ここでは null 許容ではありません。`result` に `urls` が含まれないターミナルジョブは Comfy Router のエラーとして返されるため、`200` には常にこれが含まれます。 + + + + 生成ではなく loraTraining ジョブによって設定されます。これらのモデルの `200` には `urls` が含まれます。 + + + + 生成済み画像をダウンロード可能なリンクとして。少なくとも1つあります。空の `urls` を持つ `completed` ジョブは `success_without_output` となり、このドキュメントに到達することはないためです。 + + + + このドキュメントでは常に `completed` です。これは `classifyKrea` が `succeeded` を返す唯一のステータスであり、Krea の語彙は大文字小文字の変換なしで照合されます。 + + 指定可能な値: `completed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 出力 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx b/ja/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx new file mode 100644 index 000000000..4cc068659 --- /dev/null +++ b/ja/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Krea 2 Medium Turbo を Comfy Router で使用する" +description: "Comfy Router 経由で krea/krea-2-medium-turbo を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Krea 2 Medium Turbo" +translationSourceHash: a3351940 +translationFrom: development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx +translationBlockHashes: + "_intro": 711a935d + "Quick start": a1795376 + "Schema": 00afbe49 + "Examples": 91f72543 +--- +{/* GENERATED FILE. Generated from router-schemas/krea/krea-2-medium-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-medium-turbo` の API リファレンス。Krea から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `krea/krea-2-medium-turbo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium-turbo", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium-turbo", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比。次のいずれか: 1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 指定可能な値: `1:1`、`4:3`、`3:2`、`16:9`、`2.35:1`、`4:5`、`2:3`、`9:16` + + + + プロンプト解釈の強さ: raw=0、low=10、medium=50、high=100。 + + 指定可能な値: `raw`、`low`、`medium`、`high` + + + + 生成に使用するスタイル参照 + + + + 範囲: `-2` から `2` + + 形式: `double` + + + + 形式: `uri` + + + + 生成に使用するムードボード。現在は1つのムードボードに制限されています。 + + + + 形式: `uuid` + + + + 範囲: `-0.5` から `1.5` + + 形式: `double` + + + + + + + + 解像度スケール。次のいずれか: 1K。 + + 指定可能な値: `1K` + + + + + + + + 生成に使用するスタイル(通常はLoRA) + + + + + + + + 範囲: `-2` から `2` + + 形式: `double` + + +Routerが `GET /v2/models/krea/krea-2-medium-turbo/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + 形式: `date-time` + + + + 形式: `date-time` + + + + 形式: `uuid` + + + + 完了した生成。`KreaJob` とは異なり、ここではnullableではありません。`result` に `urls` が含まれないターミナルジョブはComfy Routerのエラーとして応答されるため、`200` には常にこれが含まれます。 + + + + 生成ではなくloraTrainingジョブによって設定されます。これらのモデルの `200` には `urls` が含まれます。 + + + + 生成済み画像のダウンロードリンク。`urls` が空の `completed` ジョブは `success_without_output` となり、このドキュメントに到達しないため、少なくとも1つ含まれます。 + + + + このドキュメントでは常に `completed` です。`classifyKrea` が `succeeded` と応答する唯一のステータスであり、Kreaの語彙は大文字と小文字を区別せずに照合されます。 + + 指定可能な値: `completed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 出力 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/krea/krea-2-medium/code.mdx b/ja/development/comfy-router/models/krea/krea-2-medium/code.mdx new file mode 100644 index 000000000..0366fd148 --- /dev/null +++ b/ja/development/comfy-router/models/krea/krea-2-medium/code.mdx @@ -0,0 +1,204 @@ +--- +title: "Krea 2 Medium を Comfy Router で使用する" +description: "Comfy Router 経由で krea/krea-2-medium を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Krea 2 Medium" +translationSourceHash: 90afa1e6 +translationFrom: development/comfy-router/models/krea/krea-2-medium/code.mdx +translationBlockHashes: + "_intro": 89eb9065 + "Quick start": b8fd9100 + "Schema": 5ab8e665 + "Examples": 91f72543 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/krea/krea-2-medium.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Krea の Comfy Router から提供される `krea/krea-2-medium` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `krea/krea-2-medium` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比。次のいずれか: 1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 指定可能な値: `1:1`、`4:3`、`3:2`、`16:9`、`2.35:1`、`4:5`、`2:3`、`9:16` + + + + プロンプトの解釈の強さ: raw=0、low=10、medium=50、high=100。 + + 指定可能な値: `raw`、`low`、`medium`、`high` + + + + 生成に使用するスタイル参照 + + + + 範囲: `-2` から `2` + + 形式: `double` + + + + 形式: `uri` + + + + 生成に使用するムードボード。現在は1つのムードボードに制限されています。 + + + + 形式: `uuid` + + + + 範囲: `-0.5` から `1.5` + + 形式: `double` + + + + + + + + 解像度スケール。次のいずれか: 1K。 + + 指定可能な値: `1K` + + + + + + + + 生成に使用するスタイル(通常は LoRA) + + + + + + + + 範囲: `-2` から `2` + + 形式: `double` + + +Router が `GET /v2/models/krea/krea-2-medium/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 形式: `date-time` + + + + 形式: `date-time` + + + + 形式: `uuid` + + + + 完了した生成結果。`KreaJob` とは異なり、ここでは null 許容ではありません。`result` に `urls` が含まれないターミナルジョブは Comfy Router のエラーとして返されるため、`200` には必ずこれが含まれます。 + + + + 生成ではなく loraTraining ジョブによって設定されます。これらのモデルに対する `200` には `urls` が含まれます。 + + + + 生成済み画像をダウンロード可能なリンクとして示したもの。`urls` が空の `completed` ジョブは `success_without_output` となり、このドキュメントには決して到達しないため、少なくとも1つ含まれます。 + + + + このドキュメントでは常に `completed` です。`classifyKrea` が `succeeded` と返す唯一のステータスであり、Krea の用語は大文字小文字を区別せずに照合されます。 + + 指定可能な値: `completed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 出力 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/krea/krea-2/code.mdx b/ja/development/comfy-router/models/krea/krea-2/code.mdx new file mode 100644 index 000000000..ae7b3a660 --- /dev/null +++ b/ja/development/comfy-router/models/krea/krea-2/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Comfy Router で Krea 2 を使う" +description: "Comfy Router 経由で krea/krea-2 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Krea 2" +translationSourceHash: a2cea386 +translationFrom: development/comfy-router/models/krea/krea-2/code.mdx +translationBlockHashes: + "_intro": 6d04eb77 + "Quick start": 9c4e9060 + "Schema": d1c938ef + "Examples": 91f72543 +--- +{/* GENERATED FILE. Generated from router-schemas/krea/krea-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`krea/krea-2` の API リファレンス。Krea から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `krea/krea-2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/krea/krea-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## スキーマ + +### 入力 + + + アスペクト比。次のいずれか: 1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 指定可能な値: `1:1`、`4:3`、`3:2`、`16:9`、`2.35:1`、`4:5`、`2:3`、`9:16` + + + + プロンプト解釈の強度: raw=0、low=10、medium=50、high=100。 + + 指定可能な値: `raw`、`low`、`medium`、`high` + + + + 生成に使用するスタイル参照 + + + + 範囲: `-2` ~ `2` + + フォーマット: `double` + + + + フォーマット: `uri` + + + + 生成に使用するムードボード。現在は1つのムードボードに制限されています。 + + + + フォーマット: `uuid` + + + + 範囲: `-0.5` ~ `1.5` + + フォーマット: `double` + + + + + + + + 解像度スケール。次のいずれか: 1K。 + + 指定可能な値: `1K` + + + + + + + + 生成に使用するスタイル(通常はLoRA) + + + + + + + + 範囲: `-2` ~ `2` + + フォーマット: `double` + + +Routerが `GET /v2/models/krea/krea-2/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前にRouterが呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + フォーマット: `date-time` + + + + フォーマット: `date-time` + + + + フォーマット: `uuid` + + + + 完了した生成結果。`KreaJob` とは異なり、ここではnull許容ではありません。`result` に `urls` が含まれないターミナルジョブはComfy Routerのエラーとして応答されるため、`200` には常にこれが含まれます。 + + + + 生成ではなくloraTrainingジョブによって設定されます。これらのモデルに対する `200` には `urls` が含まれます。 + + + + 生成済み画像をダウンロード可能なリンクとして示します。`urls` が空の `completed` ジョブは `success_without_output` となり、このドキュメントには決して到達しないため、少なくとも1つ含まれます。 + + + + このドキュメントでは常に `completed` です。`classifyKrea` が `succeeded` と応答する唯一のステータスであり、Kreaの語彙は大文字小文字を変換せずに照合されます。 + + 指定可能な値: `completed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 出力 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx b/ja/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx new file mode 100644 index 000000000..76e9b8d55 --- /dev/null +++ b/ja/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx @@ -0,0 +1,176 @@ +--- +title: "Comfy Router で LTX 2.5 Fast を使用する" +description: "Comfy Router 経由で ltx/ltx-2-5-fast を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて。" +sidebarTitle: "LTX 2.5 Fast" +translationSourceHash: c2334418 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx +translationBlockHashes: + "_intro": d314cc77 + "Quick start": 45d12a7b + "Schema": 27b47ed6 + "Examples": 696cabfd +--- +{/* 生成済みファイル。`router-schemas/ltx/ltx-2-5-fast.json` から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`ltx/ltx-2-5-fast` のAPIリファレンス。LTX から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `ltx/ltx-2-5-fast` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-fast` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-fast", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-fast", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-fast \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオの再生時間(秒単位、最大値は解像度とフレームレートによって異なります) + + 指定可能な値: `2`, `3`, `4`, `5`, `6`, `8`, `10`, `12`, `14`, `16`, `18`, `20` + + + + フレームレート(1 秒あたりのフレーム数) + + 指定可能な値: `24`, `25`, `48`, `50` + + + + ビデオのオーディオを生成します + + + + 生成に使用するモデル。Comfy Router のルート `POST /v2/models/ltx/{model}` では、このフィールドはパスから供給されるため省略できます。この操作で LTX が提供する表記(Comfy Router が `ltx/` として扱う集合)は ltx-2-5-fast と ltx-2-5-pro です。これらは上記のコメントに記載した理由により、enum に制約せずここに書き出しています。各モデルがどの解像度を受け付けるかは、以下の `resolution` プロパティにある `x-comfy-model-resolutions` マトリクスに示されています。 + + + + 生成したいビデオの内容を記述するテキストプロンプト + + + + 出力ビデオの解像度。enum はすべてのモデルにわたる和集合であり、サポートされる集合はモデルごとに異なります。サポートされる組み合わせ: ltx-2-5-fast: 1280x720, 720x1280, 1920x1080, 1080x1920, 2560x1440, 1440x2560, 3840x2160, 2160x3840、ltx-2-5-pro: 1280x720, 720x1280, 1920x1080, 1080x1920。その他の (model, resolution) の組み合わせはサポートされません。v2 ルートではこれらを 400 で拒否します。同じマトリクスは、このプロパティの x-comfy-model-resolutions 拡張として機械可読な形式で公開されています。 + + 指定可能な値: `1280x720`, `720x1280`, `1920x1080`, `1080x1920`, `2560x1440`, `1440x2560`, `3840x2160`, `2160x3840` + + +Router が `GET /v2/models/ltx/ltx-2-5-fast/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + ジョブの完了タイムスタンプ(ISO 8601) + + + + ジョブの作成タイムスタンプ(ISO 8601) + + + + status が failed の場合に存在します + + + + + + + + + + + + 一意のジョブ識別子 + + + + status が completed の場合に存在します。出力 URL は完了から 24 時間後に失効します + + + + 生成済みビデオの URL + + + + ジョブのステータス(pending、processing、completed、failed) + + +## 例 + +### 入力 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 出力 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx b/ja/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx new file mode 100644 index 000000000..19b37fc92 --- /dev/null +++ b/ja/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx @@ -0,0 +1,175 @@ +--- +title: "Comfy Router で LTX 2.5 Pro を使用する" +description: "Comfy Router 経由で ltx/ltx-2-5-pro を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "LTX 2.5 Pro" +translationSourceHash: fb48c550 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx +translationBlockHashes: + "_intro": 6134e774 + "Quick start": 471703f3 + "Schema": ff4b9a42 + "Examples": 696cabfd +--- +{/* GENERATED FILE. Generated from router-schemas/ltx/ltx-2-5-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`ltx/ltx-2-5-pro` の API リファレンスです。Comfy Router が LTX から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `ltx/ltx-2-5-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-pro", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-pro", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオの再生時間(秒単位、最大値は解像度とフレームレートによって異なります) + + 指定可能な値: `2`、`3`、`4`、`5`、`6`、`8`、`10`、`12`、`14`、`16`、`18`、`20` + + + + フレームレート(1秒あたりのフレーム数) + + 指定可能な値: `24`、`25`、`48`、`50` + + + + ビデオのオーディオを生成します + + + + 生成に使用するモデル。Comfy Router のルート `POST /v2/models/ltx/{model}` では、このフィールドはパスから渡されるため省略できます。この操作で LTX が提供する表記(Comfy Router が `ltx/` として扱う集合)は ltx-2-5-fast と ltx-2-5-pro です。これらは上記のコメントに記載された理由により enum に制約せず、ここに直接記載しています。それぞれがどの解像度を受け付けるかは、下記 `resolution` プロパティの `x-comfy-model-resolutions` マトリクスに示されています。 + + + + 生成したいビデオの内容を記述するテキストプロンプト + + + + 出力ビデオの解像度。enum はすべてのモデルの和集合であり、対応する集合はモデルごとに異なります。対応ペア: ltx-2-5-fast: 1280x720、720x1280、1920x1080、1080x1920、2560x1440、1440x2560、3840x2160、2160x3840、ltx-2-5-pro: 1280x720、720x1280、1920x1080、1080x1920。その他の (model, resolution) のペアは対応していません。v2 ルートではこれらを 400 で拒否します。同じマトリクスは、このプロパティの x-comfy-model-resolutions 拡張として機械可読な形式でも公開されています。 + + 指定可能な値: `1280x720`、`720x1280`、`1920x1080`、`1080x1920`、`2560x1440`、`1440x2560`、`3840x2160`、`2160x3840` + + +Router が `GET /v2/models/ltx/ltx-2-5-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。 + +### 出力 + + + ジョブの完了タイムスタンプ(ISO 8601) + + + + ジョブの作成タイムスタンプ(ISO 8601) + + + + status が failed の場合に存在します + + + + + + + + + + + + 一意のジョブ識別子 + + + + status が completed の場合に存在します。出力 URL は完了から 24 時間後に失効します + + + + 生成されたビデオの URL + + + + ジョブのステータス(pending、processing、completed、failed) + + +## 例 + +### 入力 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 出力 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/luma/photon-1/code.mdx b/ja/development/comfy-router/models/luma/photon-1/code.mdx new file mode 100644 index 000000000..42bd3903e --- /dev/null +++ b/ja/development/comfy-router/models/luma/photon-1/code.mdx @@ -0,0 +1,330 @@ +--- +title: "Comfy Router で Photon 1 を使用する" +description: "Comfy Router 経由で luma/photon-1 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Photon 1" +translationSourceHash: 310f8788 +translationFrom: development/comfy-router/models/luma/photon-1/code.mdx +translationBlockHashes: + "_intro": 021fca05 + "Quick start": 6d34bab0 + "Schema": 497edabd + "Examples": 92a7a3f8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/luma/photon-1.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`luma/photon-1` の API リファレンスです。Comfy Router が Luma から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `luma/photon-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/luma/photon-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## Schema + +### 入力 + + + 生成のアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成のコールバック URL + + 形式: `uri` + + + + + + + + 画像 identity オブジェクト + + + + 画像 identity の URL + + + + 指定可能な値: `image` + + + + 画像参照オブジェクト + + + + 画像参照の URL + + 形式: `uri` + + + + 画像参照の重み + + + + 生成に使用する画像モデル。Comfy Router のルート `POST /v2/models/luma/{model}` では、このフィールドはパスから供給されるため送信してはいけません。v1 の `POST /proxy/luma/generations/image` ルートでは、LumaImageModel enum(`photon-1`、`photon-flash-1`)に制約され、Rewrite は省略されたモデルや不明なモデルを拒否することでこれを強制します。 + + + + modify 画像参照オブジェクト + + + + 画像参照の URL + + 形式: `uri` + + + + modify 画像参照の重み + + + + 生成のプロンプト + + + + 画像参照オブジェクト + + + + 画像参照の URL + + 形式: `uri` + + + + 画像参照の重み + + +Router が `GET /v2/models/luma/photon-1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + 画像生成のアセットです。`image` が結果であり、`video` と `progress_video` はこのステータスルートを共有する Dream Machine の VIDEO オペレーションに属するもので、Luma はこれらを明示的な null としてここに送信します。 + + + + 生成された画像の URL です。`luma/photon-*` の生成が埋める末端の値にあたります。生成が `completed` に達するまで null です。 + + フォーマット: `uri` + + + + 画像生成では常に null です。これは VIDEO 生成の実行中に Luma が公開する進行中のプレビューです。 + + フォーマット: `uri` + + + + 画像生成では常に null です。代わりに `luma/ray-*` のビデオモデルがこれを埋めます。 + + フォーマット: `uri` + + + + 生成が作成された日時 + + フォーマット: `date-time` + + + + 生成の状態の理由 + + + + 生成のタイプです。このオペレーションでは常に `image` です + + 取り得る値: `image` + + + + 生成の ID + + フォーマット: `uuid` + + + + 生成に使用されたモデル + + + + 画像生成リクエストで、ターミナルドキュメント内にエコーバックされたものです。Luma はリクエストモデルのすべてのフィールドをシリアライズし、呼び出し元が設定しなかった各フィールドには明示的な `null` を書き込むため、フィールドの存在はキーではなくその値から読み取ってください。 + + + + 生成のアスペクト比 + + 取り得る値: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 生成のコールバック URL + + フォーマット: `uri` + + + + + + + + ターミナルドキュメント内に返ってくる際の画像アイデンティティです。`LumaImageIdentity` と同じ形状で、`LumaImageRefEcho` が示す理由によりそのメンバーは null 許容です。 + + + + 画像アイデンティティの URL + + + + 設定されている場合は常に `image` で、オペレーションをエコーします。呼び出し元が送信しなかった場合は null です。これはこのエコーオブジェクト全体が存在する理由と同じです。 + + + + ターミナルドキュメント内に返ってくる際の画像参照です。`LumaImageRef` と同じ形状で、Luma は未設定のものを省略せず明示的な `null` としてエコーするため、各メンバーは null 許容です。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + + + 生成に使用された画像モデル + + 取り得る値: `photon-1`, `photon-flash-1` + + + + ターミナルドキュメント内に返ってくる際の画像変更参照です。`LumaModifyImageRef` と同じ形状で、`LumaImageRefEcho` が示す理由によりそのメンバーは null 許容です。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像変更参照の重み + + + + 生成のプロンプト + + + + ターミナルドキュメント内に返ってくる際の画像参照です。`LumaImageRef` と同じ形状で、Luma は未設定のものを省略せず明示的な `null` としてエコーするため、各メンバーは null 許容です。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + + + 生成の状態 + + 取り得る値: `queued`, `dreaming`, `completed`, `failed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 出力 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "5e8b06d7-91c4-4a2f-8b3d-6f7a8b9c0d1e", + "model": "photon-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/luma/photon-flash-1/code.mdx b/ja/development/comfy-router/models/luma/photon-flash-1/code.mdx new file mode 100644 index 000000000..b41bb6a4a --- /dev/null +++ b/ja/development/comfy-router/models/luma/photon-flash-1/code.mdx @@ -0,0 +1,331 @@ +--- +title: "Comfy Router で Photon Flash 1 を使う" +description: "luma/photon-flash-1 を Comfy Router 経由で呼び出す: エンドポイント、リクエストの形式、および Router が返すレスポンス。" +sidebarTitle: "Photon Flash 1" +translationSourceHash: 7cd8313e +translationFrom: development/comfy-router/models/luma/photon-flash-1/code.mdx +translationBlockHashes: + "_intro": 62ec455a + "Quick start": 18a58f5d + "Schema": 5ea08f51 + "Examples": e94faa92 +--- + +{/* GENERATED FILE. Generated from router-schemas/luma/photon-flash-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`luma/photon-flash-1` の API リファレンス。Luma から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `luma/photon-flash-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/luma/photon-flash-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-flash-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-flash-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-flash-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## スキーマ + +### 入力 + + + 生成のアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成のコールバック URL + + フォーマット: `uri` + + + + + + + + 画像アイデンティティオブジェクト + + + + 画像アイデンティティの URL + + + + 指定可能な値: `image` + + + + 画像参照オブジェクト + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + + + 生成に使用する画像モデル。Comfy Router のルート `POST /v2/models/luma/{model}` では、このフィールドはパスから供給されるため送信してはなりません。v1 の `POST /proxy/luma/generations/image` ルートでは LumaImageModel enum(`photon-1`、`photon-flash-1`)に制約され、Rewrite はモデルの省略または不明なモデルを拒否することでこれを強制します。 + + + + 変更用画像参照オブジェクト + + + + 画像参照の URL + + フォーマット: `uri` + + + + 変更用画像参照の重み + + + + 生成のプロンプト + + + + 画像参照オブジェクト + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + +Router が `GET /v2/models/luma/photon-flash-1/openapi.json` で提供するスキーマから生成済みです。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。### 出力 + + + 画像生成のアセットです。`image` が結果であり、`video` と `progress_video` はこのステータスルートを共有する Dream Machine の VIDEO オペレーションに属するもので、Luma はそれらを明示的な null としてここに送信します。 + + + + 生成された画像の URL です。`luma/photon-*` の生成が埋めるリーフにあたります。生成が `completed` に達するまで null です。 + + フォーマット: `uri` + + + + 画像生成では常に null です。これは VIDEO 生成の実行中に Luma が公開する進行中のプレビューです。 + + フォーマット: `uri` + + + + 画像生成では常に null です。代わりに `luma/ray-*` のビデオモデルがこれを埋めます。 + + フォーマット: `uri` + + + + 生成が作成された日時 + + フォーマット: `date-time` + + + + 生成の状態の理由 + + + + 生成のタイプです。このオペレーションでは常に `image` です + + 取り得る値: `image` + + + + 生成の ID + + フォーマット: `uuid` + + + + 生成に使用されたモデル + + + + ターミナルドキュメント内にエコーバックされる画像生成リクエストです。Luma はリクエストモデルのすべてのフィールドをシリアライズし、呼び出し元が設定しなかった各フィールドに明示的な `null` を書き込むため、フィールドの存在はキーではなく値から読み取ってください。 + + + + 生成のアスペクト比 + + 取り得る値: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 生成のコールバック URL + + フォーマット: `uri` + + + + + + + + ターミナルドキュメント内に返ってくる形の画像アイデンティティです。`LumaImageIdentity` と同じ形状で、`LumaImageRefEcho` が示す理由によりそのメンバーは null 許容です。 + + + + 画像アイデンティティの URL + + + + 設定されている場合は常に `image` で、オペレーションをエコーします。呼び出し元が送信しなかった場合は null です。これはこのエコーオブジェクト全体が存在する理由によるものです。 + + + + ターミナルドキュメント内に返ってくる形の画像参照です。`LumaImageRef` と同じ形状で、各メンバーは null 許容です。Luma は未設定のものを省略せず明示的な `null` としてエコーするためです。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + + + 生成に使用された画像モデル + + 取り得る値: `photon-1`, `photon-flash-1` + + + + ターミナルドキュメント内に返ってくる形の画像変更参照です。`LumaModifyImageRef` と同じ形状で、`LumaImageRefEcho` が示す理由によりそのメンバーは null 許容です。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像変更参照の重み + + + + 生成のプロンプト + + + + ターミナルドキュメント内に返ってくる形の画像参照です。`LumaImageRef` と同じ形状で、各メンバーは null 許容です。Luma は未設定のものを省略せず明示的な `null` としてエコーするためです。 + + + + 画像参照の URL + + フォーマット: `uri` + + + + 画像参照の重み + + + + 生成の状態 + + 取り得る値: `queued`, `dreaming`, `completed`, `failed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 出力 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-flash-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "a1c73f26-08d5-4e69-b7a2-3c4d5e6f7a80", + "model": "photon-flash-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-flash-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/luma/ray-2/code.mdx b/ja/development/comfy-router/models/luma/ray-2/code.mdx new file mode 100644 index 000000000..48a3c642d --- /dev/null +++ b/ja/development/comfy-router/models/luma/ray-2/code.mdx @@ -0,0 +1,212 @@ +--- +title: "Comfy Router で Ray 2 を使用する" +description: "Comfy Router を通じて luma/ray-2 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Ray 2" +translationSourceHash: dc6baea3 +translationFrom: development/comfy-router/models/luma/ray-2/code.mdx +translationBlockHashes: + "_intro": 639f7996 + "Quick start": 4acb93f0 + "Schema": ea1f7cdb + "Examples": 3993fae3 +--- +{/* 生成済みファイル。`router-schemas/luma/ray-2.json` から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`luma/ray-2` の API リファレンス。Luma から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `luma/ray-2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/luma/ray-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## スキーマ + +### 入力 + + + 生成のアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成の callback URL。生成が dreaming、完了、または失敗したときに、Generation オブジェクトを含む POST リクエストが callback URL に送信されます + + フォーマット: `uri` + + + + + + + + 指定可能な値: `video` + + + + 生成のキーフレーム + + + + キーフレームは、Generation 参照、Image、または Video のいずれかです + + + + キーフレームは、Generation 参照、Image、または Video のいずれかです + + + + ビデオをループするかどうか + + + + 生成に使用するビデオモデル。Comfy Router のルート `POST /v2/models/luma/{model}` では、このフィールドはパスから供給されるため、送信してはいけません。v1 の `POST /proxy/luma/generations` ルートでは必須であり、LumaVideoModel enum(`ray-2`、`ray-flash-2`)に制限されます。 + + + + 生成のプロンプト + + + + + + +Router が `GET /v2/models/luma/ray-2/openapi.json` で提供するスキーマから生成されており、これはリクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 生成のアセット + + + + 画像の URL + + フォーマット: `uri` + + + + 進行状況ビデオの URL + + フォーマット: `uri` + + + + ビデオの URL + + フォーマット: `uri` + + + + 生成が作成された日時 + + フォーマット: `date-time` + + + + 生成の状態の理由 + + + + 指定可能な値: `video`、`image` + + + + 生成の ID + + フォーマット: `uuid` + + + + 生成に使用されたモデル + + + + 生成のリクエスト + + + + 生成の状態 + + 指定可能な値: `queued`、`dreaming`、`completed`、`failed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 出力 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "3f2a7c1e-8b40-4d59-9f6a-1c2d3e4f5a60", + "model": "ray-2", + "state": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/luma/ray-flash-2/code.mdx b/ja/development/comfy-router/models/luma/ray-flash-2/code.mdx new file mode 100644 index 000000000..fd84482cf --- /dev/null +++ b/ja/development/comfy-router/models/luma/ray-flash-2/code.mdx @@ -0,0 +1,213 @@ +--- +title: "Comfy Router で Ray Flash 2 を使用する" +description: "Comfy Router 経由で luma/ray-flash-2 を呼び出します。endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Ray Flash 2" +translationSourceHash: a76a94e1 +translationFrom: development/comfy-router/models/luma/ray-flash-2/code.mdx +translationBlockHashes: + "_intro": 1fb59d13 + "Quick start": ff9e17ce + "Schema": 8009af73 + "Examples": cb7953b0 +--- + +{/* GENERATED FILE. Generated from router-schemas/luma/ray-flash-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`luma/ray-flash-2` の API リファレンスです。Comfy Router が Luma から提供しています。 + +## クイックスタート + +[Comfyワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY`としてエクスポートします。PythonとTypeScriptのスニペットはComfy SDKを使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURLスニペットは同じ呼び出しを生のHTTPで実行します。 + +**Model ID:** `luma/ray-flash-2` + +**Endpoint:** `POST https://api.comfy.org/v2/models/luma/ray-flash-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-flash-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-flash-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-flash-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## スキーマ + +### 入力 + + + 生成のアスペクト比 + + 指定可能な値: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 生成のコールバック URL。生成が dreaming、完了、または失敗したときに、Generation オブジェクトを含む POST リクエストがコールバック URL に送信されます + + 形式: `uri` + + + + + + + + 指定可能な値: `video` + + + + 生成のキーフレーム + + + + キーフレームは Generation 参照、Image、または Video のいずれかです + + + + キーフレームは Generation 参照、Image、または Video のいずれかです + + + + ビデオをループするかどうか + + + + 生成に使用されるビデオモデル。Comfy Router のルート `POST /v2/models/luma/{model}` では、このフィールドはパスから供給されるため送信してはなりません(MUST NOT)。v1 の `POST /proxy/luma/generations` ルートでは必須であり、LumaVideoModel enum(`ray-2`、`ray-flash-2`)に制約されます。 + + + + 生成のプロンプト + + + + + + +Router が `GET /v2/models/luma/ray-flash-2/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。 + +### 出力 + + + 生成のアセット + + + + 画像の URL + + 形式: `uri` + + + + 進行状況ビデオの URL + + 形式: `uri` + + + + ビデオの URL + + 形式: `uri` + + + + 生成が作成された日時 + + 形式: `date-time` + + + + 生成の状態の理由 + + + + 指定可能な値: `video`, `image` + + + + 生成の ID + + 形式: `uuid` + + + + 生成に使用されたモデル + + + + 生成のリクエスト + + + + 生成の状態 + + 指定可能な値: `queued`, `dreaming`, `completed`, `failed` + + +## 例 + +### 入力 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 出力 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-flash-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "8c41d0b6-2e7a-4f35-b1d8-9a0e6f3c2b71", + "model": "ray-flash-2", + "state": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/luma_2/uni-1-max/code.mdx b/ja/development/comfy-router/models/luma_2/uni-1-max/code.mdx new file mode 100644 index 000000000..d99064a04 --- /dev/null +++ b/ja/development/comfy-router/models/luma_2/uni-1-max/code.mdx @@ -0,0 +1,294 @@ +--- +title: "Comfy Router で Uni 1 Max を使う" +description: "Comfy Router 経由で luma_2/uni-1-max を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Uni 1 Max" +translationSourceHash: 41396dcb +translationFrom: development/comfy-router/models/luma_2/uni-1-max/code.mdx +translationBlockHashes: + "_intro": ebc62f13 + "Quick start": 5e8bbbee + "Schema": 99bc582a + "Examples": f813a867 +--- +{/* GENERATED FILE. Generated from router-schemas/luma_2/uni-1-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`luma_2/uni-1-max` の API リファレンスです。Comfy Router が Luma 2 から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `luma_2/uni-1-max` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/luma_2/uni-1-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1-max", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1-max", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## スキーマ + +### 入力 + + + 出力アスペクト比。ray-3.2 ビデオモデルは 9:16、3:4、1:1、4:3、16:9、21:9 のサブセットをサポートします。 + + 指定可能な値: `3:1`、`2:1`、`21:9`、`16:9`、`3:2`、`4:3`、`1:1`、`3:4`、`2:3`、`9:16`、`1:2`、`1:3` + + + + スタイル/コンテンツのガイダンス用の参照画像。type 'image' では最大 9 枚、type 'image_edit' では最大 8 枚です。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併せて必須です(ビデオソースの場合は url とも併せて必須。例: video_edit / video_reframe における video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + 使用するモデル。画像生成には uni-1 / uni-1-max、ビデオの生成・編集・リフレーミングには ray-3.2 を使用します。 + + + + 出力画像フォーマット + + 指定可能な値: `png`、`jpeg` + + + + テキストプロンプト + + + + 画像またはビデオへの参照。スタイル/コンテンツのガイダンス、ガイド付き生成、video-edit/video-reframe のソース、およびガイドキーフレームに使用されます。generation_id、url、data のいずれか 1 つだけを指定してください。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併せて必須です(ビデオソースの場合は url とも併せて必須。例: video_edit / video_reframe における video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + スタイルプリセット + + 指定可能な値: `auto`、`manga` + + + + 実行する生成の種類。image/image_edit は uni-1 / uni-1-max モデルで生成され、video/video_edit/video_reframe は ray-3.2 モデルで生成されます。 + + 指定可能な値: `image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + + + ray-3.2 のビデオ出力設定。ここでは検証と課金に影響するフィールドのみをモデル化しています。その他のフィールド(編集コントロール、end_frame、loop、source_position)はそのまま Luma に転送されます。 + + + + ray-3.2 の video / video_edit におけるクリップの再生時間。デフォルトは 5s です。HDR 生成(type video)は 5s に制限されています。 + + 指定可能な値: `5s`、`10s` + + + + MP4 と併せて EXR ファイルをエクスポートします。hdr が true である必要があります。video_reframe では拒否されます。 + + + + HDR でレンダリングします。720p/1080p が必要です。video_reframe では拒否されます。 + + + + ガイドフレーム画像。キーフレームを 1 つだけ指定すると、type「video」のリクエストはシングルキーフレーム拡張となり、常に 5s ブロック 1 つとして課金されます。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併せて必須です(ビデオソースの場合は url とも併せて必須。例: video_edit / video_reframe における video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + 生成されたクリップをループします。作成時のみ(type video)。 + + + + ray-3.2 ビデオの出力解像度。デフォルトは 720p です。360p はドラフト階層です。HDR には 720p または 1080p が必要です。 + + 指定可能な値: `360p`、`540p`、`720p`、`1080p` + + + + 画像またはビデオへの参照。スタイル/コンテンツのガイダンス、ガイド付き生成、video-edit/video-reframe のソース、およびガイドキーフレームに使用されます。generation_id、url、data のいずれか 1 つだけを指定してください。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併せて必須です(ビデオソースの場合は url とも併せて必須。例: video_edit / video_reframe における video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + Web検索グラウンディングを有効にする + + +`GET /v2/models/luma_2/uni-1-max/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + 作成タイムスタンプ + + + + プログラムで処理するための機械可読な失敗コード + + 指定可能な値: `content_moderated`、`generation_failed`、`budget_exhausted`、`output_not_found` + + + + 人間が読める形式の失敗の説明。FAILED の生成時のみ設定されます。成功時は `null` です。 + + + + 生成識別子 + + + + 使用されたモデル + + + + 生成された出力エントリ + + + + メディアタイプ (例: 画像) + + + + 署名付き URL (有効期限 1 時間) + + + + 生成の現在の状態 + + 指定可能な値: `queued`、`processing`、`completed`、`failed` + + + + 実行する生成の種類。image/image_edit は uni-1 / uni-1-max モデルによって生成され、video/video_edit/video_reframe は ray-3.2 モデルによって生成されます。 + + 指定可能な値: `image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + +## 例 + +### 入力 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 出力 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1-max", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + diff --git a/ja/development/comfy-router/models/luma_2/uni-1/code.mdx b/ja/development/comfy-router/models/luma_2/uni-1/code.mdx new file mode 100644 index 000000000..3e4d1f190 --- /dev/null +++ b/ja/development/comfy-router/models/luma_2/uni-1/code.mdx @@ -0,0 +1,294 @@ +--- +title: "Comfy Router で Uni 1 を使用する" +description: "Comfy Router 経由で luma_2/uni-1 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Uni 1" +translationSourceHash: 9f61db78 +translationFrom: development/comfy-router/models/luma_2/uni-1/code.mdx +translationBlockHashes: + "_intro": 2cbf0b21 + "Quick start": 90977f75 + "Schema": 8ccf441b + "Examples": f993c215 +--- +{/* GENERATED FILE. Generated from router-schemas/luma_2/uni-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Luma 2 から Comfy Router が提供する `luma_2/uni-1` の API リファレンスです。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行します。 + +**モデル ID:** `luma_2/uni-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/luma_2/uni-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## スキーマ + +### 入力 + + + 出力アスペクト比。ray-3.2 ビデオモデルは 9:16、3:4、1:1、4:3、16:9、21:9 のサブセットをサポートします。 + + 指定可能な値: `3:1`、`2:1`、`21:9`、`16:9`、`3:2`、`4:3`、`1:1`、`3:4`、`2:3`、`9:16`、`1:2`、`1:3` + + + + スタイル/コンテンツのガイダンス用の参照画像。type 'image' では最大 9 枚、type 'image_edit' では最大 8 枚です。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併用する場合に必須です(ビデオソースの場合は url と併用する場合も必須。例: video_edit / video_reframe での video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + 使用するモデル。画像生成には uni-1 / uni-1-max、ビデオの生成、編集、リフレーミングには ray-3.2。 + + + + 出力画像フォーマット + + 指定可能な値: `png`、`jpeg` + + + + テキストプロンプト + + + + 画像またはビデオへの参照。スタイル/コンテンツのガイダンス、ガイド付き生成、video-edit/video-reframe のソース、ガイドキーフレームに使用されます。generation_id、url、data のいずれか 1 つだけを指定してください。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併用する場合に必須です(ビデオソースの場合は url と併用する場合も必須。例: video_edit / video_reframe での video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + スタイルプリセット + + 指定可能な値: `auto`、`manga` + + + + 実行する生成の種類。image/image_edit は uni-1 / uni-1-max モデルによって生成され、video/video_edit/video_reframe は ray-3.2 モデルによって生成されます。 + + 指定可能な値: `image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + + + ray-3.2 のビデオ出力設定。ここでは検証と課金に影響するフィールドのみをモデル化しています。追加のフィールド(編集コントロール、end_frame、loop、source_position)はそのまま Luma に転送されます。 + + + + ray-3.2 の video / video_edit のクリップ再生時間。デフォルトは 5s。HDR 生成(type video)は 5s に制限されています。 + + 指定可能な値: `5s`、`10s` + + + + MP4 と一緒に EXR ファイルをエクスポートします。hdr が true である必要があります。video_reframe では拒否されます。 + + + + HDR でレンダリングします。720p/1080p が必要です。video_reframe では拒否されます。 + + + + ガイドフレーム画像。キーフレームが 1 つの場合、type "video" のリクエストはシングルキーフレームの延長となり、常に 5s ブロック 1 つとして課金されます。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併用する場合に必須です(ビデオソースの場合は url と併用する場合も必須。例: video_edit / video_reframe での video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + 生成されたクリップをループします。作成時のみ(type video)。 + + + + ray-3.2 video の出力解像度。デフォルトは 720p。360p はドラフト階層です。HDR には 720p または 1080p が必要です。 + + 指定可能な値: `360p`、`540p`、`720p`、`1080p` + + + + 画像またはビデオへの参照。スタイル/コンテンツのガイダンス、ガイド付き生成、video-edit/video-reframe のソース、ガイドキーフレームに使用されます。generation_id、url、data のいずれか 1 つだけを指定してください。 + + + + Base64 エンコードされた画像またはビデオデータ + + + + ソースとして再利用する、以前に完了した生成の UUID。ray-3.2 の video_edit / video_reframe で使用されます。 + + + + MIME タイプ。data と併用する場合に必須です(ビデオソースの場合は url と併用する場合も必須。例: video_edit / video_reframe での video/mp4)。 + + + + 公開アクセス可能な画像またはビデオの URL + + + + Web 検索グラウンディングを有効にします + + +このスキーマは Router が `GET /v2/models/luma_2/uni-1/openapi.json` で提供するスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + 作成タイムスタンプ + + + + プログラムで処理するための機械可読な失敗コード + + 取り得る値: `content_moderated`、`generation_failed`、`budget_exhausted`、`output_not_found` + + + + 人間が読める形式の失敗の説明。FAILED の生成時のみ設定されます。成功した生成では `null` です。 + + + + 生成識別子 + + + + 使用されたモデル + + + + 生成された出力エントリ + + + + メディアタイプ(例: 画像) + + + + 署名付き URL(1時間で失効) + + + + 生成の現在の状態 + + 取り得る値: `queued`、`processing`、`completed`、`failed` + + + + 実行する生成の種類。image/image_edit は uni-1 / uni-1-max モデルによって生成され、video/video_edit/video_reframe は ray-3.2 モデルによって生成されます。 + + 取り得る値: `image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + +## 例 + +### 入力 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 出力 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + diff --git a/ja/development/comfy-router/models/meshy/animations/code.mdx b/ja/development/comfy-router/models/meshy/animations/code.mdx new file mode 100644 index 000000000..a82ab91f3 --- /dev/null +++ b/ja/development/comfy-router/models/meshy/animations/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router で Animations を使用する" +description: "Comfy Router 経由で meshy/animations を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Animations" +translationSourceHash: 57086ec8 +translationFrom: development/comfy-router/models/meshy/animations/code.mdx +translationBlockHashes: + "_intro": 77ee7b16 + "Quick start": bfff140b + "Schema": eda95378 + "Examples": 1fe9d0ce +--- +{/* 生成済みファイル。router-schemas/meshy/animations.json から `pnpm code-pages:gen` で生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`meshy/animations` の API リファレンス。Meshy から Comfy Router が提供します。 + +## クイックスタート + +キーを [お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) で作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用します。cURL スニペットは、生の HTTP 経由で同じ呼び出しを行います。 + +**モデル ID:** `meshy/animations` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/animations` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/animations", + { + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps", + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/animations", { + action_id: 92, + post_process: { + fps: 60, + operation_type: "change_fps", + }, + rig_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/animations \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"action_id\": 92, \"post_process\": {\"fps\":60,\"operation_type\":\"change_fps\"}, \"rig_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## スキーマ + +### 入力 + + + 適用するアニメーションアクションの識別子。 + + + + アニメーションファイルのポストプロセス用パラメータ。 + + + + ターゲットフレームレート。デフォルトは 30 です。operation_type が change_fps の場合にのみ適用されます。 + + 指定可能な値: `24`、`25`、`30`、`60` + + + + 実行する操作の種類。 + + 指定可能な値: `change_fps`、`fbx2usdz`、`extract_armature` + + + + 正常に完了したリグタスクの ID(POST /openapi/v1/rigging から取得)。このタスクのキャラクターがアニメートされます。 + + +このドキュメントは、Router が `GET /v2/models/meshy/animations/openapi.json` で提供するスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じです。 + +### 出力 + + + タスクが作成されたときのタイムスタンプ(ミリ秒単位)。 + + フォーマット: `int64` + + + + タスク結果の有効期限のタイムスタンプ(ミリ秒単位)。 + + フォーマット: `int64` + + + + タスクが完了したときのタイムスタンプ(ミリ秒単位)。完了していない場合は 0。 + + フォーマット: `int64` + + + + タスクの一意の識別子。 + + + + 先行するタスクの数。status が PENDING の場合にのみ意味を持ちます。 + + + + タスクの進捗(0-100)。 + + 範囲: `0` から `100` + + + + タスクが SUCCEEDED の場合、出力アニメーションの URL を含みます。 + + + + FBX 形式のアニメーションのダウンロード可能な URL。 + + + + GLB 形式のアニメーションのダウンロード可能な URL。 + + + + FPS を変更したアニメーションの FBX 形式のダウンロード可能な URL。 + + + + 処理済みのアーマチュアの FBX 形式のダウンロード可能な URL。 + + + + 処理済みのアニメーションの USDZ 形式のダウンロード可能な URL。 + + + + タスクが開始されたときのタイムスタンプ(ミリ秒単位)。開始されていない場合は 0。 + + フォーマット: `int64` + + + + 指定可能な値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + アニメーションタスクのタイプ。 + + 指定可能な値: `animate` + + +## 例 + +### 入力 + +```json +{ + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps" + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225648000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "animation_fbx_url": "https://example.invalid/meshy/animations/animation.fbx", + "animation_glb_url": "https://example.invalid/meshy/animations/animation.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "animate" +} +``` + + diff --git a/ja/development/comfy-router/models/meshy/meshy-5/code.mdx b/ja/development/comfy-router/models/meshy/meshy-5/code.mdx new file mode 100644 index 000000000..52b92d483 --- /dev/null +++ b/ja/development/comfy-router/models/meshy/meshy-5/code.mdx @@ -0,0 +1,338 @@ +--- +title: "Comfy Router で Meshy 5 を使用する" +description: "Comfy Router 経由で meshy/meshy-5 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Meshy 5" +translationSourceHash: 638178e5 +translationFrom: development/comfy-router/models/meshy/meshy-5/code.mdx +translationBlockHashes: + "_intro": f3672d3d + "Quick start": dcdf0c11 + "Schema": 3e99ff32 + "Examples": e2bc6209 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/meshy/meshy-5.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-5` の API リファレンスです。Comfy Router が Meshy から提供しています。 + +## クイックスタート + +[Comfyワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを raw HTTP 経由で行うものです。 + +**モデル ID:** `meshy/meshy-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/meshy-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-5", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-5", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## スキーマ + +### 入力 + +#### `preview` バリアント + + + 実行する Meshy モデル。Comfy Router ルートではパス(`/v2/models/meshy/{model}`)から指定され、省略するか null として送信できます。Router は検証後にパスのモデルをここへ書き込みます。v1 /proxy ルートでは MeshyTextTo3DPreviewRequest を参照してください。これはこの値を MeshyAiModel に制約します。 + + + + オブジェクトの希望するアートスタイルを記述します。 + + 指定可能な値: `realistic`、`sculpture` + + + + 非推奨。代わりに pose_mode を使用してください。モデルを A/T ポーズで生成するかどうか。 + + + + プレビュータスクを作成する場合は、このフィールドを "preview" に設定してください。 + + 指定可能な値: `preview` + + + + true の場合、入力コンテンツは有害な可能性のあるコンテンツについてスクリーニングされます。 + + + + 生成されるモデルのポーズモードを指定します。 + + 指定可能な値: `a-pose`、`t-pose`、`` + + + + 3Dモデルがどのようなオブジェクトであるかを記述します。最大600文字。 + + + + リメッシュフェーズを有効にするかどうかを制御します。false の場合、最高精度の三角メッシュを返します。 + + + + モデル生成中の対称性の挙動を制御します。 + + 指定可能な値: `off`、`auto`、`on` + + + + 生成されるモデルのポリゴン数の目標値を指定します。有効範囲は 100 から 300,000 です。 + + 範囲: `100` ~ `300000` + + + + 生成されるモデルのトポロジーを指定します。 + + 指定可能な値: `quad`、`triangle` + + + + より精細なサーフェスディテールを備えた高忠実度ジオメトリのための Ultra 生成を有効にします。ai_model が meshy-7 または latest の場合のみサポートされます。 + + +#### `refine` バリアント + + + 実行する Meshy モデル。Comfy Router ルートではパス(`/v2/models/meshy/{model}`)から指定され、省略するか null として送信できます。Router は検証後にパスのモデルをここへ書き込みます。v1 /proxy ルートでは MeshyTextTo3DRefineRequest を参照してください。これはこの値を MeshyAiModel に制約します。 + + + + ベースカラーに加えて PBR マップ(metallic、roughness、normal)を生成します。Sculpture スタイルを使用する場合は enable_pbr を false に設定する必要があることに注意してください。 + + + + リファインタスクを作成する場合は、このフィールドを "refine" に設定してください。 + + 指定可能な値: `refine` + + + + true の場合、入力コンテンツは有害な可能性のあるコンテンツについてスクリーニングされます。 + + + + 対応するプレビュータスクの ID。指定したプレビュータスクのステータスが SUCCEEDED である必要があります。 + + + + テクスチャリング処理をガイドするための 2D 画像を提供します。.jpg、.jpeg、.png 形式、または base64 エンコードされたデータ URI をサポートします。 + + + + テクスチャリング処理をガイドするための追加のテキストプロンプトを提供します。最大600文字。 + + + + 生成されるテクスチャの解像度。2k、4k、8k のいずれかです。4k と 8k には ai_model が meshy-6、meshy-7、または latest であることが必要です。 + + 指定可能な値: `2k`、`4k`、`8k` + + +Router が `GET /v2/models/meshy/meshy-5/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。### 出力 + + + プレビュータスクの作成に使用された、変更されていない art_style。 + + + + タスクが作成された日時のタイムスタンプ(ミリ秒単位)。 + + 形式: `int64` + + + + タスクが完了した日時のタイムスタンプ(ミリ秒単位)。完了していない場合は 0。 + + 形式: `int64` + + + + タスクの一意の識別子。 + + + + Meshy によって生成されたテクスチャ付き 3Dモデルファイルのダウンロード URL。 + + + + FBX ファイルのダウンロード URL。 + + + + GLB ファイルのダウンロード URL。 + + + + MTL ファイルのダウンロード URL。 + + + + OBJ ファイルのダウンロード URL。 + + + + USDZ ファイルのダウンロード URL。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + 先行するタスクの数。status が PENDING の場合にのみ意味を持ちます。 + + + + タスクの進捗。開始されていない場合は 0、成功した場合は 100。 + + 範囲: `0` から `100` + + + + タスクの作成に使用された、変更されていない prompt。 + + + + タスクが開始された日時のタイムスタンプ(ミリ秒単位)。開始されていない場合は 0。 + + 形式: `int64` + + + + 取り得る値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + テクスチャリング処理のガイドに使用されたテクスチャ画像のダウンロード URL。 + + + + refine ステージ中にテクスチャリング処理をガイドするために提供される追加のテキストプロンプト。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + タスクから生成されるテクスチャ URL オブジェクトの配列。 + + + + ベースカラーマップ画像のダウンロード URL。 + + + + メタリックマップ画像のダウンロード URL。 + + + + ノーマルマップ画像のダウンロード URL。 + + + + ラフネスマップ画像のダウンロード URL。 + + + + モデルファイルのサムネイル画像のダウンロード URL。 + + + + Text to 3D タスクの種類。 + + 取り得る値: `text-to-3d-preview`、`text-to-3d-refine` + + + + プレビュービデオのダウンロード URL を返す非推奨のフィールド。 + + +## 例 + +### 入力 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 出力 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/ja/development/comfy-router/models/meshy/meshy-6/code.mdx b/ja/development/comfy-router/models/meshy/meshy-6/code.mdx new file mode 100644 index 000000000..4f806cf0b --- /dev/null +++ b/ja/development/comfy-router/models/meshy/meshy-6/code.mdx @@ -0,0 +1,338 @@ +--- +title: "Comfy Router で Meshy 6 を使う" +description: "Comfy Router 経由で meshy/meshy-6 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Meshy 6" +translationSourceHash: e0974924 +translationFrom: development/comfy-router/models/meshy/meshy-6/code.mdx +translationBlockHashes: + "_intro": aa2fea0d + "Quick start": 53e45ae7 + "Schema": a8592941 + "Examples": e2bc6209 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Meshy から提供する `meshy/meshy-6` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `meshy/meshy-6` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/meshy-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-6", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-6", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## スキーマ + +### 入力 + +#### `preview` バリアント + + + 実行する Meshy モデル。Comfy Router ルートではこれはパス(`/v2/models/meshy/{model}`)から供給され、省略するか null として送信できます。Router は検証後にパスのモデルをここに書き込みます。v1 /proxy ルートでは MeshyTextTo3DPreviewRequest を参照してください。これはこれを MeshyAiModel に制約します。 + + + + オブジェクトの希望するアートスタイルを記述します。 + + 指定可能な値: `realistic`、`sculpture` + + + + 非推奨。代わりに pose_mode を使用してください。モデルを A/T ポーズで生成するかどうか。 + + + + このフィールドは、プレビュータスクを作成するときに "preview" に設定する必要があります。 + + 指定可能な値: `preview` + + + + true の場合、入力コンテンツは有害な可能性のあるコンテンツがないかスクリーニングされます。 + + + + 生成されるモデルのポーズモードを指定します。 + + 指定可能な値: `a-pose`、`t-pose`、`` + + + + 3Dモデルがどのようなオブジェクトであるかを記述します。最大600文字。 + + + + remesh フェーズを有効にするかどうかを制御します。false の場合、最高精度の三角形メッシュを返します。 + + + + モデル生成時の対称性の挙動を制御します。 + + 指定可能な値: `off`、`auto`、`on` + + + + 生成されるモデルの目標ポリゴン数を指定します。有効範囲は 100 から 300,000 です。 + + 範囲: `100` から `300000` + + + + 生成されるモデルのトポロジーを指定します。 + + 指定可能な値: `quad`、`triangle` + + + + より精細な表面ディテールを持つ高忠実度ジオメトリのための Ultra 生成を有効にします。ai_model が meshy-7 または latest の場合のみサポートされます。 + + +#### `refine` バリアント + + + 実行する Meshy モデル。Comfy Router ルートではこれはパス(`/v2/models/meshy/{model}`)から供給され、省略するか null として送信できます。Router は検証後にパスのモデルをここに書き込みます。v1 /proxy ルートでは MeshyTextTo3DRefineRequest を参照してください。これはこれを MeshyAiModel に制約します。 + + + + ベースカラーに加えて PBR マップ(メタリック、ラフネス、ノーマル)を生成します。Sculpture スタイルを使用する場合は enable_pbr を false に設定する必要があることに注意してください。 + + + + このフィールドは、refine タスクを作成するときに "refine" に設定する必要があります。 + + 指定可能な値: `refine` + + + + true の場合、入力コンテンツは有害な可能性のあるコンテンツがないかスクリーニングされます。 + + + + 対応するプレビュータスクの id。指定したプレビュータスクのステータスは SUCCEEDED である必要があります。 + + + + テクスチャリング処理を導くための 2D 画像を提供します。.jpg、.jpeg、.png 形式、または base64 エンコードされたデータ URI をサポートします。 + + + + テクスチャリング処理を導くための追加のテキストプロンプトを提供します。最大600文字。 + + + + 生成されるテクスチャのテクスチャ解像度。2k、4k、8k のいずれか。4k と 8k には ai_model として meshy-6、meshy-7、または latest が必要です。 + + 指定可能な値: `2k`、`4k`、`8k` + + +Router が `GET /v2/models/meshy/meshy-6/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + プレビュータスクの作成に使用された、変更されていない art_style。 + + + + タスクが作成されたときのタイムスタンプ(ミリ秒単位)。 + + 形式: `int64` + + + + タスクが完了したときのタイムスタンプ(ミリ秒単位)。完了していない場合は0。 + + 形式: `int64` + + + + タスクの一意の識別子。 + + + + Meshy によって生成されたテクスチャ付き3Dモデルファイルのダウンロード URL。 + + + + FBX ファイルのダウンロード URL。 + + + + GLB ファイルのダウンロード URL。 + + + + MTL ファイルのダウンロード URL。 + + + + OBJ ファイルのダウンロード URL。 + + + + USDZ ファイルのダウンロード URL。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + 先行するタスクの数。status が PENDING の場合にのみ意味を持ちます。 + + + + タスクの進捗。開始前は0、成功時は100。 + + 範囲: `0` から `100` + + + + タスクの作成に使用された、変更されていない prompt。 + + + + タスクが開始されたときのタイムスタンプ(ミリ秒単位)。開始されていない場合は0。 + + 形式: `int64` + + + + 取り得る値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + テクスチャ処理のガイドに使用されたテクスチャ画像のダウンロード URL。 + + + + refine ステージでテクスチャ処理をガイドするために提供される追加のテキストプロンプト。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + タスクから生成されるテクスチャ URL オブジェクトの配列。 + + + + ベースカラーマップ画像のダウンロード URL。 + + + + メタリックマップ画像のダウンロード URL。 + + + + ノーマルマップ画像のダウンロード URL。 + + + + ラフネスマップ画像のダウンロード URL。 + + + + モデルファイルのサムネイル画像のダウンロード URL。 + + + + Text to 3D タスクのタイプ。 + + 取り得る値: `text-to-3d-preview`、`text-to-3d-refine` + + + + プレビュー動画のダウンロード URL を返す非推奨のフィールド。 + + +## 例 + +### 入力 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 出力 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/ja/development/comfy-router/models/meshy/meshy-7/code.mdx b/ja/development/comfy-router/models/meshy/meshy-7/code.mdx new file mode 100644 index 000000000..f4de06f03 --- /dev/null +++ b/ja/development/comfy-router/models/meshy/meshy-7/code.mdx @@ -0,0 +1,337 @@ +--- +title: "Meshy 7 を Comfy Router で使用する" +description: "Comfy Router 経由で meshy/meshy-7 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Meshy 7" +translationSourceHash: 13a581ae +translationFrom: development/comfy-router/models/meshy/meshy-7/code.mdx +translationBlockHashes: + "_intro": c72a0194 + "Quick start": e82d9fbc + "Schema": 73e21121 + "Examples": e2bc6209 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-7.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-7` の API リファレンスです。Comfy Router が Meshy から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `meshy/meshy-7` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/meshy-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-7", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-7", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## スキーマ + +### 入力 + +#### `preview` バリアント + + + 実行するMeshyモデル。Comfy Routerのルートではこれはパス(`/v2/models/meshy/{model}`)から供給され、省略するかnullとして送信できます。Routerは検証後にパスのモデルをここへ書き込みます。v1 /proxyルートではMeshyTextTo3DPreviewRequestを参照してください。これはMeshyAiModelに制約します。 + + + + オブジェクトの希望するアートスタイルを記述します。 + + 指定可能な値: `realistic`、`sculpture` + + + + 非推奨。代わりにpose_modeを使用してください。モデルをA/Tポーズで生成するかどうか。 + + + + previewタスクを作成する場合、このフィールドは"preview"に設定する必要があります。 + + 指定可能な値: `preview` + + + + trueの場合、入力コンテンツは有害な可能性のあるコンテンツについてスクリーニングされます。 + + + + 生成されるモデルのポーズモードを指定します。 + + 指定可能な値: `a-pose`、`t-pose`、`` + + + + 3Dモデルがどのようなオブジェクトであるかを記述します。最大600文字。 + + + + remeshフェーズを有効にするかどうかを制御します。falseの場合、最高精度の三角形メッシュを返します。 + + + + モデル生成中の対称性の挙動を制御します。 + + 指定可能な値: `off`、`auto`、`on` + + + + 生成されるモデルの目標ポリゴン数を指定します。有効範囲は100から300,000です。 + + 範囲: `100` から `300000` + + + + 生成されるモデルのトポロジーを指定します。 + + 指定可能な値: `quad`、`triangle` + + + + より高忠実度のジオメトリと、より細かな表面ディテールのためのUltra生成を有効にします。ai_modelがmeshy-7またはlatestの場合のみサポートされます。 + + +#### `refine` バリアント + + + 実行するMeshyモデル。Comfy Routerのルートではこれはパス(`/v2/models/meshy/{model}`)から供給され、省略するかnullとして送信できます。Routerは検証後にパスのモデルをここへ書き込みます。v1 /proxyルートではMeshyTextTo3DRefineRequestを参照してください。これはMeshyAiModelに制約します。 + + + + ベースカラーに加えてPBRマップ(メタリック、ラフネス、ノーマル)を生成します。Sculptureスタイルを使用する場合はenable_pbrをfalseに設定する必要があることに注意してください。 + + + + refineタスクを作成する場合、このフィールドは"refine"に設定する必要があります。 + + 指定可能な値: `refine` + + + + trueの場合、入力コンテンツは有害な可能性のあるコンテンツについてスクリーニングされます。 + + + + 対応するpreviewタスクID。指定されたpreviewタスクのステータスはSUCCEEDEDでなければなりません。 + + + + テクスチャリングプロセスを導くための2D画像を指定します。.jpg、.jpeg、.png形式、またはbase64エンコードされたデータURIをサポートします。 + + + + テクスチャリングプロセスを導くための追加のテキストプロンプトを指定します。最大600文字。 + + + + 生成されるテクスチャのテクスチャ解像度。2k、4k、8kのいずれか。4kと8kにはai_modelがmeshy-6、meshy-7またはlatestが必要です。 + + 指定可能な値: `2k`、`4k`、`8k` + + +Routerが `GET /v2/models/meshy/meshy-7/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + プレビュータスクの作成に使用された、変更されていない art_style。 + + + + タスクが作成された時刻のタイムスタンプ(ミリ秒単位)。 + + 形式: `int64` + + + + タスクが完了した時刻のタイムスタンプ(ミリ秒単位)。完了していない場合は 0。 + + 形式: `int64` + + + + タスクの一意の識別子。 + + + + Meshy によって生成されたテクスチャ付き 3Dモデルファイルのダウンロード可能な URL。 + + + + FBX ファイルのダウンロード可能な URL。 + + + + GLB ファイルのダウンロード可能な URL。 + + + + MTL ファイルのダウンロード可能な URL。 + + + + OBJ ファイルのダウンロード可能な URL。 + + + + USDZ ファイルのダウンロード可能な URL。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + 先行タスクの数。status が PENDING の場合にのみ意味を持ちます。 + + + + タスクの進捗。開始されていない場合は 0、成功した場合は 100。 + + 範囲: `0` から `100` + + + + タスクの作成に使用された、変更されていないプロンプト。 + + + + タスクが開始された時刻のタイムスタンプ(ミリ秒単位)。開始されていない場合は 0。 + + 形式: `int64` + + + + 取り得る値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + テクスチャリング処理のガイドに使用されたテクスチャ画像のダウンロード可能な URL。 + + + + リファイン段階でテクスチャリング処理をガイドするために提供された追加のテキストプロンプト。 + + + + 後方互換性のために維持されている非推奨のフィールド。 + + + + タスクから生成されたテクスチャ URL オブジェクトの配列。 + + + + ベースカラーマップ画像のダウンロード可能な URL。 + + + + メタリックマップ画像のダウンロード可能な URL。 + + + + ノーマルマップ画像のダウンロード可能な URL。 + + + + ラフネスマップ画像のダウンロード可能な URL。 + + + + モデルファイルのサムネイル画像のダウンロード可能な URL。 + + + + Text to 3D タスクの種類。 + + 取り得る値: `text-to-3d-preview`、`text-to-3d-refine` + + + + プレビュービデオのダウンロード可能な URL を返す非推奨のフィールド。 + + +## 例 + +### 入力 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 出力 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + diff --git a/ja/development/comfy-router/models/meshy/remesh/code.mdx b/ja/development/comfy-router/models/meshy/remesh/code.mdx new file mode 100644 index 000000000..9e2e84c94 --- /dev/null +++ b/ja/development/comfy-router/models/meshy/remesh/code.mdx @@ -0,0 +1,236 @@ +--- +title: "Comfy RouterでRemeshを使用する" +description: "Comfy Routerを通じてmeshy/remeshを呼び出す方法: エンドポイント、リクエスト形状、Routerが返すレスポンス。" +sidebarTitle: "Remesh" +translationSourceHash: e8059ce2 +translationFrom: development/comfy-router/models/meshy/remesh/code.mdx +translationBlockHashes: + "_intro": e9a2c81a + "Quick start": 95cd0cea + "Schema": 1e6e7f8f + "Examples": 4eee8fa5 +--- +{/* 生成済みファイル。router-schemas/meshy/remesh.json から `pnpm code-pages:gen` で生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`meshy/remesh` の API リファレンスです。Comfy Router が Meshy から提供しています。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `meshy/remesh` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/remesh` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/remesh", + { + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": ["glb", "fbx"], + "target_polycount": 50000, + "topology": "quad", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/remesh", { + input_task_id: "0193abcd-0000-0000-0000-000000000000", + origin_at: "bottom", + resize_height: 1, + target_formats: ["glb", "fbx"], + target_polycount: 50000, + topology: "quad", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/remesh \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\", \"origin_at\": \"bottom\", \"resize_height\": 1, \"target_formats\": [\"glb\",\"fbx\"], \"target_polycount\": 50000, \"topology\": \"quad\"}" +``` + + +## スキーマ + +### 入力 + + + true の場合、入力モデルファイルの形式のみを変更し、トポロジー、resize_height、target_polycount などの他の入力は無視されます。 + + + + リメッシュしたい完了済みの Image to 3D または Text to 3D タスクの ID。model_url が指定されていない場合に必須です。 + + + + 3Dモデルへの公開アクセス可能な URL または data URI。対応形式は glb、gltf、obj、fbx、stl。input_task_id が指定されていない場合に必須です。 + + + + 原点の位置。 + + 指定可能な値: `bottom`、`center`、`` + + + + モデルをメートル単位で指定した高さにリサイズします。0 はリサイズなしを意味します。 + + + + リメッシュされたモデルのターゲット形式のリスト。 + + + + 生成されるモデルのポリゴン数のターゲットを指定します。有効範囲は 100 から 300,000 です。 + + 範囲: `100` から `300000` + + + + 生成されるモデルのトポロジーを指定します。 + + 指定可能な値: `quad`、`triangle` + + +Router が `GET /v2/models/meshy/remesh/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + タスクが作成されたときのタイムスタンプ (ミリ秒単位)。 + + 形式: `int64` + + + + タスクが完了したときのタイムスタンプ (ミリ秒単位)。未完了の場合は 0。 + + 形式: `int64` + + + + タスクの一意の識別子。 + + + + リメッシュされた 3Dモデルファイルのダウンロード URL。 + + + + Blender ファイルのダウンロード URL。 + + + + FBX ファイルのダウンロード URL。 + + + + GLB ファイルのダウンロード URL。 + + + + OBJ ファイルのダウンロード URL。 + + + + STL ファイルのダウンロード URL。 + + + + USDZ ファイルのダウンロード URL。 + + + + 先行するタスクの数。status が PENDING の場合にのみ意味を持ちます。 + + + + タスクの進捗。未開始の場合は 0、成功時は 100。 + + 範囲: `0` から `100` + + + + タスクが開始されたときのタイムスタンプ (ミリ秒単位)。未開始の場合は 0。 + + 形式: `int64` + + + + 指定可能な値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + Remesh タスクのタイプ。 + + 指定可能な値: `remesh` + + +## 例 + +### 入力 + +```json +{ + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": [ + "glb", + "fbx" + ], + "target_polycount": 50000, + "topology": "quad" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600000, + "finished_at": 1767225663000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/remesh/model.fbx", + "glb": "https://example.invalid/meshy/remesh/model.glb", + "obj": "https://example.invalid/meshy/remesh/model.obj" + }, + "progress": 100, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "remesh" +} +``` + + diff --git a/ja/development/comfy-router/models/meshy/rigging/code.mdx b/ja/development/comfy-router/models/meshy/rigging/code.mdx new file mode 100644 index 000000000..005a95de6 --- /dev/null +++ b/ja/development/comfy-router/models/meshy/rigging/code.mdx @@ -0,0 +1,223 @@ +--- +title: "Comfy Router で Rigging を使用する" +description: "Comfy Router 経由で meshy/rigging を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Rigging" +translationSourceHash: c26fe555 +translationFrom: development/comfy-router/models/meshy/rigging/code.mdx +translationBlockHashes: + "_intro": 0dfeedab + "Quick start": a2e204dc + "Schema": 2d8d7dbb + "Examples": 8e91e01b +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/rigging.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`meshy/rigging` の API リファレンス。Meshy から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `meshy/rigging` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/meshy/rigging` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/rigging", + { + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/rigging", { + height_meters: 1.8, + input_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/rigging \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"height_meters\": 1.8, \"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## スキーマ + +### 入力 + + + キャラクターモデルのおおよその高さ(メートル単位)。正の数である必要があります。 + + 範囲: `0` ~ `…` + + + + リギングが必要な入力タスク。model_url が指定されていない場合は必須です。 + + + + テクスチャ付きのヒューマノイド GLB ファイルへの公開アクセス可能な URL または Data URI。input_task_id が指定されていない場合は必須です。 + + + + モデルの UV 展開済みベースカラーテクスチャ画像。公開アクセス可能な URL または Data URI。.png 形式に対応しています。 + + +Router が `GET /v2/models/meshy/rigging/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + タスクが作成された時刻のタイムスタンプ(ミリ秒単位)。 + + 形式: `int64` + + + + タスク結果が期限切れになる時刻のタイムスタンプ(ミリ秒単位)。 + + 形式: `int64` + + + + タスクが完了した時刻のタイムスタンプ(ミリ秒単位)。未完了の場合は 0。 + + 形式: `int64` + + + + タスクの一意の識別子。 + + + + 先行するタスクの数。ステータスが PENDING の場合のみ意味を持ちます。 + + + + タスクの進捗状況 (0~100)。未開始の場合は 0、成功した場合は 100。 + + 範囲: `0` ~ `100` + + + + タスクが SUCCEEDED の場合、出力アセットの URL を含みます。 + + + + デフォルトのアニメーションの URL を含みます。 + + + + ランニングアニメーションのアーマチュアを GLB 形式でダウンロードするための URL。 + + + + ランニングアニメーションを FBX 形式でダウンロードするための URL(スキン付き)。 + + + + ランニングアニメーションを GLB 形式でダウンロードするための URL(スキン付き)。 + + + + ウォーキングアニメーションのアーマチュアを GLB 形式でダウンロードするための URL。 + + + + ウォーキングアニメーションを FBX 形式でダウンロードするための URL(スキン付き)。 + + + + ウォーキングアニメーションを GLB 形式でダウンロードするための URL(スキン付き)。 + + + + リギング済みキャラクターを FBX 形式でダウンロードするための URL。 + + + + リギング済みキャラクターを GLB 形式でダウンロードするための URL。 + + + + タスクが開始された時刻のタイムスタンプ(ミリ秒単位)。未開始の場合は 0。 + + 形式: `int64` + + + + 有効な値: `SUCCEEDED` + + + + タスクが失敗した場合にエラーメッセージを含むエラーオブジェクト。 + + + + 詳細なエラーメッセージ。 + + + + リギングタスクのタイプ。 + + 有効な値: `rig` + + +## 例 + +### 入力 + +```json +{ + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 出力 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225712000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "basic_animations": { + "running_glb_url": "https://example.invalid/meshy/rigging/running.glb", + "walking_glb_url": "https://example.invalid/meshy/rigging/walking.glb" + }, + "rigged_character_fbx_url": "https://example.invalid/meshy/rigging/character.fbx", + "rigged_character_glb_url": "https://example.invalid/meshy/rigging/character.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "rig" +} +``` + + diff --git a/ja/development/comfy-router/models/minimax/minimax-h3/code.mdx b/ja/development/comfy-router/models/minimax/minimax-h3/code.mdx new file mode 100644 index 000000000..a9204b317 --- /dev/null +++ b/ja/development/comfy-router/models/minimax/minimax-h3/code.mdx @@ -0,0 +1,279 @@ +--- +title: "MiniMax H3 を Comfy Router で使用する" +description: "Comfy Router 経由で minimax/minimax-h3 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "MiniMax H3" +translationSourceHash: 5fb40671 +translationFrom: development/comfy-router/models/minimax/minimax-h3/code.mdx +translationBlockHashes: + "_intro": fa61f8ee + "Quick start": bfc061a3 + "Schema": a9ff2a3d + "Examples": 5c283b57 +--- +{/* GENERATED FILE. Generated from router-schemas/minimax/minimax-h3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`minimax/minimax-h3` の API リファレンスです。MiniMax のモデルを Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `minimax/minimax-h3` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/minimax/minimax-h3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "minimax/minimax-h3", + { + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("minimax/minimax-h3", { + content: [ + { + text: "A single red maple leaf resting on a plain white background.", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "768P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/minimax/minimax-h3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A single red maple leaf resting on a plain white background.\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"768P\"}" +``` + + +## Schema + +### 入力 + + + 出力に AIGC ウォーターマークを追加するかどうか。デフォルトは false。 + + + + 任意。チャレンジ検証後にタスクの状態変化を受け取る URL。 + + + + 生成を駆動するコンテンツ項目。空でないテキスト項目を 1 つ含める必要があります。任意で first_frame/last_frame の画像や reference_* メディアを追加できます。 + + + + オーディオソース。audio_url 項目では必須です。 + + + + 一般に公開された URL、mm_file://\{file_id} 参照、またはデータ URI。 + + + + 画像ソース。image_url 項目では必須です。 + + + + 一般に公開された URL、mm_file://\{file_id} 参照、またはデータ URI。 + + + + メディア項目の役割。オプション: first_frame、last_frame、reference_image、reference_video、reference_audio、base_video。キーフレームの役割と reference_* の役割は 1 つのリクエスト内で同時に使用できません。base_video はビデオ再生成リクエストのソースビデオを示します。 + + + + プロンプトテキスト。リクエストごとに空でないテキスト項目がちょうど 1 つ必要です。 + + + + コンテンツ項目のタイプ。オプション: text、image_url、video_url、audio_url。 + + + + ビデオソース。video_url 項目では必須です。 + + + + 一般に公開された URL、mm_file://\{file_id} 参照、またはデータ URI。 + + + + ビデオの長さ(秒)。5 から 15。 + + + + モデルの ID。オプション: MiniMax-H3。Router の呼び出し元はこのフィールドを省略するか null を送信できます。Router はプロバイダーへのディスパッチ前に、リクエストパスで選択されたモデルを注入します。 + + + + アスペクト比。オプション: adaptive(デフォルト)、21:9、16:9、4:3、1:1、3:4、9:16。テキストから動画への生成では必須で、adaptive にすることはできません。first-frame または last-frame の生成では無視されます(adaptive として扱われます)。 + + + + ビデオの解像度。オプション: 2K、768P。 + + + + [-1, 2^32 - 1] の範囲のランダムシード。省略するか -1 を指定するとランダムになります。 + + 形式: `int64` + + +`GET /v2/models/minimax/minimax-h3/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + Minimax V2 のビデオ生成タスク。 + + + + 生成済みの出力。status が succeeded の場合に存在します。 + + + + succeeded になった h3_context_ir タスクによって生成された拡張ビデオプロンプト。 + + + + 生成済み MP4 の期限付き URL。再度クエリすると URL を更新できます。 + + + + 生成済みビデオの再生時間(秒)。 + + + + status が failed の場合のエラー詳細。code と message を含みます。 + + + + タスク ID。 + + + + タスクで使用されたモデル。 + + + + 生成済みビデオの実際の比率。 + + + + 生成済みビデオの解像度。 + + + + タスクのステータス。オプション: queued、running、succeeded、failed、cancelled、expired。 + + + + タスクのタイプ。 + + + + タスクで記録された使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P" +} +``` + +### 出力 + +```json +{ + "task": { + "content": { + "url": "https://example.invalid/minimax/minimax-h3/generated.mp4" + }, + "duration": 6, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "MiniMax-H3", + "ratio": "16:9", + "resolution": "768P", + "status": "succeeded", + "usage": { + "output_seconds": 6, + "total_seconds": 6 + } + } +} +``` + + diff --git a/ja/development/comfy-router/models/moonvalley/image-to-video/code.mdx b/ja/development/comfy-router/models/moonvalley/image-to-video/code.mdx new file mode 100644 index 000000000..6b1526c22 --- /dev/null +++ b/ja/development/comfy-router/models/moonvalley/image-to-video/code.mdx @@ -0,0 +1,183 @@ +--- +title: "Comfy Router で画像から動画へを使用する" +description: "Comfy Router 経由で moonvalley/image-to-video を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "画像から動画へ" +translationSourceHash: b305fbdf +translationFrom: development/comfy-router/models/moonvalley/image-to-video/code.mdx +translationBlockHashes: + "_intro": 8fe7b0cf + "Quick start": 84eb9061 + "Schema": 3c90da48 + "Examples": bf5363d7 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/moonvalley/image-to-video.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Moonvalley が提供し、Comfy Router から配信される `moonvalley/image-to-video` の API Reference。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `moonvalley/image-to-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/moonvalley/image-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/image-to-video", + { + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/image-to-video", { + image_url: "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + prompt_text: "a single red maple leaf falling onto still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/image-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://yavuzceliker.github.io/sample-images/image-1021.jpg\", \"prompt_text\": \"a single red maple leaf falling onto still water\"}" +``` + + +## スキーマ + +### 入力 + + + + + + + + + + + 生成を制御するガイダンススケール + + 形式: `float` + + + + 生成されるビデオの高さ(ピクセル単位) + + + + ネガティブプロンプトのテキスト + + + + 生成用のランダムシード(デフォルト: ランダム) + + + + デノイズステップ数 + + + + ネガティブプロンプトを使用するかどうか + + + + 生成されるビデオの幅(ピクセル単位) + + + + + + + + + + + + + + +Router が `GET /v2/models/moonvalley/image-to-video/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するものと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water" +} +``` + +### 出力 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/moonvalley/text-to-image/code.mdx b/ja/development/comfy-router/models/moonvalley/text-to-image/code.mdx new file mode 100644 index 000000000..42f612166 --- /dev/null +++ b/ja/development/comfy-router/models/moonvalley/text-to-image/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router でテキストから画像へ" +description: "Comfy Router 経由で moonvalley/text-to-image を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "テキストから画像へ" +translationSourceHash: 55777613 +translationFrom: development/comfy-router/models/moonvalley/text-to-image/code.mdx +translationBlockHashes: + "_intro": 83954c03 + "Quick start": dc376960 + "Schema": 4c0ddc64 + "Examples": c0bc4eb5 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/moonvalley/text-to-image.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`moonvalley/text-to-image` の API リファレンスです。Moonvalley のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットでは Comfy SDK を使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `moonvalley/text-to-image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-image", + { + "prompt_text": "a single red maple leaf resting on still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-image", { + prompt_text: "a single red maple leaf resting on still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf resting on still water\"}" +``` + + +## Schema + +### 入力 + + + + + + + + + + + 生成を制御するためのガイダンススケール + + フォーマット: `float` + + + + 生成されるビデオの高さ (ピクセル単位) + + + + ネガティブプロンプトのテキスト + + + + 生成用のランダムシード (デフォルト: ランダム) + + + + デノイズのステップ数 + + + + ネガティブプロンプトを使用するかどうか + + + + 生成されるビデオの幅 (ピクセル単位) + + + + + + + + + + +Router が `GET /v2/models/moonvalley/text-to-image/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "prompt_text": "a single red maple leaf resting on still water" +} +``` + +### 出力 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.png", + "prompt_text": "a single red maple leaf resting on still water", + "status": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/moonvalley/text-to-video/code.mdx b/ja/development/comfy-router/models/moonvalley/text-to-video/code.mdx new file mode 100644 index 000000000..21a1b8fbb --- /dev/null +++ b/ja/development/comfy-router/models/moonvalley/text-to-video/code.mdx @@ -0,0 +1,176 @@ +--- +title: "Comfy Router でテキストから動画を使用する" +description: "Comfy Router 経由で moonvalley/text-to-video を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "テキストから動画へ" +translationSourceHash: 068da6d0 +translationFrom: development/comfy-router/models/moonvalley/text-to-video/code.mdx +translationBlockHashes: + "_intro": 4d524231 + "Quick start": 535a6274 + "Schema": 5aee2bd6 + "Examples": e66695b1 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/text-to-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`moonvalley/text-to-video` の API リファレンスです。Comfy Router が Moonvalley から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `moonvalley/text-to-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-video", + { + "prompt_text": "a single red maple leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-video", { + prompt_text: "a single red maple leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf\"}" +``` + + +## スキーマ + +### 入力 + + + + + + + + + + + 生成を制御するためのガイダンススケール + + 形式: `float` + + + + 生成されるビデオの高さ(ピクセル単位) + + + + ネガティブプロンプトのテキスト + + + + 生成用のランダムシード(デフォルト: ランダム) + + + + ノイズ除去ステップ数 + + + + ネガティブプロンプトを使用するかどうか + + + + 生成されるビデオの幅(ピクセル単位) + + + + + + + + + + +スキーマから生成され、Router は `GET /v2/models/moonvalley/text-to-video/openapi.json` で配信します。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "prompt_text": "a single red maple leaf" +} +``` + +### 出力 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx b/ja/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx new file mode 100644 index 000000000..6a475cf9c --- /dev/null +++ b/ja/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx @@ -0,0 +1,207 @@ +--- +title: "Comfy Router で Video To Video Resize を使う" +description: "Comfy Router 経由で moonvalley/video-to-video-resize を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Video To Video Resize" +translationSourceHash: dd5bc810 +translationFrom: development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx +translationBlockHashes: + "_intro": 3fbe838b + "Quick start": 84228377 + "Schema": eacf1159 + "Examples": c8034df3 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/moonvalley/video-to-video-resize.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video-resize` のAPIリファレンス。Comfy Router が Moonvalley から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `moonvalley/video-to-video-resize` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video-resize` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video-resize", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video-resize", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video-resize \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオ制御でサポートされるタイプ + + 指定可能な値: `motion_control`, `pose_control` + + + + 制御画像の URL + + + + + + + + + + + + モーション制御の強度 + + フォーマット: `int32` + + + + 生成制御のガイダンススケール + + フォーマット: `float` + + + + ネガティブプロンプトのテキスト + + + + 生成のためのランダムシード (デフォルト: ランダム) + + + + デノイズのステップ数 + + + + ネガティブプロンプトを使用するかどうか + + + + 生成するビデオを記述します + + + + 制御ビデオの URL + + + + 通知用のオプションの webhook URL + + + + + + + + + + + + + + +Router が `GET /v2/models/moonvalley/video-to-video-resize/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 出力 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/ja/development/comfy-router/models/moonvalley/video-to-video/code.mdx b/ja/development/comfy-router/models/moonvalley/video-to-video/code.mdx new file mode 100644 index 000000000..becc94cc2 --- /dev/null +++ b/ja/development/comfy-router/models/moonvalley/video-to-video/code.mdx @@ -0,0 +1,194 @@ +--- +title: "Comfy Router で動画から動画へを使用する" +description: "Comfy Router 経由で moonvalley/video-to-video を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "動画から動画へ" +translationSourceHash: e80ad202 +translationFrom: development/comfy-router/models/moonvalley/video-to-video/code.mdx +translationBlockHashes: + "_intro": 878ec155 + "Quick start": c8c4b6a1 + "Schema": 139afe1d + "Examples": c8034df3 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/moonvalley/video-to-video.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video` の API リファレンスです。Moonvalley から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `moonvalley/video-to-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオ制御でサポートされるタイプ + + 指定可能な値: `motion_control`、`pose_control` + + + + 制御画像の URL + + + + + + + + + + + + モーション制御の強度 + + 形式: `int32` + + + + 生成を制御するためのガイダンススケール + + 形式: `float` + + + + ネガティブプロンプトのテキスト + + + + 生成用のランダムシード (デフォルト: ランダム) + + + + デノイズのステップ数 + + + + ネガティブプロンプトを使用するかどうか + + + + 生成するビデオの説明 + + + + 制御ビデオの URL + + + + 通知用のオプションの webhook URL + + +Router が `GET /v2/models/moonvalley/video-to-video/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに届く前に呼び出しの検証に使用されるものと同じドキュメントです。 + +### 出力 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 例 + +### 入力 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 出力 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx b/ja/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx new file mode 100644 index 000000000..29cbf98fb --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx @@ -0,0 +1,512 @@ +--- +title: "Comfy Router で GPT 4.1 Mini を使用する" +description: "Comfy Router 経由で openai/gpt-4.1-mini を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 4.1 Mini" +translationSourceHash: 87e60db3 +translationFrom: development/comfy-router/models/openai/gpt-4-1-mini/code.mdx +translationBlockHashes: + "_intro": 22aeae46 + "Quick start": 9da04428 + "Schema": b894ba56 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`router-schemas/openai/gpt-4.1-mini.json` から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-mini` の API リファレンス。OpenAI から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-4.1-mini` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力で、応答の生成に使用されます。この契約で Router が提供できない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視出力トークンと推論トークンを含みます。reasoning ID ではこの上限は非表示の推論トークンと共有されるため、小さい値だと可視テキストが出る前に予算全体を消費してしまうことがあります。だから reasoning のスモークケースは 1024 を送り、chat のケースは 16 を送っています。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意で、Router が `{model}` パスセグメントからこれを設定します。明示的な `null` も同様に置き換えられます。パスと一致しない値は拒否されます。 + + + + モデルがツール呼び出しを並列に実行できるようにするかどうか。 + + + + マルチターン会話用の、前の応答の ID。 + + + + reasoning ティア専用。reasoning モデル用の設定。例: `{"effort": "medium"}`。変更されずに転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの ID では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。なぜなら、`text/event-stream` を中継するのではなくプロバイダー応答をキャプチャするためです。openAiResponsesProxy の ModifyResponse はこれをデコードできないので、ストリーミング生成は OpenAI によって課金され、誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。chat ティア専用です。o シリーズの reasoning ID(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI でこのパラメータを拒否します。Router はそれらのためにこれを拒否しません(このコンポーネントの、2 つのティアが 1 つのスキーマを共有する理由に関する注記を参照)ので、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` + + + + 出力形式の設定。たとえば、Structured Outputs 用の `{"format": {"type": "json_schema", ...}}` です。変更されずに転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列モードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類体系を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。chat ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り詰め戦略。この列挙型は、上記の 3 つの語彙とは異なり、ここでは適用されます。これらの 2 つの値が OpenAI の文書化する完全な集合であり、拡大していないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け入れられます。 + + 可能な値: `auto`, `disabled` + + + + トークン使用量のエンベロープ。この契約に存在するのは、v1 オペレーションがリクエスト本文でこれを宣言しているためです。OpenAI はこれを応答で設定するため、呼び出し元がこれを送る理由はありません。 + + +`GET /v2/models/openai/gpt-4.1-mini/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム (または開発者) メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの指示は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム (または開発者) メッセージを簡単に差し替えられます。 + + + + レスポンスに対して生成できるトークン数の上限。表示される出力トークンと [推論トークン](https://platform.openai.com/docs/guides/reasoning) を含みます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + レスポンスの多様性を nucleus サンプリングによって制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled` (デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`, `disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用してマルチターン会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細を学びます。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 後のターンでどの推論項目がモデルに返されるかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)における推論の強度を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の強度を下げると、レスポンスが速くなり、レスポンスで推論に使用されるトークンが少なくなる場合があります。 + + 指定可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これはモデルの推論プロセスのデバッグと理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。これはモデルの推論プロセスのデバッグと理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力する必要がある形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定された JSON スキーマに一致することが保証されます。詳細については [Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs) を参照してください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o および新しいモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。サポートしているモデルでは `json_schema` を使用することが推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成するときに、モデルが使用するツール (または複数のツール) をどのように選択するか。モデルが呼び出せるツールを指定する方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + このレスポンスが完了したときの Unix タイムスタンプ (秒単位)。ステータスが `completed` の場合にのみ存在します。 + + + + このレスポンスが作成されたときの Unix タイムスタンプ (秒単位)。 + + + + モデルがレスポンスの生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。 +Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読み取れる形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の最大値。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの完了が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると想定する代わりに、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目の集約されたテキスト出力が含まれます(存在する場合)。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + OpenAI が類似したリクエストのレスポンスをキャッシュし、キャッシュヒット率を最適化するために使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスが後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返す、関連する対数確率を持つ最も可能性の高いトークンの最大数。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークンの数です。 + [プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークンの数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークンの数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx b/ja/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx new file mode 100644 index 000000000..e82f80055 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx @@ -0,0 +1,530 @@ +--- +title: "Comfy Router で GPT 4.1 Nano を使う" +description: "Comfy Router 経由で openai/gpt-4.1-nano を呼び出す: endpoint、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "GPT 4.1 Nano" +translationSourceHash: 189966b6 +translationFrom: development/comfy-router/models/openai/gpt-4-1-nano/code.mdx +translationBlockHashes: + "_intro": 815c8476 + "Quick start": dc2e7193 + "Schema": c551812f + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-4.1-nano.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-nano` の API リファレンスです。OpenAI から Comfy Router を通じて提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `openai/gpt-4.1-nano` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデルのレスポンスに含める追加の出力データ。 + + + + モデルへのテキスト、画像、ファイル入力。レスポンスの生成に使用されます。このコントラクトにおいて Router が供給できない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの先頭項目として、system(または developer)メッセージを挿入します。 + + + + レスポンスとして生成されるトークン数の上限。可視出力トークンと reasoning トークンを含みます。reasoning ID ではこの上限は非表示の reasoning トークンと共有されるため、小さな値では可視テキストが生成される前に予算をすべて消費してしまいます。これが、reasoning のスモークケースが 1024 を送るのに対し、chat のケースが 16 を送る理由です。 + + 範囲: `1` から `…` + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)であり、Router が `{model}` パスセグメントから設定します。明示的な `null` も同様に置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話用の、前のレスポンスの ID。 + + + + REASONING 層専用。reasoning モデル用の設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat 層の ID では無視されます。 + + + + OpenAI が生成されたレスポンスを後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です。Router はディスパッチ前にこれを `false` に確定します。これはプロバイダーのレスポンスをキャプチャするのであって `text/event-stream` を中継するわけではないためです。openAiResponsesProxy の ModifyResponse はこれをデコードできないため、ストリーミング生成は OpenAI から課金されつつ、誰にも計測されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT 層専用です。o シリーズの reasoning ID(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこのパラメータを拒否しません(両層が 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しは OpenAI 自身のエラーとして返されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択するか。文字列モードか、ツールを名指しするオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + Nucleus サンプリングのカットオフ。CHAT 層専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り捨て戦略。上述の 3 つの語彙とは異なり、ここでは enum が適用されます。これらの 2 つの値が OpenAI のドキュメントに記載された完全な集合であり、それ以降増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で依然として受け付けられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI がこれを設定するのはレスポンス側であるため、呼び出し元が送る理由はありません。 + + +`GET /v2/models/openai/gpt-4.1-nano/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となる同一のドキュメントです。### 出力 + + + システム(または開発者)メッセージを、モデルのコンテキストの先頭項目として挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + 1 つのレスポンスで生成できるトークン数の上限。表示される出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + nucleus sampling によってレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルのレスポンスに使用する切り詰め戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストが + モデルのコンテキストウィンドウサイズを超える場合、モデルは会話の + 途中の入力項目を削除してコンテキストウィンドウに収まるように + レスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルのレスポンスがモデルのコンテキストウィンドウ + サイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルに対する前のレスポンスの一意な ID。これを使用して + マルチターンの会話を作成します。詳しくは + [会話の状態](https://platform.openai.com/docs/guides/conversation-state)をご覧ください。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の +設定オプション。 + + + + 以降のターンでどの推論項目をモデルに返すかを制御します(例: `auto`、`current_turn`、`all_turns`)。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の +推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。 +推論の労力を減らすと、レスポンスが速くなり、レスポンス内で推論に +使用されるトークン数が少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これはモデルの推論プロセスの +デバッグや理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。これはモデルの推論プロセスの +デバッグや理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、 +モデルが指定した JSON スキーマに一致することが保証されます。詳しくは +[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` を設定すると従来の JSON モードが有効になり、 +モデルが生成するメッセージが有効な JSON であることが保証されます。 +対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を + 選択すべきか。モデルが呼び出せるツールの指定方法については、 + `tools` パラメータを参照してください。 + + + + + + + + モデルのレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する主体。 + + + + この Response が完了した日時の Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成された日時の Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。指定可能な値: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + このレスポンスの一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`、`content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の最大値。 + + + + レスポンスに添付できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると仮定するよりも、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + `output` 配列内のすべての `output_text` 項目(存在する場合)からの集約されたテキスト出力を含む、SDK 専用の便利なプロパティです。Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に出現しているかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + キャッシュヒット率を最適化するために、類似したリクエストに対するレスポンスをキャッシュするために OpenAI によって使用されます。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストを処理するために使用される処理階層(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + レスポンスが後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツール別に分類したトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、使用された合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-4-1/code.mdx b/ja/development/comfy-router/models/openai/gpt-4-1/code.mdx new file mode 100644 index 000000000..99bc6b256 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-4-1/code.mdx @@ -0,0 +1,534 @@ +--- +title: "Comfy Router で GPT 4.1 を使用する" +description: "Comfy Router 経由で openai/gpt-4.1 を呼び出す: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 4.1" +translationSourceHash: 2daeb5c5 +translationFrom: development/comfy-router/models/openai/gpt-4-1/code.mdx +translationBlockHashes: + "_intro": 9b48bb1c + "Quick start": 76b84915 + "Schema": b7d988d4 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-4.1.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1` の API リファレンスです。OpenAI から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `openai/gpt-4.1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力。応答の生成に使用されます。このコントラクト上で Router が供給できない唯一のフィールドであり、下記の `required` に含まれる唯一の項目です。 + + + + システム(または開発者)メッセージを、モデルのコンテキストの先頭項目として挿入します。 + + + + 応答のために生成されるトークン数の上限。可視の出力トークンと推論トークンを含みます。reasoning 系の id ではこの上限は非表示の推論トークンと共有されるため、小さな値だと可視テキストが一切出る前に予算を使い切ってしまいます。これが、reasoning のスモークケースでは 1024 を送り、chat 系では 16 を送る理由です。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)であり、Router が `{model}` パスセグメントから補います。明示的な `null` も同じように置き換えられます。パスと矛盾する値を送った場合は拒否されます。 + + + + モデルにツール呼び出しを並列で実行させるかどうか。 + + + + マルチターン会話のための、前の応答の ID。 + + + + REASONING ティア専用。推論モデル向けの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け入れられるキーについては OpenAI の推論ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です。Router はディスパッチ前にこれを `false` に確定(SETTLE)します。これは `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできず、ストリーミング生成は OpenAI に課金されつつ誰にもメータリングされないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用。o シリーズの推論 id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対して拒否しません(両ティアが 1 つのスキーマを共有する理由についてはこのコンポーネントの注記を参照)ので、これを送った推論呼び出しは OpenAI 自身のエラーによって応答されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルがどのツールを使用するかをどのように選択すべきか。文字列モード、またはツールを指定するオブジェクトのいずれか。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークラスサンプリングのカットオフ。CHAT ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り詰め戦略。上記の 3 つの語彙とは異なり、ここでは enum が施行されます。これら 2 つの値が OpenAI の文書化する完全な集合であり、それ以上増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で受け入れられます。 + + 取りうる値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを応答(RESPONSE)に設定するため、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-4.1/openapi.json` で提供するスキーマから生成済み。これはリクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。可視出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)を含みます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + nucleus サンプリングによってレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストが + モデルのコンテキストウィンドウサイズを超える場合、モデルは + 会話の途中の入力項目を削除してコンテキストウィンドウに + 収まるようにレスポンスを切り捨てます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウ + サイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用して +マルチターンの会話を作成します。 +[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細を学びましょう。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の +設定オプション。 + + + + 後のターンでどの reasoning 項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の +推論にかける労力を制約します。 +現在サポートされている値は `low`、`medium`、`high` です。 +推論の労力を減らすと、レスポンスが速くなり、レスポンス内の +推論に使用されるトークンが少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これはデバッグや +モデルの推論プロセスを理解するのに役立ちます。 +`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。これはデバッグや +モデルの推論プロセスを理解するのに役立ちます。 +`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力する必要がある形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、 +モデルが指定した JSON スキーマに一致することが保証されます。詳細は +[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o および新しいモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると古い JSON モードが有効になり、 +モデルが生成するメッセージが有効な JSON であることが保証されます。 +対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれか。 + + + + レスポンスを生成するときに、モデルがどのツール(または複数のツール)を +使用するかをどのように選択するか。モデルが呼び出せるツールの指定方法に +ついては、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスがバックグラウンドで実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒単位)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒単位)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。 + +Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での既存の出現頻度に基づいて、新しいトークンにペナルティを課します。 + + + + このResponseの一意の識別子。 + + + + 応答が不完全である理由の詳細。 + + + + 応答が不完全である理由。 + + 指定可能な値: `max_output_tokens`、`content_filter` + + + + 1つの応答で処理できる、組み込みツールへの総呼び出し回数の最大値。 + + + + 応答に付加できるキーと値のペアのセット。 + + + + モデレーション済みの完了が要求された場合の、応答の入力と出力のモデレーション結果。 + + + + このリソースのオブジェクト型。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルの応答によって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると想定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力が含まれます(存在する場合)。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて、新しいトークンにペナルティを課します。 + + + + キャッシュヒット率を最適化するために、OpenAI が類似したリクエストの応答をキャッシュするために使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理層(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + 応答生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 応答が後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツール別に分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数(それぞれに関連する対数確率が付きます)。 + + + + 入力トークン、出力トークン、出力トークンの内訳、使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-4o/code.mdx b/ja/development/comfy-router/models/openai/gpt-4o/code.mdx new file mode 100644 index 000000000..71cb89310 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-4o/code.mdx @@ -0,0 +1,516 @@ +--- +title: "Comfy Router で GPT 4o を使用する" +description: "Comfy Router 経由で openai/gpt-4o を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 4o" +translationSourceHash: 67ef0c26 +translationFrom: development/comfy-router/models/openai/gpt-4o/code.mdx +translationBlockHashes: + "_intro": d4463f47 + "Quick start": d94685bf + "Schema": a6d45cf8 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-4o.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4o` の API リファレンスです。OpenAI のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `openai/gpt-4o` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-4o` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4o", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4o", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4o \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力で、応答の生成に使用されます。このコントラクトで Router が補うことのできない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 1 つの応答で生成されるトークン数の上限で、可視出力トークンと reasoning トークンを含みます。reasoning の id では、この上限は隠された reasoning トークンと共有されるため、小さな値にすると可視テキストが出力される前に予算を使い切ってしまう可能性があります。reasoning のスモークケースが 1024 を送信し、chat のケースが 16 を送信するのはこのためです。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意で、Router が `{model}` パスセグメントから設定します。明示的な `null` も同じ方法で置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話で使用する、前の応答の ID。 + + + + reasoning ティア専用。reasoning モデル用の設定で、例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。これは `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためで、openAiResponsesProxy の ModifyResponse はそれをデコードできません。そのためストリーミング生成は OpenAI から課金されても、誰も計測しないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。chat ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は、OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこのパラメータを拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定で、例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択するか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。chat ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り詰め戦略。上記の 3 つの語彙とは異なり、ここでは enum が適用されます。これら 2 つの値が OpenAI のドキュメントに記載された完全なセットであり、それ以降増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け付けられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを応答側で設定するので、呼び出し元が送信する理由はありません。 + + +Router が `GET /v2/models/openai/gpt-4o/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに届く前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目としてシステム (または開発者) メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム (または開発者) メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限です。表示される出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled` (デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使ってマルチターンの会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o シリーズモデル限定** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の構成オプション。 + + + + 以降のターンでどの推論項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデル限定** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンス内で推論に使用されるトークン数も減る可能性があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用する推論モード。 + + + + モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を構成すると Structured Outputs が有効になり、モデルが指定した JSON スキーマに一致することが保証されます。詳細は [Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o 以降のモデルでは非推奨:** + +`{ "type": "json_object" }` に設定すると従来の JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。サポートしているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール (または複数のツール) を使用するかをどのように選択するか。モデルが呼び出せるツールの指定方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ (秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ (秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。取り得る値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める説明。 + + + + これまでのテキスト内での既存の頻度に基づいて、新しいトークンにペナルティを課します。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 取り得る値: `max_output_tokens`, `content_filter` + + + + レスポンス内で処理できる、組み込みツールへの合計呼び出し回数の最大値。 + + + + レスポンスに添付できるキーと値のペアのセット。 + + + + モデレートされた完了が要求された場合の、レスポンスの入力と出力のモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 取り得る値: `response` + + + + モデルによって生成されたコンテンツアイテムの配列。 + +- `output` 配列内のアイテムの長さと順序は、 + モデルのレスポンスによって異なります。 +- `output` 配列の最初のアイテムにアクセスして、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると想定する代わりに、SDK で + サポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` アイテムからの +集約されたテキスト出力が含まれます(存在する場合)。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並行して実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて、新しいトークンにペナルティを課します。 + + + + OpenAI が類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理階層(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれかです。 + + 取り得る値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスが後で API 経由で取得するために保存されるかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返される最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含む +トークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数。 + + + + 出力トークンの詳細な内訳。 + + + + 推論トークン数。 + + + + 使用されたトークンの合計数。 + + + + エンドユーザー用の非推奨の識別子。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx new file mode 100644 index 000000000..13ce25c20 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx @@ -0,0 +1,510 @@ +--- +title: "GPT 5.5 Pro を Comfy Router で使用する" +description: "Comfy Router 経由で openai/gpt-5.5-pro を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5.5 Pro" +translationSourceHash: b3895b99 +translationFrom: development/comfy-router/models/openai/gpt-5-5-pro/code.mdx +translationBlockHashes: + "_intro": fa1f76cc + "Quick start": 5444bbc0 + "Schema": cdf599a5 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-5.5-pro.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.5-pro` の API リファレンスです。OpenAI から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `openai/gpt-5.5-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデルの応答に含める追加の出力データ。 + + + + 応答を生成するためにモデルへ渡すテキスト、画像、またはファイルの入力。このコントラクトのうち Router が補えない唯一のフィールドであり、下記の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの先頭項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答で生成されるトークン数の上限。可視の出力トークンと推論トークンを含みます。推論系の id ではこの上限は隠された推論トークンと共有されるため、小さな値だと可視テキストが一切出る前に予算を使い切ってしまいます。そのため、推論の smoke ケースでは 1024 を送り、チャットのケースでは 16 を送っています。 + + 範囲: `1` から `…` + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)で、Router が `{model}` パスセグメントから設定します。明示的な `null` も同じ方法で置き換えられます。パスと矛盾する値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行できるようにするかどうか。 + + + + マルチターン会話で使用する、以前の応答の ID。 + + + + 推論ティア専用。推論モデル向けの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の推論ガイドを参照してください。チャットティアの id では無視されます。 + + + + OpenAI が生成した応答を後で取得できるように保存するかどうか。 + + + + これを送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です: Router はディスパッチ前にこれを `false` に確定します。Router は `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするため、openAiResponsesProxy の ModifyResponse はこれをデコードできません。その結果、ストリーミング生成は OpenAI に課金されても誰にも計測されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。チャットティア専用: o シリーズの推論 id(`o1`、`o1-pro`、`o3`、`o4-mini`)では、OpenAI がこのパラメータを拒否します。Router はそれらに対してこの値を拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送る推論呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。たとえば Structured Outputs では `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。チャットティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り詰め戦略。上記 3 つの語彙と異なり、ここでは enum が実際に強制されます。これは、OpenAI が文書化している値がこの 2 つで全部であり、それ以降増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け付けられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 のオペレーションがリクエストボディでこれを宣言しているため、このコントラクトにも存在します。OpenAI はこれをレスポンス側で設定するため、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5.5-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となる同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。表示可能な出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用するトランケーション戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスをトランケートします。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 設定可能な値: `auto`, `disabled` + + + + モデルへの前回のレスポンスの一意の ID。これを使用してマルチターン会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 後のターンでどの推論項目をモデルに返すかを制御します(例: `auto`、`current_turn`、`all_turns`)。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンスで推論に使用されるトークン数が減る場合があります。 + + 設定可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 設定可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用する推論モード。 + + + + モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 設定可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON スキーマに一致することが保証されます。詳細は[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加オプションはありません。 + +**gpt-4o 以降のモデルには非推奨:** + +`{ "type": "json_object" }` に設定すると古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を使用するかを選択する方法。モデルが呼び出せるツールを指定する方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスがバックグラウンドで実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + このレスポンスが完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + このレスポンスが作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルがレスポンスの生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。指定可能な値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでにテキスト内に出現した頻度に基づいて、新しいトークンにペナルティを課します。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる組み込みツールへの呼び出しの合計最大数。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると仮定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を(存在する場合)含みます。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでにテキスト内に出現したかどうかに基づいて、新しいトークンにペナルティを課します。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションユーザーの検出を支援するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理階層(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスが後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツール別に分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに対数確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 + [プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-5/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-5/code.mdx new file mode 100644 index 000000000..db95f636c --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-5/code.mdx @@ -0,0 +1,513 @@ +--- +title: "Comfy Router で GPT 5.5 を使う" +description: "Comfy Router 経由で openai/gpt-5.5 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5.5" +translationSourceHash: 1fb68933 +translationFrom: development/comfy-router/models/openai/gpt-5-5/code.mdx +translationBlockHashes: + "_intro": c27b2d4d + "Quick start": 64f51e79 + "Schema": 981b58df + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.5` の API Reference。Comfy Router が OpenAI から提供します。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行います。 + +**モデル ID:** `openai/gpt-5.5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力。応答の生成に使用されます。このコントラクトで Router が補えない唯一のフィールドであり、下記の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視出力トークンと reasoning トークンを含みます。reasoning ID ではこの上限は非表示の reasoning トークンと共有されるため、小さな値だと可視テキストが出る前に予算を使い切ってしまいます。reasoning のスモークケースが 1024 を送り、chat のケースが 16 を送るのはそのためです。 + + Range: `1` to `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意で、Router が `{model}` パスセグメントから設定します。明示的な `null` も同様に置き換えられます。パスと矛盾する値を送ると拒否されます。 + + + + モデルがツール呼び出しを並行して実行することを許可するかどうか。 + + + + マルチターン会話のための、前回の応答の ID。 + + + + REASONING ティア専用。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの ID では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチの前にこれを `false` に確定します。これは `text/event-stream` を中継するのではなくプロバイダーの応答を取り込むためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできません。そのためストリーミング生成は OpenAI から課金され、誰からもメータリングされないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用。o シリーズの reasoning ID(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメーターを拒否します。Router はそれらに対して拒否しません(2 つのティアが 1 つのスキーマを共有する理由についてはこのコンポーネントの注記を参照してください)。そのためこれを送る reasoning 呼び出しは OpenAI 自身のエラーとして返されます。 + + Range: `0` to `2` + + + + 出力フォーマットの設定。例: Structured Outputs の場合は `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択するか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。CHAT ティア専用で、`temperature` と同じ条件です。 + + Range: `0` to `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り詰め戦略。上記の 3 つの語彙とは異なり、ここでは enum が強制されます。これはこの 2 つの値が OpenAI の文書化する完全な集合であり、それ以上増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け入れられます。 + + Possible values: `auto`, `disabled` + + + + トークン使用量のエンベロープ。このコントラクトに含まれるのは、v1 オペレーションがリクエストボディでこれを宣言しているためです。OpenAI はこれを応答で設定するため、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5.5/openapi.json` で提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に、Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + システム(または developer)メッセージを、モデルのコンテキストの最初の項目として挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または developer)メッセージを簡単に差し替えられます。 + + + + レスポンスに対して生成できるトークン数の上限。可視出力トークンと[reasoning トークン](https://platform.openai.com/docs/guides/reasoning)を含みます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り詰め戦略。 +- `auto`: このレスポンスおよび以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`, `disabled` + + + + モデルに対する前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)について詳しくはこちら。 + + + + **o シリーズモデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの reasoning 項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の reasoning にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。reasoning の労力を減らすと、レスポンスが速くなり、レスポンス内で reasoning に使用されるトークン数が少なくなる場合があります。 + + 指定可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した reasoning の要約。モデルの reasoning プロセスをデバッグしたり理解したりするのに役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用される reasoning モード。 + + + + モデルが実行した reasoning の要約。モデルの reasoning プロセスをデバッグしたり理解したりするのに役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON スキーマに一致することが保証されます。詳しくは [Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれか。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を選択して使用するか。モデルが呼び出せるツールを指定する方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する主体。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。#Schema#piece3 + + 使用可能な値: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での既存の出現頻度に基づいて、新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 使用可能な値: `max_output_tokens`、`content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに添付できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 使用可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると仮定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を含む、SDK 専用の便利なプロパティ(存在する場合)。 +Python および JavaScript の SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて、新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性がある、アプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 使用可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + レスポンスを後で API 経由で取得できるように保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx new file mode 100644 index 000000000..d8663446e --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx @@ -0,0 +1,515 @@ +--- +title: "Comfy Router で GPT 5.6 Luna を使う" +description: "Comfy Router 経由で openai/gpt-5.6-luna を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて。" +sidebarTitle: "GPT 5.6 Luna" +translationSourceHash: f0b3c793 +translationFrom: development/comfy-router/models/openai/gpt-5-6-luna/code.mdx +translationBlockHashes: + "_intro": f0ae7ed0 + "Quick start": c4c0a28f + "Schema": a166f717 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。router-schemas/openai/gpt-5.6-luna.json から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が OpenAI から提供する `openai/gpt-5.6-luna` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `openai/gpt-5.6-luna` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-luna` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-luna", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-luna", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-luna \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、ファイル入力で、応答の生成に使用されます。このコントラクトで Router が補えない唯一のフィールドであり、以下の `required` にある唯一の項目です。 + + + + モデルのコンテキストの最初の項目としてシステム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限で、可視の出力トークンと reasoning トークンを含みます。reasoning id ではこの上限は隠れた reasoning トークンと共有されるため、小さな値だと可視テキストが出る前に予算全体を消費してしまいます。そのため reasoning のスモークケースでは 1024 を送信し、chat のケースでは 16 を送信します。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意で、Router は `{model}` パスセグメントから設定します。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話用の、前の応答の ID。 + + + + REASONING ティア専用。reasoning モデル用の設定。例: `{"effort": "medium"}`。変更されずに転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成済みの応答を後で取得できるように保存するかどうか。 + + + + 宣言されているため、送信した呼び出し元が拒否されないようになっていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。というのも、これは `text/event-stream` を中継するのではなく、プロバイダーの応答をキャプチャするためです。openAiResponsesProxy の ModifyResponse はこの形式をデコードできないため、ストリーミングされた生成は OpenAI に課金され、誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用: o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI でこのパラメータを拒否します。Router はそれらに対してこれを拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しは OpenAI 自身のエラーによって応答されます。 + + 範囲: `0` から `2` + + + + 出力形式の設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。変更されずに転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列モードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。CHAT ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り詰め戦略。ここでは enum が適用されます。上記の 3 つの語彙とは異なり、これらの 2 つの値は OpenAI が文書化している完全なセットであり、増えていないためです。明示的な `null` も、上記のフィールドと同じ条件で引き続き受け入れられます。 + + 可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 操作がリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを RESPONSE で設定するため、呼び出し元が送信する理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5.6-luna/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となる同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、system (または developer) メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスで system (または developer) メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。表示される出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中にある入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled` (デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o シリーズモデル限定** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの推論項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデル限定** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンスで推論に使用されるトークン数も少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。モデルの推論プロセスのデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。モデルの推論プロセスのデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON schema に一致することが保証されます。詳細は[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると旧来の JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成するときにモデルがどのツール (または複数のツール) を使用するかをどのように選択するか。モデルが呼び出せるツールの指定方法については `tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスが背景で実行されるかどうか。 + + + + レスポンスの請求情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ (秒単位)。status が `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ (秒単位)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。指定可能な値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを課します。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力および出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると想定するのではなく、 + SDK でサポートされている場合は `output_text` プロパティの使用を + 検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目から集約された +テキスト出力を含みます(存在する場合)。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて新しいトークンにペナルティを課します。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれかです。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 後で API 経由で取得できるようにレスポンスを保存するかどうか。 + + + + 組み込みツールごとに分類したトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google/検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、 +および使用された合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx new file mode 100644 index 000000000..df34ffcfc --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx @@ -0,0 +1,510 @@ +--- +title: "Comfy Router で GPT 5.6 Sol を使用する" +description: "Comfy Router を通じて openai/gpt-5.6-sol を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "GPT 5.6 Sol" +translationSourceHash: cdc29939 +translationFrom: development/comfy-router/models/openai/gpt-5-6-sol/code.mdx +translationBlockHashes: + "_intro": 35433a02 + "Quick start": 185aa94b + "Schema": bc45a323 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` によって router-schemas/openai/gpt-5.6-sol.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-sol` の API リファレンスです。OpenAI から Comfy Router を通じて提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、それを `COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL スニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-5.6-sol` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-sol` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-sol", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-sol", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-sol \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイルの入力。応答の生成に使用されます。このコントラクトのうち Router が供給できない唯一のフィールドであり、下記の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの先頭項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視の出力トークンと推論トークンを含みます。reasoning 系の id ではこの上限は隠された推論トークンと共有されるため、小さな値だと可視テキストが出る前に予算を使い切ってしまいます。これが、reasoning のスモークケースが 1024 を送るのに対し、chat のケースが 16 を送る理由です。 + + 範囲: `1` から `…` + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)であり、Router が `{model}` パスセグメントから設定します。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルによるツール呼び出しの並列実行を許可するかどうか。 + + + + マルチターン会話のための、以前の応答の ID。 + + + + REASONING ティア専用。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です。Router はディスパッチ前にこれを `false` に確定(SETTLES)します。これは `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできません。そのためストリーミング生成は OpenAI に課金されても、誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらのために拒否しません(両ティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信した reasoning 呼び出しは OpenAI 自身のエラーとして返答されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs のための `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモード、またはツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのしきい値。`temperature` と同じ条件で CHAT ティア専用です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り捨て戦略。上述の 3 つの語彙とは異なり、ここでは enum が強制されます。これは、この 2 つの値が OpenAI の文書化する完全な集合であり、それが増えていないためです。明示的な `null` は、上のフィールドと同じ条件で引き続き受け付けられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。このコントラクトに存在するのは、v1 オペレーションがリクエストボディで宣言しているためです。OpenAI はこれを応答で埋めるため、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5.6-sol/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として system(または developer)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスで system(または developer)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。可視出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスで使用する切り詰め戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 後のターンでどの推論項目をモデルに返すかを制御します(例: `auto`、`current_turn`、`all_turns`)。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンス内の推論に使用されるトークン数が少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。モデルの推論プロセスのデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。モデルの推論プロセスのデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON スキーマに一致することが保証されます。詳細は[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、旧来の JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることを保証します。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長さを制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を使用するかをどのように選択するか。モデルが呼び出せるツールの指定方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスを背景で実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する主体。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて、新しいトークンにペナルティを課します。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの completions が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると想定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を含む SDK 専用の便利なプロパティです(存在する場合)。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて、新しいトークンにペナルティを課します。 + + + + OpenAI が類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー。例: `in_memory` または `24h`。 + + + + OpenAI の利用ポリシーに違反している可能性のある、アプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理階層。例: `auto`、`default`、`flex`、`scale`、または `priority`。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、または `incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 後で API 経由で取得できるようにレスポンスを保存するかどうか。 + + + + 組み込みツール別に分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに対数確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークン数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークン数。 + + キャッシュから取得されたトークン数です。 + [プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx new file mode 100644 index 000000000..3de3ccd13 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx @@ -0,0 +1,512 @@ +--- +title: "GPT 5.6 Terra を Comfy Router で使用する" +description: "openai/gpt-5.6-terra を Comfy Router 経由で呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5.6 Terra" +translationSourceHash: a0f570b8 +translationFrom: development/comfy-router/models/openai/gpt-5-6-terra/code.mdx +translationBlockHashes: + "_intro": 494f4da2 + "Quick start": 89d7b6b4 + "Schema": 9d2248f1 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`router-schemas/openai/gpt-5.6-terra.json` から `pnpm code-pages:gen` によって生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-terra` の API リファレンスです。Comfy Router が OpenAI から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-5.6-terra` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-terra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-terra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-terra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-terra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + 応答の生成に使用される、モデルへのテキスト、画像、またはファイル入力。このコントラクトにおいて Router が補うことのできない唯一のフィールドであり、下記の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答として生成されるトークン数の上限。可視出力トークンと reasoning トークンを含みます。reasoning id ではこの上限は隠れた reasoning トークンと共有されるため、小さな値だと可視テキストが出力される前に予算をすべて使い切ってしまうことがあります。これが、reasoning のスモークケースでは 1024 を送り、chat のケースでは 16 を送る理由です。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは OPTIONAL であり、Router が `{model}` パスセグメントからこれを設定します。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話のための、以前の応答の ID。 + + + + REASONING 層のみ。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat 層の id では無視されます。 + + + + OpenAI が後で取得できるように生成された応答を保存するかどうか。 + + + + これを送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です: Router はディスパッチ前にこれを `false` に確定します。Router は `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためです。openAiResponsesProxy の ModifyResponse はこれをデコードできないので、ストリーミングされた生成は OpenAI に課金されながら誰にもメータリングされません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT 層のみ: o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこれを拒否しません(2 つの層が 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)ので、これを送信する reasoning 呼び出しは OpenAI 自身のエラーによって応答されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルがどのツールを使用するかを選択する方法。文字列モードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。CHAT 層のみで、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り詰め戦略。enum は、上記の 3 つの語彙とは異なり、ここでは適用されます。これらの 2 つの値が OpenAI の文書化する完全なセットであり、増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で、依然として受け付けられます。 + + 取り得る値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを RESPONSE に設定するので、呼び出し元が送信する理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5.6-terra/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となる同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または developer)メッセージを挿入します。 + +`previous_response_id` と併用する場合、以前のレスポンスの instructions は次のレスポンスには引き継がれません。これにより、新しいレスポンスでシステム(または developer)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。可視出力トークンと[reasoning tokens](https://platform.openai.com/docs/guides/reasoning)を含みます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り詰め戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`, `disabled` + + + + モデルに対する前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。詳しくは[conversation state](https://platform.openai.com/docs/guides/conversation-state)を参照してください。 + + + + **o-series モデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの reasoning 項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o-series モデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の reasoning にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。reasoning の労力を減らすと、レスポンスが速くなり、レスポンス内の reasoning に使用されるトークンも少なくなる場合があります。 + + 指定可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用する reasoning モード。 + + + + モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON schema に一致することが保証されます。詳しくは[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)を参照してください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o 以降のモデルには非推奨:** + +`{ "type": "json_object" }` に設定すると、古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンス生成時にモデルがどのツール(または複数のツール)を選択するか。モデルが呼び出せるツールの指定方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスを背景で実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。 + +使用可能な値: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での既存の出現頻度に基づいて、新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 使用可能な値: `max_output_tokens`、`content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 使用可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると仮定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を含む、SDK 専用の便利なプロパティです (存在する場合)。Python と JavaScript の SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に既に出現しているかどうかに基づいて、新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー (例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される、安定した識別子。 + + + + リクエストの処理に使用される処理ティア (例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 使用可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + レスポンスを後で API 経由で取得できるように保存するかどうか。 + + + + 組み込みツールごとに分類したトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、それぞれに関連する対数確率が付いた最も可能性の高いトークンの最大数。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子です。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-mini/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-mini/code.mdx new file mode 100644 index 000000000..078472d66 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-mini/code.mdx @@ -0,0 +1,533 @@ +--- +title: "Comfy Router で GPT 5 Mini を使用する" +description: "Comfy Router 経由で openai/gpt-5-mini を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5 Mini" +translationSourceHash: 0b6b3734 +translationFrom: development/comfy-router/models/openai/gpt-5-mini/code.mdx +translationBlockHashes: + "_intro": 02cc5ae0 + "Quick start": 2fdb62ed + "Schema": ce5d9df5 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。router-schemas/openai/gpt-5-mini.json から `pnpm code-pages:gen` により生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5-mini` の API リファレンス。OpenAI から Comfy Router によって提供されます。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-5-mini` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、ファイル入力。応答の生成に使用されます。このコントラクトで Router が補うことのできない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として system (または developer) メッセージを挿入します。 + + + + 1 つの応答で生成されるトークン数の上限。表示される出力トークンと推論トークンを含みます。reasoning id ではこの上限は隠れた推論トークンと共有されるため、値が小さいと可視テキストが一切現れる前に予算をすべて使い切ってしまいます。reasoning のスモークケースが 1024 を送り、chat のケースが 16 を送るのはこのためです。 + + 範囲: `1` ~ `…` + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは OPTIONAL であり、Router が `{model}` パスセグメントから補います。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話で使用する、前の応答の ID。 + + + + REASONING 層専用。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat 層の id では無視されます。 + + + + OpenAI が生成した応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは INERT です。Router はディスパッチ前にこれを `false` に確定します。Router は `text/event-stream` を中継するのではなくプロバイダーの応答を取り込むためです。openAiResponsesProxy の ModifyResponse はこれをデコードできないため、ストリーミング生成は OpenAI から課金されても誰にも計測されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT 層専用: o シリーズの reasoning id (`o1`、`o1-pro`、`o3`、`o4-mini`) は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこれを拒否しません (2 つの層が 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` ~ `2` + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + Nucleus サンプリングのカットオフ。CHAT 層専用で、`temperature` と同じ条件です。 + + 範囲: `0` ~ `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り詰め戦略。上記の 3 つの語彙とは異なり、ここでは enum が適用されます。この 2 つの値が OpenAI のドキュメントに記載された完全な集合であり、増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け付けられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI がこれを設定するのは RESPONSE 側であるため、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5-mini/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限です。可視の出力トークンと[reasoning tokens](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用するトランケーション戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中にある入力項目を削除してコンテキストウィンドウにフィットするようにレスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルに対する前のレスポンスの一意の ID。これを使用して +マルチターンの会話を作成します。詳細は +[conversation state](https://platform.openai.com/docs/guides/conversation-state)をご覧ください。 + + + + **o-series モデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の +設定オプションです。 + + + + 以降のターンでモデルに返される推論項目を制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o-series モデル専用** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の +推論にかける労力を制約します。 +現在サポートされている値は `low`、`medium`、`high` です。推論の労力を +減らすと、レスポンスが速くなり、レスポンス内の推論に使用されるトークン数も +少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。デバッグやモデルの推論プロセスの +理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。デバッグやモデルの推論プロセスの +理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、 +モデルが指定した JSON schema に一致することが保証されます。詳細は +[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると従来の JSON モードが有効になり、 +モデルが生成するメッセージが有効な JSON であることが保証されます。対応している +モデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長さを制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を +使用するかを選択する方法。モデルが呼び出せるツールを指定する方法については、 +`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスがバックグラウンドで実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。指定可能な値: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + エラーの内容を人間が読める形式で説明したもの。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与える。 + + + + この Response の一意な識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`、`content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーションされた完了が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクト種別。常に `response` に設定される。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列の項目の長さと順序は、モデルのレスポンスによって異なる。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると仮定するよりも、 + SDK でサポートされている場合は `output_text` プロパティの使用を検討するとよい。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目 +(存在する場合)のテキスト出力を集約したもの。Python SDK と JavaScript SDK でサポートされている。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて新しいトークンにペナルティを与える。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用する。`user` フィールドを置き換える。 + + + + プロンプトキャッシュの保持ポリシー。例: `in_memory` または `24h`。 + + + + OpenAI の利用ポリシーに違反している可能性のある、アプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理ティア。例: `auto`、`default`、`flex`、`scale`、`priority`。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + レスポンスが後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツールごとに分類したトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれにログ確率が付随する。 + + + + 入力トークン、出力トークン、出力トークンの内訳、 +使用された合計トークンを含むトークン使用量の詳細を表す。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + + + キャッシュから取得されたトークン数です。 + [プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー向けの非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## Examples {#examples} + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-5-nano/code.mdx b/ja/development/comfy-router/models/openai/gpt-5-nano/code.mdx new file mode 100644 index 000000000..cbe18cf71 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5-nano/code.mdx @@ -0,0 +1,515 @@ +--- +title: "Comfy Router で GPT 5 Nano を使用する" +description: "Comfy Router 経由で openai/gpt-5-nano を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5 Nano" +translationSourceHash: dc593fc1 +translationFrom: development/comfy-router/models/openai/gpt-5-nano/code.mdx +translationBlockHashes: + "_intro": 406e2f65 + "Quick start": 4bffdfed + "Schema": d4c8c31e + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。router-schemas/openai/gpt-5-nano.json から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5-nano` の API リファレンスです。Comfy Router が OpenAI から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-5-nano` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデルのレスポンスに含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力で、レスポンスの生成に使用されます。このコントラクトのうち Router が補うことのできない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、system(または developer)メッセージを挿入します。 + + + + レスポンスのために生成されるトークン数の上限で、可視の出力トークンと reasoning トークンを含みます。reasoning id ではこの上限は非表示の reasoning トークンと共有されるため、小さな値では可視のテキストが現れる前にバジェット全体を消費してしまいます。そのため、reasoning のスモークケースでは 1024 を送信し、chat のケースでは 16 を送信します。 + + 範囲: `1` から `…` まで + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)であり、Router が `{model}` パスセグメントからこれを補います。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行できるようにするかどうか。 + + + + マルチターン会話のための、前のレスポンスの ID。 + + + + reasoning ティア専用。reasoning モデルの設定で、例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成済みのレスポンスを後で取得できるように保存するかどうか。 + + + + これを送信する呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。これは `text/event-stream` を中継するのではなくプロバイダーのレスポンスをキャプチャするためであり、openAiResponsesProxy の ModifyResponse はこれをデコードできません。そのため、ストリームで生成すると OpenAI からは課金されつつ、誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。chat ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこれを拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` まで + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択するか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。chat ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` まで + + + + コンテキストがモデルのウィンドウを超えた場合の切り捨て戦略。上記 3 つの語彙とは異なり、ここでは enum が適用されます。これは、この 2 つの値が OpenAI の文書化している完全な集合であり、それが増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け付けられます。 + + 可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエスト本文でこれを宣言しているため、このコントラクトに存在します。OpenAI はこれをレスポンス側で設定するため、呼び出し元がこれを送信する理由はありません。 + + +Router が `GET /v2/models/openai/gpt-5-nano/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。可視出力トークンと[reasoning tokens](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルに対する前のレスポンスの一意の ID。これを使ってマルチターンの会話を作成します。[conversation state](https://platform.openai.com/docs/guides/conversation-state) の詳細をご覧ください。 + + + + **o シリーズモデルのみ** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの reasoning 項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデルのみ** + +[reasoning モデル](https://platform.openai.com/docs/guides/reasoning)の reasoning にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。reasoning の労力を減らすと、レスポンスが速くなり、レスポンスで reasoning に使用されるトークンが少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用する reasoning モード。 + + + + モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならないフォーマットを指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON schema に一致することが保証されます。詳細は [Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトのフォーマットは追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、旧来の JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(複数可)を使用するかをどのように選択するか。モデルが呼び出せるツールの指定方法については、`tools` パラメータをご覧ください。 + + + + + + + + モデルのレスポンスを背景で実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する主体。 + + + + この Response が完了したときの Unix タイムスタンプ(秒単位)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒単位)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での既存の出現頻度に基づいて、新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると決めつけるのではなく、 + SDK でサポートされている場合は `output_text` プロパティの使用を + 検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を +含む SDK 専用の便利なプロパティです(存在する場合)。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて、新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のある、アプリケーションのユーザーの検出に役立てるために使用される安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれかです。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスを後で API 経由で取得できるように保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに対数確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計 +トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子です。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-5/code.mdx b/ja/development/comfy-router/models/openai/gpt-5/code.mdx new file mode 100644 index 000000000..ca7539bc0 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-5/code.mdx @@ -0,0 +1,513 @@ +--- +title: "Comfy Router で GPT 5 を使う" +description: "Comfy Router 経由で openai/gpt-5 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 5" +translationSourceHash: 0ddfae5f +translationFrom: development/comfy-router/models/openai/gpt-5/code.mdx +translationBlockHashes: + "_intro": 3fb29b32 + "Quick start": 737bc1e9 + "Schema": 7298ec4e + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。router-schemas/openai/gpt-5.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5` の API リファレンスです。Comfy Router が OpenAI から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `openai/gpt-5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイルの入力。応答の生成に使用されます。このコントラクトのうち Router が補完できない唯一のフィールドであり、以下の `required` にある唯一の項目です。 + + + + システム(または開発者)メッセージを、モデルのコンテキストの先頭項目として挿入します。 + + + + 応答のために生成されるトークン数の上限。可視の出力トークンと reasoning トークンを含みます。reasoning の id では、この上限は隠れた reasoning トークンと共有されるため、小さな値だと可視テキストが現れる前に予算全体を使い切ってしまいます。これが、reasoning のスモークケースが 1024 を送信し、chat のケースが 16 を送信する理由です。 + + 範囲: `1` ~ `…` + + + + OpenAI のモデル識別子。Comfy Router ではこのフィールドは任意(OPTIONAL)で、Router が `{model}` パスセグメントから補完します。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話のための、前の応答の ID。 + + + + REASONING ティア専用。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効(INERT)です。Router はディスパッチ前にこれを `false` に確定します。`text/event-stream` を中継するのではなくプロバイダー応答をキャプチャするためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできません。その結果、ストリーミング生成は OpenAI から課金されても誰も計量しません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこのパラメータを拒否しません(2 つのティアが 1 つのスキーマを共有する理由についてはこのコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` ~ `2` + + + + 出力フォーマットの設定。例: Structured Outputs のための `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + Nucleus サンプリングのカットオフ。CHAT ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` ~ `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り詰め戦略。上記の 3 つの語彙とは異なり、ここでは enum が実際に強制されます。この 2 つの値が OpenAI の文書化する完全な集合であり、増えていないためです。明示的な `null` は、上の各フィールドと同じ条件で引き続き受け付けられます。 + + 取り得る値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれをレスポンスで設定するため、呼び出し元が送信する理由はありません。 + + +`GET /v2/models/openai/gpt-5/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。表示される出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルに対する前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。詳細は[会話状態](https://platform.openai.com/docs/guides/conversation-state)をご覧ください。 + + + + **o-series モデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの推論項目をモデルに返すかを制御します(例: `auto`、`current_turn`、`all_turns`)。 + + + + **o-series モデルのみ** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンスで推論に使用されるトークン数も少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これはモデルの推論過程のデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用する推論モード。 + + + + モデルが実行した推論の要約。これはモデルの推論過程のデバッグや理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON スキーマに一致することが保証されます。詳細は[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は追加オプションなしの `{ "type": "text" }` です。 + +**gpt-4o およびそれ以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成するときにモデルがどのツール(または複数のツール)を選択すべきか。モデルが呼び出せるツールを指定する方法については `tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスを背景で実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒単位)。status が `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒単位)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。 + +指定可能な値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + この Response の一意な識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション付きの completion が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると決め打ちするのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を含みます(存在する場合)。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキストに出現しているかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュし、キャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される、安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 後で API 経由で取得できるようにレスポンスを保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、使用された合計トークンを含む、トークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークンの数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークンの数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークンの数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 使用例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-6-astra/code.mdx b/ja/development/comfy-router/models/openai/gpt-6-astra/code.mdx new file mode 100644 index 000000000..5dba3aff8 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-6-astra/code.mdx @@ -0,0 +1,531 @@ +--- +title: "Comfy Router で GPT 6 Astra を使用する" +description: "Comfy Router 経由で openai/gpt-6-astra を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT 6 Astra" +translationSourceHash: 2ffdfbf2 +translationFrom: development/comfy-router/models/openai/gpt-6-astra/code.mdx +translationBlockHashes: + "_intro": cc898a3e + "Quick start": 1c601637 + "Schema": 5fa7484e + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-6-astra.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-6-astra` の API リファレンスです。OpenAI から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `openai/gpt-6-astra` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-6-astra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-6-astra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-6-astra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-6-astra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力。応答の生成に使用されます。このコントラクトのうち Router が補うことのできない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視の出力トークンと reasoning トークンを含みます。reasoning の id ではこの上限は隠された reasoning トークンと共有されるため、小さな値だと可視テキストが現れる前に予算を使い切ってしまいます。reasoning のスモークケースが 1024 を送り、チャットのケースが 16 を送るのはそのためです。 + + 範囲: `1` ~ `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意で、Router が `{model}` パスセグメントからこれを補います。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話用の、以前の応答の ID。 + + + + reasoning ティア専用。reasoning モデル向けの設定で、例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。チャットティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。Router は `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできないので、ストリーミングされた生成は OpenAI に課金される一方で誰にも計測されないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。チャットティア専用で、o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメーターを拒否します。Router はそれらに対してこのパラメーターを拒否しません(両ティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` ~ `2` + + + + 出力フォーマットの設定で、例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモードか、ツールを名指しするオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け付けられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。チャットティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` ~ `1` + + + + コンテキストがモデルのウィンドウを超えたときの切り捨て戦略。上記 3 つの語彙とは異なり、ここでは enum が実際に適用されます。この 2 つの値が OpenAI のドキュメントにある完全な集合であり、それ以上増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け付けられます。 + + 可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを応答側で設定するので、呼び出し元が送る理由はありません。 + + +Router が `GET /v2/models/openai/gpt-6-astra/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に照合するドキュメントと同じものです。### 出力 + + + モデルのコンテキストの最初の項目として、system(または developer)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスで system(または developer)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。表示される出力トークンと[reasoning tokens](https://platform.openai.com/docs/guides/reasoning)が含まれます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` ~ `2` + + + + nucleus sampling によってレスポンスの多様性を制御します + + 範囲: `0` ~ `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストが + モデルのコンテキストウィンドウサイズを超える場合、モデルは + 会話の途中の入力項目を削除して、コンテキストウィンドウに + 収まるようにレスポンスを切り捨てます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキスト + ウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 取り得る値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用して +マルチターン会話を作成します。[conversation state](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o-series モデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)の +設定オプション。 + + + + 以降のターンでどの reasoning 項目をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o-series モデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)の +推論にかける労力を制約します。 +現在サポートされている値は `low`、`medium`、`high` です。推論の +労力を減らすと、レスポンスが速くなり、レスポンスで推論に使用される +トークン数も少なくなる場合があります。 + + 取り得る値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これは +デバッグやモデルの推論プロセスの理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 取り得る値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される reasoning モード。 + + + + モデルが実行した推論の要約。これは +デバッグやモデルの推論プロセスの理解に役立ちます。 +`auto`、`concise`、`detailed` のいずれかです。 + + 取り得る値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、 +モデルが指定した JSON schema に一致することが保証されます。詳細は +[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加オプションはありません。 + +**gpt-4o 以降のモデルでは非推奨:** + +`{ "type": "json_object" }` に設定すると古い JSON mode が有効になり、 +モデルが生成するメッセージが有効な JSON であることが保証されます。 +サポートしているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + レスポンスを生成する際に、モデルがどのツール(1 つまたは複数)を +使用するかを選択する方法。モデルが呼び出せるツールを指定する方法については +`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。status が `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。指定可能な値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーを人間が読める形式で説明したもの。 + + + + これまでのテキスト内での既存の出現頻度に基づいて、新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由に関する詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる組み込みツールへの総呼び出し回数の最大値。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション済みの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクト型。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成されたコンテンツを含む `assistant` メッセージであると仮定するのではなく、SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目(存在する場合)からの集約されたテキスト出力を含みます。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて、新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー。例: `in_memory` または `24h`。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するのに役立つ、安定した識別子。 + + + + リクエストの処理に使用される処理層。例: `auto`、`default`、`flex`、`scale`、`priority`。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスを後で API 経由で取得できるように保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ウェブ検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれにログ確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数。 + + + + 出力トークンの詳細な内訳。 + + + + 推論トークン数。 + + + + 使用されたトークンの総数。 + + + + エンドユーザー向けの非推奨の識別子。`safety_identifier` および `prompt_cache_key` に置き換え済みです。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-image-1-5/code.mdx b/ja/development/comfy-router/models/openai/gpt-image-1-5/code.mdx new file mode 100644 index 000000000..e7ac06f85 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-image-1-5/code.mdx @@ -0,0 +1,248 @@ +--- +title: "Comfy Router で GPT Image 1.5 を使用する" +description: "Comfy Router 経由で openai/gpt-image-1.5 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT Image 1.5" +translationSourceHash: aa2b43fe +translationFrom: development/comfy-router/models/openai/gpt-image-1-5/code.mdx +translationBlockHashes: + "_intro": 2c69d7b3 + "Quick start": c7d735cc + "Schema": 7f073ccc + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-1.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-1.5` の API リファレンス。OpenAI から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `openai/gpt-image-1.5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1.5", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1.5", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## スキーマ + +### 入力 + + + 背景の透明性 + + 指定可能な値: `transparent`、`opaque` + + + + 画像生成に使用するモデル(例: gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + コンテンツモデレーションの設定 + + 指定可能な値: `low`、`auto` + + + + 生成する画像の数(1〜10)。 + + + + JPEG または WebP の圧縮レベル(0〜100) + + + + 出力画像のフォーマット + + 指定可能な値: `png`、`webp`、`jpeg` + + + + 生成したい画像のテキスト記述 + + + + 生成される画像の品質 + + 指定可能な値: `low`、`medium`、`high`、`standard`、`hd` + + + + 画像データのレスポンス形式 + + 指定可能な値: `url`、`b64_json` + + + + 画像のサイズ(例: 1024x1024、1536x1024、auto) + + + + 画像のスタイル。この操作が受け付ける gpt-image モデルでは使用されません。これは dall-e-3 専用のパラメーターであり、OpenAI が 2026-05-12 にこれらの ID を廃止した際に退役しました。 + + 指定可能な値: `vivid`、`natural` + + + + エンドユーザー監視用の一意の識別子 + + +`GET /v2/models/openai/gpt-image-1.5/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + + + + + Base64 エンコードされた画像データ + + + + 修正されたプロンプト + + + + 画像の URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成された画像の背景が不透明か透明か。fal が処理するブランチでのみ設定され、そこでは `opaque` が報告されます。 + + + + 生成が完了した時刻の Unix タイムスタンプ(秒)。現在のエポック値は 2^31 に十分近いため、書式指定のない `integer` は多くの SDK ジェネレーターで 32 ビットフィールドを生成してしまいます。そのため `int64` として宣言されています。 + + フォーマット: `int64` + + + + `data[].b64_json` 内のバイトのエンコーディング(例: `png`)。fal が処理するブランチでは設定され、OpenAI が処理するブランチでは存在しません。後者では、呼び出し元が要求した `output_format` が優先されます。 + + + + 生成が実際に実行された品質ティア。fal が処理するブランチで解決できる場合に設定され、それ以外では存在しません。 + + + + 生成が実際に実行されたピクセル寸法(`x` の形式)。fal が処理するブランチで解決できる場合に設定され、それ以外では存在しません。 + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-image-1/code.mdx b/ja/development/comfy-router/models/openai/gpt-image-1/code.mdx new file mode 100644 index 000000000..9986c6177 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-image-1/code.mdx @@ -0,0 +1,248 @@ +--- +title: "Comfy Router で GPT Image 1 を使用する" +description: "Comfy Router 経由で openai/gpt-image-1 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT Image 1" +translationSourceHash: 0fc531d9 +translationFrom: development/comfy-router/models/openai/gpt-image-1/code.mdx +translationBlockHashes: + "_intro": 4c0df6e6 + "Quick start": 77f219f1 + "Schema": 500e7e87 + "Examples": 7b3879cc +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-image-1.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-1` の API リファレンス。OpenAI から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP による同じ呼び出しです。 + +**モデル ID:** `openai/gpt-image-1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## スキーマ + +### 入力 + + + 背景の透明度 + + 可能な値: `transparent`、`opaque` + + + + 画像生成に使用するモデル(例: gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + コンテンツモデレーション設定 + + 可能な値: `low`、`auto` + + + + 生成する画像の数(1〜10)。 + + + + JPEG または WebP の圧縮レベル(0〜100) + + + + 出力画像の形式 + + 可能な値: `png`、`webp`、`jpeg` + + + + 目的の画像を説明するテキスト + + + + 生成される画像の品質 + + 可能な値: `low`、`medium`、`high`、`standard`、`hd` + + + + 画像データのレスポンス形式 + + 可能な値: `url`、`b64_json` + + + + 画像のサイズ(例: 1024x1024、1536x1024、auto) + + + + 画像のスタイル。この操作が受け付ける gpt-image モデルでは使用されません。これは dall-e-3 専用のパラメータであり、OpenAI が 2026-05-12 にこれらの ID を廃止した際に引退しました。 + + 可能な値: `vivid`、`natural` + + + + エンドユーザー監視用の一意の識別子 + + +Router が `GET /v2/models/openai/gpt-image-1/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + + + + + Base64 エンコードされた画像データ + + + + 修正されたプロンプト + + + + 画像の URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成された画像の背景が不透明か透明か。fal 提供のブランチでのみ設定され、そこでは `opaque` が報告されます。 + + + + 生成が完了した時刻の Unix タイムスタンプ(秒)。`int64` として宣言されています。現在のエポック値は 2^31 に十分近く、多くの SDK ジェネレーターではフォーマットされていない `integer` が 32 ビットフィールドを生成してしまうためです。 + + 形式: `int64` + + + + `data[].b64_json` 内のバイト列のエンコーディング(例: `png`)。fal 提供のブランチでは設定されますが、OpenAI 提供のブランチでは存在しません。後者では呼び出し元が要求した `output_format` が優先されます。 + + + + 生成が実際に実行された品質ティア。fal 提供のブランチで解決できる場合に設定され、それ以外では存在しません。 + + + + 生成が実際に実行されたピクセル寸法(`x` 形式)。fal 提供のブランチで解決できる場合に設定され、それ以外では存在しません。 + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx b/ja/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx new file mode 100644 index 000000000..42314ebde --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx @@ -0,0 +1,249 @@ +--- +title: "GPT Image 2.5 Flare を Comfy Router で使う" +description: "Comfy Router 経由で openai/gpt-image-2.5-flare を呼び出します: endpoint、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT Image 2.5 Flare" +translationSourceHash: a3bd711d +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx +translationBlockHashes: + "_intro": c2dfdd54 + "Quick start": 36a7ad58 + "Schema": eb1113b3 + "Examples": 7b3879cc +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-image-2.5-flare.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2.5-flare` の API リファレンス。OpenAI から Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用しています(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-image-2.5-flare` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-flare", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-flare", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## スキーマ + +### 入力 + + + 背景の透明度 + + 指定可能な値: `transparent`、`opaque` + + + + 画像生成に使用するモデル(例: gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + コンテンツモデレーション設定 + + 指定可能な値: `low`、`auto` + + + + 生成する画像の数(1~10)。 + + + + JPEG または WebP の圧縮レベル(0~100) + + + + 出力画像の形式 + + 指定可能な値: `png`、`webp`、`jpeg` + + + + 生成したい画像のテキスト記述 + + + + 生成される画像の品質 + + 指定可能な値: `low`、`medium`、`high`、`standard`、`hd` + + + + 画像データのレスポンス形式 + + 指定可能な値: `url`、`b64_json` + + + + 画像のサイズ(例: 1024x1024、1536x1024、auto) + + + + 画像のスタイル。この操作が受け付ける gpt-image モデルでは使用されません。これは dall-e-3 専用のパラメータであり、OpenAI が 2026-05-12 にそれらの ID を廃止した際に引退しました。 + + 指定可能な値: `vivid`、`natural` + + + + エンドユーザー監視用の一意の識別子 + + +Router が `GET /v2/models/openai/gpt-image-2.5-flare/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + + + + + Base64 エンコードされた画像データ + + + + 改訂されたプロンプト + + + + 画像の URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成された画像の背景が不透明か透明か。fal 提供の分岐でのみ設定され、`opaque` を報告します。 + + + + 生成が完了した時刻の Unix タイムスタンプ(秒)。`int64` として宣言されています。現在のエポック値は 2^31 に十分近く、未整形の `integer` では多くの SDK ジェネレーターが 32 ビットフィールドを生成してしまうためです。 + + 形式: `int64` + + + + `data[].b64_json` 内のバイト列のエンコーディング(例: `png`)。fal 提供の分岐では設定され、OpenAI 提供の分岐では存在しません。後者では、呼び出し元が要求した `output_format` が優先されます。 + + + + 生成が実際に実行された品質ティア。fal 提供の分岐で解決できる場合に設定され、それ以外では存在しません。 + + + + 生成が実際に実行されたピクセル寸法(`x` 形式)。fal 提供の分岐で解決できる場合に設定され、それ以外では存在しません。 + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx b/ja/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx new file mode 100644 index 000000000..85d481a29 --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router で GPT Image 2.5 Sunburst を使う" +description: "Comfy Router 経由で openai/gpt-image-2.5-sunburst を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT Image 2.5 Sunburst" +translationSourceHash: 4dfd7fed +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx +translationBlockHashes: + "_intro": 91f42876 + "Quick start": 5c62befd + "Schema": 88886616 + "Examples": 7b3879cc +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/gpt-image-2.5-sunburst.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +OpenAI が提供する `openai/gpt-image-2.5-sunburst` の API リファレンス。Comfy Router が配信します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `openai/gpt-image-2.5-sunburst` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-sunburst", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-sunburst", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## スキーマ + +### 入力 + + + 背景の透明度 + + 指定可能な値: `transparent`、`opaque` + + + + 画像生成に使用するモデル(例: gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + コンテンツモデレーション設定 + + 指定可能な値: `low`、`auto` + + + + 生成する画像の数(1〜10)。 + + + + JPEG または WebP の圧縮レベル(0〜100) + + + + 出力画像のフォーマット + + 指定可能な値: `png`、`webp`、`jpeg` + + + + 生成したい画像のテキスト記述 + + + + 生成される画像の品質 + + 指定可能な値: `low`、`medium`、`high`、`standard`、`hd` + + + + 画像データのレスポンスフォーマット + + 指定可能な値: `url`、`b64_json` + + + + 画像のサイズ(例: 1024x1024、1536x1024、auto) + + + + 画像のスタイル。この操作が受け付ける gpt-image モデルでは使用されません。これは dall-e-3 専用のパラメータであり、OpenAI が 2026-05-12 にこれらの ID を廃止した時点で無効になりました。 + + 指定可能な値: `vivid`、`natural` + + + + エンドユーザー監視用の一意の識別子 + + +Router が `GET /v2/models/openai/gpt-image-2.5-sunburst/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + + + + + Base64 エンコードされた画像データ + + + + 修正されたプロンプト + + + + 画像の URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成された画像の背景が不透明か透明か。fal で処理されるブランチでのみ設定され、そこでは `opaque` が報告されます。 + + + + 生成が完了した時刻の Unix タイムスタンプ(秒)。`int64` として宣言されています。現在のエポック値は 2^31 に十分近いため、フォーマットされていない `integer` は多くの SDK ジェネレーターで 32 ビットフィールドを生成してしまうからです。 + + フォーマット: `int64` + + + + `data[].b64_json` 内のバイト列のエンコーディング(例: `png`)。fal で処理されるブランチでは設定され、OpenAI で処理されるブランチでは存在しません。後者では、呼び出し元が要求した `output_format` が優先されます。 + + + + 生成が実際に実行された品質ティア。fal で処理されるブランチで解決できる場合に設定され、それ以外では存在しません。 + + + + 生成が実際に実行されたピクセル寸法で、`x` の形式です。fal で処理されるブランチで解決できる場合に設定され、それ以外では存在しません。 + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/gpt-image-2/code.mdx b/ja/development/comfy-router/models/openai/gpt-image-2/code.mdx new file mode 100644 index 000000000..5818b2ece --- /dev/null +++ b/ja/development/comfy-router/models/openai/gpt-image-2/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router で GPT Image 2 を使用する" +description: "Comfy Router 経由で openai/gpt-image-2 を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "GPT Image 2" +translationSourceHash: 3f7d4810 +translationFrom: development/comfy-router/models/openai/gpt-image-2/code.mdx +translationBlockHashes: + "_intro": 846b7fa3 + "Quick start": 28ebfa70 + "Schema": ca8ae8e5 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2` の API リファレンスです。OpenAI のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `openai/gpt-image-2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## スキーマ + +### 入力 + + + 背景の透明度 + + 指定可能な値: `transparent`、`opaque` + + + + 画像生成に使用するモデル(例: gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + コンテンツモデレーション設定 + + 指定可能な値: `low`、`auto` + + + + 生成する画像の数(1〜10)。 + + + + JPEG または WebP の圧縮レベル(0〜100) + + + + 出力画像のフォーマット + + 指定可能な値: `png`、`webp`、`jpeg` + + + + 生成したい画像のテキスト記述 + + + + 生成される画像の品質 + + 指定可能な値: `low`、`medium`、`high`、`standard`、`hd` + + + + 画像データのレスポンス形式 + + 指定可能な値: `url`、`b64_json` + + + + 画像のサイズ(例: 1024x1024、1536x1024、auto) + + + + 画像のスタイル。この操作が受け付ける gpt-image モデルでは使用されません。これは dall-e-3 専用のパラメータであり、OpenAI が 2026-05-12 にそれらの ID を廃止した際に引退しました。 + + 指定可能な値: `vivid`、`natural` + + + + エンドユーザー監視用の一意の識別子 + + +Router が `GET /v2/models/openai/gpt-image-2/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じです。 + +### 出力 + + + + + + + Base64 エンコードされた画像データ + + + + 改訂されたプロンプト + + + + 画像の URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成された画像の背景が不透明か透明かを示します。fal が処理するブランチでのみ設定され、そこでは `opaque` が報告されます。 + + + + 生成が完了した時刻の Unix タイムスタンプ(秒)。`int64` として宣言されています。現在のエポック値は 2^31 に十分近いため、書式なしの `integer` では多くの SDK ジェネレーターが 32 ビットフィールドを生成してしまうからです。 + + フォーマット: `int64` + + + + `data[].b64_json` 内のバイト列のエンコーディング(例: `png`)。fal が処理するブランチで設定され、OpenAI が処理するブランチでは存在しません。後者では呼び出し元が要求した `output_format` が優先されます。 + + + + その生成が実際に実行された品質ティア。fal が処理するブランチで解決できる場合に設定され、それ以外では存在しません。 + + + + その生成が実際に実行されたピクセル寸法(`x` 形式)。fal が処理するブランチで解決できる場合に設定され、それ以外では存在しません。 + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/o1-pro/code.mdx b/ja/development/comfy-router/models/openai/o1-pro/code.mdx new file mode 100644 index 000000000..fb73332f8 --- /dev/null +++ b/ja/development/comfy-router/models/openai/o1-pro/code.mdx @@ -0,0 +1,515 @@ +--- +title: "Comfy Router で o1-pro を使う" +description: "Comfy Router 経由で openai/o1-pro を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "o1-pro" +translationSourceHash: e2e4d3ac +translationFrom: development/comfy-router/models/openai/o1-pro/code.mdx +translationBlockHashes: + "_intro": 2e79c0c5 + "Quick start": d5afb203 + "Schema": 5f93e7dc + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o1-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/o1-pro` の API リファレンス。OpenAI から Comfy Router 経由で提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `openai/o1-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/o1-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデルレスポンスに含める追加の出力データ。 + + + + レスポンスを生成するために使用される、モデルへのテキスト、画像、またはファイルの入力。この契約において Router が補えない唯一のフィールドであり、以下の `required` に含まれる唯一の項目でもあります。 + + + + モデルのコンテキストの先頭項目として、システム(または開発者)メッセージを挿入します。 + + + + レスポンスのために生成されるトークン数の上限。可視の出力トークンと推論トークンを含みます。reasoning の ID ではこの上限は非表示の推論トークンと共有されるため、小さな値では可視テキストが現れる前に予算を使い切ってしまいます。そのため reasoning のスモークケースでは 1024 を送信し、chat のケースでは 16 を送信しています。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意であり、Router が `{model}` パスセグメントから補います。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信した場合は拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話のための、前回のレスポンスの ID。 + + + + reasoning ティア専用。reasoning モデルの設定。例: `{"effort": "medium"}`。変更されずに転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの ID では無視されます。 + + + + OpenAI が生成されたレスポンスを後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。なぜなら Router は `text/event-stream` を中継するのではなくプロバイダーのレスポンスを取得するためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできません。そのためストリーミングされた生成は OpenAI によって課金され、誰によっても計量されないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。chat ティア専用。o シリーズの reasoning ID (`o1`、`o1-pro`、`o3`、`o4-mini`) は OpenAI でこのパラメータを拒否します。Router はそれらのためにこれを拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs のための `{"format": {"type": "json_schema", ...}}`。変更されずに転送されます。 + + + + モデルがどのツールを使用するかを選択する方法。文字列のモード、またはツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。chat ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り詰め戦略。上記 3 つの語彙とは異なり、ここでは enum が適用されます。これは、これらの 2 つの値が OpenAI の文書化する完全な集合であり、それが増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で依然として受け入れられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、この契約にも存在します。OpenAI はこれをレスポンスで設定するため、呼び出し元がこれを送信する理由はありません。 + + +Router が `GET /v2/models/openai/o1-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。### 出力 + + + システム(または開発者)メッセージをモデルのコンテキストの最初の項目として挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスに対して生成できるトークン数の上限。可視出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)を含みます。 + + + + レスポンスの生成に使用されるモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + nucleus サンプリングによりレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り捨て戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り捨てます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 使用可能な値: `auto`, `disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用してマルチターン会話を作成します。詳細は[会話状態](https://platform.openai.com/docs/guides/conversation-state)を参照してください。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでモデルに返される推論項目を制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論エフォートを制約します。現在サポートされている値は `low`、`medium`、`high` です。推論エフォートを下げると、レスポンスが速くなり、レスポンス内の推論に使用されるトークンが少なくなる場合があります。 + + 使用可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。これはデバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 使用可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。これはデバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれかです。 + + 使用可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力する必要がある形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、指定した JSON schema にモデルが一致するようになります。詳細は [Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)を参照してください。 + +デフォルトの形式は `{ "type": "text" }` で、追加オプションはありません。 + +**gpt-4o 以降のモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。対応しているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれかです。 + + + + モデルがレスポンスを生成するときにどのツール(または複数のツール)を選択すべきか。モデルが呼び出せるツールの指定方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスがバックグラウンドで実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。可能な値: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーを人間が読める形式で説明したもの。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の最大値。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーション付きの補完が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルのレスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると仮定するのではなく、 + SDK でサポートされている場合は `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` 項目からの +集約されたテキスト出力を、存在する場合に含みます。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並行して実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + OpenAI がキャッシュヒット率を最適化するために、類似したリクエストのレスポンスをキャッシュする際に使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される、安定した識別子。 + + + + リクエストの処理に使用される処理ティア(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 後で API 経由で取得できるようにレスポンスを保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ウェブ検索ツールの使用量。 + + + + + + + + 各トークン位置で返される最も可能性の高いトークンの最大数。それぞれにログ確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された合計トークンを含む +トークン使用量の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの総数です。 + + + + エンドユーザー向けの非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 使用例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/o1/code.mdx b/ja/development/comfy-router/models/openai/o1/code.mdx new file mode 100644 index 000000000..ee0fed95e --- /dev/null +++ b/ja/development/comfy-router/models/openai/o1/code.mdx @@ -0,0 +1,516 @@ +--- +title: "Comfy Router で o1 を使用する" +description: "Comfy Router 経由で openai/o1 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "o1" +translationSourceHash: c28bee49 +translationFrom: development/comfy-router/models/openai/o1/code.mdx +translationBlockHashes: + "_intro": e4f64988 + "Quick start": 194e7dcc + "Schema": c257f6a0 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +OpenAI が提供する `openai/o1` の API リファレンスです。Comfy Router によって配信されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `openai/o1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 入力 + + + モデルの応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイル入力。応答の生成に使用されます。この契約の中で Router が提供できない唯一のフィールドであり、以下の `required` に含まれる唯一の項目です。 + + + + モデルのコンテキストの先頭項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視出力トークンと reasoning トークンを含みます。reasoning id ではこの上限は隠れた reasoning トークンと共有されるため、小さな値では可視テキストが出力される前にバジェット全体を消費してしまいます。そのため、reasoning のスモークケースでは 1024 を送信し、チャットのケースでは 16 を送信しています。 + + 範囲: `1` ~ `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意であり、Router が `{model}` パスセグメントから補います。明示的な `null` も同様に置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行できるようにするかどうか。 + + + + マルチターン会話のための、前の応答の ID。 + + + + REASONING ティア専用。reasoning モデルの設定。例: `{"effort": "medium"}`。そのまま転送されます。受け付けられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。Router は `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためです。openAiResponsesProxy の ModifyResponse はこれをデコードできないので、ストリーミング生成は OpenAI に課金されても誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は、OpenAI 側でこのパラメーターを拒否します。Router はそれらに対してこれを拒否しません(2 つのティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信した reasoning 呼び出しは OpenAI 自身のエラーで応答されます。 + + 範囲: `0` ~ `2` + + + + 出力フォーマットの設定。例: Structured Outputs 用の `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルがどのツールを使用するかを選択する方法。文字列のモード、またはツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。CHAT ティア専用で、`temperature` と同じ条件です。 + + 範囲: `0` ~ `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り捨て戦略。上記の 3 つの語彙とは異なり、ここでは列挙型が適用されます。これらの 2 つの値が OpenAI の文書化する完全な集合であり、それが増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け入れられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、この契約に存在します。OpenAI はこれを応答で設定するので、呼び出し元が送信する理由はありません。 + + +`GET /v2/models/openai/o1/openapi.json` で Router が提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム (または開発者) メッセージを挿入します。 + +`previous_response_id` と併用する場合、以前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム (または開発者) メッセージを簡単に差し替えることができます。 + + + + レスポンスに対して生成できるトークン数の上限。可視出力トークンと[推論トークン](https://platform.openai.com/docs/guides/reasoning)を含みます。 + + + + レスポンスの生成に使用されたモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り詰め戦略。 +- `auto`: このレスポンスおよび以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、会話の途中の入力項目を削除してコンテキストウィンドウに収まるようにレスポンスを切り詰めます。 +- `disabled` (デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルに対する以前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。[会話状態](https://platform.openai.com/docs/guides/conversation-state)の詳細をご覧ください。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の設定オプション。 + + + + 以降のターンでどの推論項目をモデルに返すかを制御します (例: `auto`、`current_turn`、`all_turns`)。 + + + + **o シリーズモデル専用** + +[推論モデル](https://platform.openai.com/docs/guides/reasoning)の推論にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。推論の労力を減らすと、レスポンスが速くなり、レスポンス内で推論に使用されるトークンが少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスに使用される推論モード。 + + + + モデルが実行した推論の要約。デバッグやモデルの推論プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力する必要がある形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON schema に一致することが保証されます。詳細は[Structured Outputs ガイド](https://platform.openai.com/docs/guides/structured-outputs)をご覧ください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o および新しいモデルには推奨されません:** + +`{ "type": "json_object" }` に設定すると、古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。サポートしているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれか。 + + + + レスポンスを生成する際に、モデルがどのツール (または複数のツール) を使用するかを選択する方法。モデルが呼び出せるツールを指定する方法については、`tools` パラメータをご覧ください。 + + + + + + + + モデルレスポンスがバックグラウンドで実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + このレスポンスが完了したときの Unix タイムスタンプ (秒単位)。ステータスが `completed` の場合にのみ存在します。 + + + + このレスポンスが作成されたときの Unix タイムスタンプ (秒単位)。 + + + + モデルがレスポンスの生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + 応答が不完全である理由の詳細。 + + + + 応答が不完全である理由。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 1 回の応答で処理できる、組み込みツールへの総呼び出し回数の最大値。 + + + + 応答に付加できるキーと値のペアのセット。 + + + + モデレーション付きの完了が要求された場合の、応答の入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + Possible values: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルの応答によって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると仮定するのではなく、 + SDK でサポートされている場合は `output_text` プロパティの使用を + 検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を +含む SDK 専用の便利なプロパティ(存在する場合)。Python と JavaScript の +SDK でサポートされています。 + + + + モデルがツール呼び出しを並行して実行することを許可するかどうか。 + + + + これまでのテキスト内に出現するかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + キャッシュヒット率を最適化するために、類似したリクエストの応答をキャッシュするために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー。例: `in_memory` または `24h`。 + + + + OpenAI の利用ポリシーに違反する可能性のあるアプリケーションのユーザーを検出するのに役立つ、安定した識別子。 + + + + リクエストを処理するために使用される処理階層。例: `auto`、`default`、`flex`、`scale`、`priority`。 + + + + 応答生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 応答が後で API 経由で取得するために保存されるかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google/検索ツールの使用状況。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれに関連する対数確率が付きます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、 +および使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークン数です。 +[プロンプトキャッシングの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/openai/o3/code.mdx b/ja/development/comfy-router/models/openai/o3/code.mdx new file mode 100644 index 000000000..0694356d8 --- /dev/null +++ b/ja/development/comfy-router/models/openai/o3/code.mdx @@ -0,0 +1,539 @@ +--- +title: "Comfy Router で o3 を使用する" +description: "Comfy Router 経由で openai/o3 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "o3" +translationSourceHash: 1ad89234 +translationFrom: development/comfy-router/models/openai/o3/code.mdx +translationBlockHashes: + "_intro": 65fe84c3 + "Quick start": 6577da9c + "Schema": 2f985532 + "Examples": 67e6c8f1 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/openai/o3.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +OpenAI から Comfy Router が提供する `openai/o3` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys) でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `openai/o3` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/o3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o3", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o3", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイルの入力。応答の生成に使用されます。このコントラクトで Router が提供できない唯一のフィールドであり、以下の `required` に記載されている唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限。可視出力トークンと reasoning トークンを含みます。reasoning の id ではこの上限は隠された reasoning トークンと共有されるため、小さな値だと可視テキストが一切生成される前に予算を使い切ってしまいます。そのため、reasoning のスモークケースでは 1024 を送信し、chat のケースでは 16 を送信します。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意であり、Router は `{model}` パスセグメントからこれを埋めます。明示的な `null` も同様に置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + マルチターン会話のための、前回の応答の ID。 + + + + REASONING ティア専用。reasoning モデル用の設定。例: `{"effort": "medium"}`。そのまま転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。chat ティアの id はこれを無視します。 + + + + OpenAI が生成された応答を後で取得できるように保存するかどうか。 + + + + 送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。というのも、Router は `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためであり、それは openAiResponsesProxy の ModifyResponse がデコードできません。そのため、ストリーミングされた生成は OpenAI に課金されつつ、誰にもメータリングされないことになります。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。CHAT ティア専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI でこのパラメータを拒否します。Router はそれらに対してこれを拒否しません(両ティアが 1 つのスキーマを共有する理由については、このコンポーネントの注記を参照してください)。そのため、これを送信する reasoning 呼び出しは OpenAI 自身のエラーによって応答されます。 + + 範囲: `0` から `2` + + + + 出力フォーマットの設定。例: Structured Outputs のための `{"format": {"type": "json_schema", ...}}`。そのまま転送されます。 + + + + モデルがどのツールを使用するかをどのように選択すべきか。文字列のモード、またはツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を絞り込みません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークラスサンプリングのカットオフ。CHAT ティア専用であり、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えた場合の切り捨て戦略。上記の 3 つの語彙とは異なり、ここではこの列挙型が適用されます。というのも、これらの 2 つの値は OpenAI が文書化している完全な集合であり、拡張されていないためです。明示的な `null` は、上記のフィールドと同じ条件で依然として受け入れられます。 + + 可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれを応答側で設定するため、呼び出し元が送信する理由はありません。 + + +Router が `GET /v2/models/openai/o3/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となる同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスでシステム(または開発者)メッセージを簡単に差し替えられます。 + + + + レスポンスとして生成できるトークン数の上限。表示される出力トークンと[reasoning tokens](https://platform.openai.com/docs/guides/reasoning)の両方を含みます。 + + + + レスポンスの生成に使用するモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + ニュークリアスサンプリングによるレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスで使用する切り詰め戦略。 +- `auto`: このレスポンスおよび以前のレスポンスのコンテキストが + モデルのコンテキストウィンドウサイズを超える場合、モデルは会話の + 途中の入力項目を削除してコンテキストウィンドウに収まるよう + レスポンスを切り詰めます。 +- `disabled` (デフォルト): モデルレスポンスがモデルのコンテキストウィンドウ + サイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`、`disabled` + + + + モデルへの前のレスポンスの一意な ID。これを使用して +マルチターンの会話を作成します。詳細は +[conversation state](https://platform.openai.com/docs/guides/conversation-state)を参照してください。 + + + + **o-series モデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)の +設定オプション。 + + + + 以降のターンでどの reasoning item をモデルに返すかを制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o-series モデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)の +reasoning にかける労力を制限します。 +現在サポートされている値は `low`、`medium`、`high` です。 +reasoning effort を下げると、レスポンスが速くなり、レスポンスで +reasoning に使用されるトークン数も少なくなる場合があります。 + + 指定可能な値: `low`、`medium`、`high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した reasoning の要約。これは +モデルの reasoning プロセスをデバッグおよび理解するのに +役立ちます。 +`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + レスポンスで使用される reasoning モード。 + + + + モデルが実行した reasoning の要約。これは +モデルの reasoning プロセスをデバッグおよび理解するのに +役立ちます。 +`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`、`concise`、`detailed` + + + + + + + + モデルが出力しなければならないフォーマットを指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、 +モデルが指定した JSON schema と一致することが保証されます。詳細は +[Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs)を参照してください。 + +デフォルトのフォーマットは `{ "type": "text" }` で、追加オプションはありません。 + +**gpt-4o およびそれ以降のモデルには非推奨:** + +`{ "type": "json_object" }` に設定すると、従来の JSON モードが有効になり、 +モデルが生成するメッセージが有効な JSON であることが保証されます。 +対応しているモデルでは `json_schema` が推奨されます。 + + + + モデルのレスポンスの冗長さを制限します。`low`、`medium`、`high` のいずれか。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を +使用するかを選択する方法。モデルが呼び出せるツールを指定する方法については +`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスをバックグラウンドで実行するかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する主体。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでに出現したテキスト内での頻度に基づいて、新しいトークンにペナルティを課します。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`, `content_filter` + + + + 1 つのレスポンスで処理できる、組み込みツールへの総呼び出し回数の上限。 + + + + レスポンスに付加できるキーと値のペアのセット。 + + + + モデレーションされた完了が要求された場合の、レスポンスの入力と出力に対するモデレーション結果。 + + + + このリソースのオブジェクト種別。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルの + レスポンスによって異なります。 +- `output` 配列の最初の項目にアクセスし、それがモデルによって + 生成されたコンテンツを含む `assistant` メッセージであると + 仮定するのではなく、SDK でサポートされている場合は + `output_text` プロパティの使用を検討してください。 + + + + SDK 専用の便利なプロパティで、`output` 配列内のすべての `output_text` +項目からの集約されたテキスト出力が含まれます(存在する場合)。 +Python SDK と JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並列で実行することを許可するかどうか。 + + + + これまでにテキスト内に出現したかどうかに基づいて、新しいトークンにペナルティを課します。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー。例: `in_memory` または `24h`。 + + + + OpenAI の利用ポリシーに違反する可能性のあるアプリケーションユーザーの検出を支援するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理階層。例: `auto`、`default`、`flex`、`scale`、`priority`。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + レスポンスを後で API 経由で取得できるように保存するかどうか。 + + + + 組み込みツールごとに分類されたトークンとリクエストの使用量。 + + + + 画像生成ツールのトークン使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用量。 + + + + + + + + 各トークン位置で返す、最も可能性の高いトークンの最大数。それぞれにログ確率が付随します。 + + + + 入力トークン、出力トークン、出力トークンの内訳、および使用された +合計トークンを含むトークン使用量の詳細を表します。 + + + + 入力トークン数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークン数。 + + キャッシュから取得されたトークン数です。 + [プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークン数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークン数です。 + + + + 使用されたトークンの総数です。 + + + + エンドユーザー用の非推奨の識別子です。`safety_identifier` および `prompt_cache_key` に置き換えられました。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ja/development/comfy-router/models/openai/o4-mini/code.mdx b/ja/development/comfy-router/models/openai/o4-mini/code.mdx new file mode 100644 index 000000000..63983b1d8 --- /dev/null +++ b/ja/development/comfy-router/models/openai/o4-mini/code.mdx @@ -0,0 +1,516 @@ +--- +title: "Comfy Router で o4-mini を使う" +description: "Comfy Router 経由で openai/o4-mini を呼び出す: エンドポイント、リクエストの形式、Router が返すレスポンスについて説明します。" +sidebarTitle: "o4-mini" +translationSourceHash: 13134b80 +translationFrom: development/comfy-router/models/openai/o4-mini/code.mdx +translationBlockHashes: + "_intro": 03d40f5d + "Quick start": ae3ead9e + "Schema": 14c35480 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o4-mini.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`openai/o4-mini` の API リファレンスです。Comfy Router が OpenAI から提供しています。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、それを `COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットでは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `openai/o4-mini` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/openai/o4-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o4-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o4-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o4-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## スキーマ + +### 入力 + + + モデル応答に含める追加の出力データ。 + + + + モデルへのテキスト、画像、またはファイルの入力で、応答の生成に使用されます。このコントラクトで Router が提供できない唯一のフィールドであり、以下の `required` にある唯一の項目です。 + + + + モデルのコンテキストの最初の項目として、システム(または開発者)メッセージを挿入します。 + + + + 応答のために生成されるトークン数の上限で、可視の出力トークンと reasoning トークンを含みます。reasoning 系の id ではこの上限は隠れた reasoning トークンと共有されるため、小さな値では可視テキストが出る前に予算全体を消費してしまいます。そのため reasoning のスモークケースは 1024 を送り、チャットのケースは 16 を送ります。 + + 範囲: `1` から `…` + + + + OpenAI モデル識別子。Comfy Router ではこのフィールドは任意であり、Router が `{model}` パスセグメントから設定します。明示的な `null` も同じように置き換えられます。パスと一致しない値を送信すると拒否されます。 + + + + モデルがツール呼び出しを並列で実行できるようにするかどうか。 + + + + マルチターン会話のための、前の応答の ID。 + + + + reasoning 階層専用。reasoning モデルの設定(例: `{"effort": "medium"}`)。そのまま転送されます。受け入れられるキーについては OpenAI の reasoning ガイドを参照してください。チャット階層の id では無視されます。 + + + + OpenAI が生成された応答を後で取得できるよう保存するかどうか。 + + + + これを送信した呼び出し元が拒否されないように宣言されていますが、このサーフェスでは無効です。Router はディスパッチ前にこれを `false` に確定します。これは `text/event-stream` を中継するのではなくプロバイダーの応答をキャプチャするためであり、openAiResponsesProxy の ModifyResponse はそれをデコードできないので、ストリーミング生成は OpenAI に課金されても誰にも計量されません。ストリームが必要な場合は `POST /proxy/openai/v1/responses` を使用してください。 + + + + サンプリング温度。チャット階層専用です。o シリーズの reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)は OpenAI 側でこのパラメータを拒否します。Router はそれらに対してこれを受け付け拒否しません(2 つの階層が 1 つのスキーマを共有する理由についてはこのコンポーネントの注記を参照)ので、これを送信する reasoning 呼び出しには OpenAI 自身のエラーが返されます。 + + 範囲: `0` から `2` + + + + 出力形式の設定。たとえば Structured Outputs の場合は `{"format": {"type": "json_schema", ...}}` です。そのまま転送されます。 + + + + モデルが使用するツールをどのように選択すべきか。文字列のモードか、ツールを指定するオブジェクトのいずれかです。 + + + + モデルが呼び出せるツール定義。Router はツールの分類を狭めません。受け入れられる形については OpenAI の Responses API リファレンスを参照してください。 + + + + ニュークリアスサンプリングのカットオフ。チャット階層専用で、`temperature` と同じ条件です。 + + 範囲: `0` から `1` + + + + コンテキストがモデルのウィンドウを超えたときのトランケーション戦略。上記 3 つの語彙とは異なり、ここでは enum が実際に適用されます。これは、これらの 2 つの値が OpenAI の文書化する完全な集合であり、それが増えていないためです。明示的な `null` は、上記のフィールドと同じ条件で引き続き受け入れられます。 + + 指定可能な値: `auto`、`disabled` + + + + トークン使用量のエンベロープ。v1 オペレーションがリクエストボディでこれを宣言しているため、このコントラクトに存在します。OpenAI はこれをレスポンスで設定するため、呼び出し元が送信する理由はありません。 + + +Router が `GET /v2/models/openai/o4-mini/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。### 出力 + + + モデルのコンテキストの最初の項目として、system(または developer)メッセージを挿入します。 + +`previous_response_id` と併用する場合、前のレスポンスの instructions は次のレスポンスに引き継がれません。これにより、新しいレスポンスで system(または developer)メッセージを簡単に差し替えられます。 + + + + レスポンスで生成できるトークン数の上限。表示される出力トークンと [reasoning tokens](https://platform.openai.com/docs/guides/reasoning) を含みます。 + + + + レスポンスの生成に使用されたモデル + + + + レスポンスのランダム性を制御します + + 範囲: `0` から `2` + + + + nucleus sampling によりレスポンスの多様性を制御します + + 範囲: `0` から `1` + + + + モデルレスポンスに使用する切り詰め戦略。 +- `auto`: このレスポンスと以前のレスポンスのコンテキストがモデルのコンテキストウィンドウサイズを超える場合、モデルは会話の途中の入力項目を削除してコンテキストウィンドウにフィットするようにレスポンスを切り詰めます。 +- `disabled`(デフォルト): モデルレスポンスがモデルのコンテキストウィンドウサイズを超える場合、リクエストは 400 エラーで失敗します。 + + 指定可能な値: `auto`, `disabled` + + + + モデルへの前のレスポンスの一意の ID。これを使用してマルチターンの会話を作成します。[conversation state](https://platform.openai.com/docs/guides/conversation-state) の詳細を学ぶ。 + + + + **o シリーズモデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning) の設定オプション。 + + + + 後のターンでモデルに返される reasoning 項目を制御します。例: `auto`、`current_turn`、`all_turns`。 + + + + **o シリーズモデル専用** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning) の reasoning にかける労力を制約します。現在サポートされている値は `low`、`medium`、`high` です。reasoning effort を下げると、レスポンスが速くなり、レスポンス内の reasoning に使用されるトークンが少なくなる場合があります。 + + 指定可能な値: `low`, `medium`, `high` + + + + **非推奨:** 代わりに `summary` を使用してください。 + +モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + レスポンスに使用される reasoning モード。 + + + + モデルが実行した reasoning の要約。デバッグやモデルの reasoning プロセスの理解に役立ちます。`auto`、`concise`、`detailed` のいずれか。 + + 指定可能な値: `auto`, `concise`, `detailed` + + + + + + + + モデルが出力しなければならない形式を指定するオブジェクト。 + +`{ "type": "json_schema" }` を設定すると Structured Outputs が有効になり、モデルが指定した JSON schema に一致することが保証されます。詳細は [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs) を参照してください。 + +デフォルトの形式は `{ "type": "text" }` で、追加のオプションはありません。 + +**gpt-4o および新しいモデルには非推奨:** + +`{ "type": "json_object" }` に設定すると古い JSON モードが有効になり、モデルが生成するメッセージが有効な JSON であることが保証されます。サポートしているモデルでは `json_schema` の使用が推奨されます。 + + + + モデルのレスポンスの冗長性を制約します。`low`、`medium`、`high` のいずれか。 + + + + レスポンスを生成する際に、モデルがどのツール(または複数のツール)を使用するかをどのように選択するか。モデルが呼び出せるツールを指定する方法については、`tools` パラメータを参照してください。 + + + + + + + + モデルレスポンスが背景で実行されるかどうか。 + + + + レスポンスの課金情報。 + + + + レスポンスの支払いを担当する当事者。 + + + + この Response が完了したときの Unix タイムスタンプ(秒)。ステータスが `completed` の場合にのみ存在します。 + + + + この Response が作成されたときの Unix タイムスタンプ(秒)。 + + + + モデルが Response の生成に失敗したときに返されるエラーオブジェクト。 + + + + レスポンスのエラーコード。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + エラーの人間が読める形式の説明。 + + + + これまでのテキスト内での出現頻度に基づいて新しいトークンにペナルティを与えます。 + + + + この Response の一意の識別子。 + + + + レスポンスが不完全である理由の詳細。 + + + + レスポンスが不完全である理由。 + + 指定可能な値: `max_output_tokens`、`content_filter` + + + + 1 つのレスポンスで処理できる組み込みツールへの総呼び出し回数の最大値。 + + + + レスポンスに添付できるキーと値のペアのセット。 + + + + モデレーション済みの完了が要求された場合の、レスポンスの入力と出力のモデレーション結果。 + + + + このリソースのオブジェクトタイプ。常に `response` に設定されます。 + + 指定可能な値: `response` + + + + モデルによって生成されたコンテンツ項目の配列。 + +- `output` 配列内の項目の長さと順序は、モデルの応答によって異なります。 +- `output` 配列の最初の項目にアクセスして、それがモデルによって生成された + コンテンツを含む `assistant` メッセージであると仮定するのではなく、 + SDK でサポートされている場合は `output_text` プロパティの使用を + 検討してください。 + + + + `output` 配列内のすべての `output_text` 項目からの集約されたテキスト出力を +含む、SDK 専用の便利なプロパティ(存在する場合)。 +Python および JavaScript SDK でサポートされています。 + + + + モデルがツール呼び出しを並行して実行することを許可するかどうか。 + + + + これまでのテキストに出現するかどうかに基づいて新しいトークンにペナルティを与えます。 + + + + 類似したリクエストのレスポンスをキャッシュしてキャッシュヒット率を最適化するために OpenAI が使用します。`user` フィールドを置き換えます。 + + + + プロンプトキャッシュの保持ポリシー(例: `in_memory` または `24h`)。 + + + + OpenAI の利用ポリシーに違反している可能性のあるアプリケーションのユーザーを検出するために使用される安定した識別子。 + + + + リクエストの処理に使用される処理階層(例: `auto`、`default`、`flex`、`scale`、`priority`)。 + + + + レスポンス生成のステータス。`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` のいずれか。 + + 指定可能な値: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + レスポンスが後で API 経由で取得できるように保存されるかどうか。 + + + + 組み込みツール別に分類されたトークンとリクエストの使用状況。 + + + + 画像生成ツールのトークン使用状況。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 検索ツールの使用状況。 + + + + + + + + 各トークン位置で返される最も可能性の高いトークンの最大数。それぞれに対数確率が関連付けられます。 + + + + 入力トークン、出力トークン、出力トークンの内訳、 +使用された合計トークンを含むトークン使用状況の詳細を表します。 + + + + 入力トークンの数。 + + + + 入力トークンの詳細な内訳。 + + + + キャッシュに書き込まれた入力トークンの数。 + + キャッシュから取得されたトークンの数です。 +[プロンプトキャッシュの詳細](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 出力トークンの数です。 + + + + 出力トークンの詳細な内訳です。 + + + + 推論トークンの数です。 + + + + 使用されたトークンの合計数です。 + + + + エンドユーザーの非推奨の識別子です。`safety_identifier` と `prompt_cache_key` に置き換え済みです。 + + +## 例 + +### 入力 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 出力 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/pruna/p-video-2/code.mdx b/ja/development/comfy-router/models/pruna/p-video-2/code.mdx new file mode 100644 index 000000000..d5fd6d40c --- /dev/null +++ b/ja/development/comfy-router/models/pruna/p-video-2/code.mdx @@ -0,0 +1,184 @@ +--- +title: "P Video 2 を Comfy Router で使用する" +description: "pruna/p-video-2 を Comfy Router 経由で呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "P Video 2" +translationSourceHash: b0e8a66d +translationFrom: development/comfy-router/models/pruna/p-video-2/code.mdx +translationBlockHashes: + "_intro": fd2e661c + "Quick start": cabedd05 + "Schema": 51d0cc63 + "Examples": 0d85c9fe +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/pruna/p-video-2.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`pruna/p-video-2` の API リファレンス。Pruna の Comfy Router から提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `pruna/p-video-2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/pruna/p-video-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "pruna/p-video-2", + { + "input": { + "aspect_ratio": "16:9", + "draft": False, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("pruna/p-video-2", { + input: { + aspect_ratio: "16:9", + draft: false, + duration: 2, + fps: 24, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "720p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/pruna/p-video-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"aspect_ratio\":\"16:9\",\"draft\":false,\"duration\":2,\"fps\":24,\"prompt\":\"A single red maple leaf resting on a plain white background.\",\"resolution\":\"720p\"}}" +``` + + +## スキーマ + +### 入力 + + + P-Video-2 の生成パラメータ。生成は完成したビデオの秒数に応じて課金され、返却されたファイルを基準に、`resolution` と `draft` で決まるレートで計算されます。セーフティフィルタは常に有効で、リクエスト内の `disable_safety_filter` の値は無視されます。 + + + + アスペクト比: 16:9、9:16、4:3、3:4、3:2、2:3 または 1:1。`image` が設定されている場合は無視されます。 + + + + 生成を条件付ける入力オーディオの URI(flac、mp3 または wav)。出力の長さはオーディオに従います。 + + + + より高速で低品質なプレビュー。draft レートで課金されます。 + + + + 生成されるビデオの再生時間(秒、1〜20)。省略した場合、モデルはプロンプトから長さを選択し、最大 20 秒になります。`audio` が設定されている場合は無視されます。 + + 範囲: `1` から `20` + + + + フレームレート: 24 または 48。 + + + + 画像から動画へ生成するための入力画像の URI(jpg、jpeg、png または webp)。 + + + + 最後のフレームの参照画像 URI。 + + + + ビデオ生成のためのテキストプロンプト。 + + + + 生成前にプロンプトを書き換えます。`seed` で結果を再現する必要がある場合は無効にしてください。 + + + + 出力解像度: 720p または 1080p。 + + + + ビデオをオーディオ付きで保存します。 + + + + 再現可能な生成のためのランダムシード。省略した場合はランダムになります。 + + +`GET /v2/models/pruna/p-video-2/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるのと同じドキュメントです。 + +### 出力 + + + エラーメッセージ。status が failed の場合に含まれます。 + + + + 完了したビデオの URL。status が succeeded の場合に含まれます。 + + + + 人間が読める進捗メッセージ。 + + + + 予測ステータス: starting、processing、succeeded、failed または canceled。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "aspect_ratio": "16:9", + "draft": false, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p" + } +} +``` + +### 出力 + +```json +{ + "generation_url": "https://example.invalid/pruna/p-video-2/output.mp4", + "status": "succeeded" +} +``` + + + diff --git a/ja/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx b/ja/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx new file mode 100644 index 000000000..429ea9629 --- /dev/null +++ b/ja/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx @@ -0,0 +1,287 @@ +--- +title: "Comfy Router で Qwen Image 3.0 Pro を使用する" +description: "Comfy Router 経由で qwen/qwen-image-3.0-pro を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Qwen Image 3.0 Pro" +translationSourceHash: caba1a44 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx +translationBlockHashes: + "_intro": b9aa2049 + "Quick start": dee41ecf + "Schema": 3517aa0a + "Examples": a4380dd1 +--- +{/* GENERATED FILE. Generated from router-schemas/qwen/qwen-image-3.0-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`qwen/qwen-image-3.0-pro` の API リファレンス。Qwen のモデルを Comfy Router が提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用し、cURL スニペットは同じ呼び出しを raw HTTP で行います。 + +**Model ID:** `qwen/qwen-image-3.0-pro` + +**Endpoint:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0-pro", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0-pro", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## スキーマ + +### 入力 + + + リクエストメッセージを含む入力パラメータオブジェクト + + + + リクエストコンテンツの配列。単一ラウンドの会話のみをサポートするため、配列には必ず1つのオブジェクトだけを含める必要があります + + + + メッセージコンテンツの配列。テキストから画像への生成では1つのtextオブジェクト、画像編集では1~3個のimageオブジェクトと1つのtextオブジェクトを含みます + + + + 入力画像のURLまたはBase64エンコードされたデータ。画像編集では1~3枚の画像をサポートします + + + + 生成または編集する画像の内容、スタイル、構図を記述するポジティブプロンプト + + + + メッセージ送信者の役割。user に設定する必要があります + + 指定可能な値: `user` + + + + マルチモーダルな画像生成と編集のために呼び出すモデルのID。使用可能な値は qwen-image-3.0-pro と qwen-image-3.0 です。このスキーマの `required` リストに含まれていないのは、Comfy Router が /v2/models/qwen/\{model} の `{model}` パスセグメントから設定するためです。そのため Router 経由の呼び出しでは省略しますが、/proxy/ ルートへの直接の v1 呼び出しでは指定する必要があります。 + + + + 画像生成を制御する追加パラメータ + + + + 出力画像の枚数。範囲は1~6、デフォルトは1 + + 範囲: `1` から `6` + + + + 画像に表示したくない内容を記述するネガティブプロンプト + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + プロンプトの書き換え方法。direct(デフォルト、T2I と I2I でサポート)または agent(T2I のみ) + + 指定可能な値: `direct`, `agent` + + + + ランダム性を制御する乱数シード。範囲 [0, 2147483647] + + 範囲: `0` から `2147483647` + + + + 幅*高さ 形式の出力画像解像度(例: 1024*1024)。API は 262144(512*512)から 6553600(2560*2560)までのピクセル面積を、1:8 から 8:1 のアスペクト比で受け付けます。指定しない場合、モデルがプロンプトに基づいて解像度を自動的に推奨します + + + + ウォーターマークを追加するかどうか。デフォルトは false + + +Router が `GET /v2/models/qwen/qwen-image-3.0-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + 失敗したリクエストに関する詳細情報(リクエストが成功した場合は返されません) + + + + モデルの生成結果を含みます + + + + 結果オプションのリスト + + + + タスクが停止した理由。タスクが正常に完了した場合の値は stop です + + + + モデルから返されたメッセージ + + + + 生成された画像の情報を含むメッセージコンテンツ + + + + 生成された PNG 形式の画像のURL。リンクは24時間有効です + + + + 画像の代わりに返されるテキスト要素。このフィールドのみを持つ要素はアセットを生成していないため、呼び出し側はコンテンツ要素の有無ではなく `image` を基準に完了を判定します + + + + メッセージの役割。assistant で固定です + + + + 一意のリクエスト識別子 + + + + この呼び出しのリソース使用量。成功時のみ返されます + + + + リクエスト内の入力画像の枚数。テキストから画像への生成では 0 を返します + + + + 入力画像の課金ティア。qima_input_1k または qima_input_2k で、出力解像度のピクセル面積によって決まります + + + + 最終的な出力画像の高さ(ピクセル単位) + + + + 実際に返された出力画像の枚数 + + + + 出力画像の課金ティア。qima_output_1k または qima_output_2k で、出力解像度のピクセル面積によって決まります + + + + 最終的な出力画像の幅(ピクセル単位) + + +## 例 + +### 入力 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 出力 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx b/ja/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx new file mode 100644 index 000000000..60efee43b --- /dev/null +++ b/ja/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx @@ -0,0 +1,288 @@ +--- +title: "Comfy Router で Qwen Image 3.0 を使う" +description: "Comfy Router 経由で qwen/qwen-image-3.0 を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Qwen Image 3.0" +translationSourceHash: cfa02806 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0/code.mdx +translationBlockHashes: + "_intro": e007ab60 + "Quick start": 10fc21cc + "Schema": baa6f997 + "Examples": a4380dd1 +--- +{/* GENERATED FILE. Generated from router-schemas/qwen/qwen-image-3.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Qwen より提供する `qwen/qwen-image-3.0` の API Reference です。 + + + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `qwen/qwen-image-3.0` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## スキーマ + +### 入力 + + + リクエストメッセージを含む入力パラメータオブジェクト + + + + リクエストコンテンツの配列。サポートされるのは単一ラウンドの会話のみであるため、配列には必ず1つのオブジェクトだけを含める必要があります + + + + メッセージコンテンツの配列。テキストから画像への生成では1つのテキストオブジェクト、画像編集では1〜3個の画像オブジェクトと1つのテキストオブジェクトを含みます + + + + 入力画像のURLまたはBase64エンコードされたデータ。画像編集では1〜3枚の画像をサポートします + + + + 生成または編集する画像の内容、スタイル、構図を記述するポジティブプロンプト + + + + メッセージ送信者の役割。ユーザーに設定する必要があります + + 取り得る値: `user` + + + + マルチモーダルな画像生成と編集のために呼び出すモデルのID。利用可能な値は qwen-image-3.0-pro と qwen-image-3.0 です。Comfy Router が /v2/models/qwen/\{model} の `{model}` パスセグメントから補完するため、このスキーマの `required` リストには含まれていません。そのため Router の呼び出し元は省略しますが、/proxy/ ルートへの v1 直接呼び出しでは指定する必要があります。 + + + + 画像生成を制御する追加のパラメータ + + + + 出力画像の枚数。範囲は1〜6、デフォルトは1です + + 範囲: `1` から `6` + + + + 画像に表示したくない内容を記述するネガティブプロンプト + + + + インテリジェントなプロンプト書き換えを有効にするかどうか。デフォルトは true です + + + + プロンプトの書き換え方法。direct(デフォルト、テキストから画像への生成と画像から画像への生成でサポート)または agent(テキストから画像への生成のみ) + + 取り得る値: `direct`、`agent` + + + + ランダム性を制御する乱数シード。範囲 [0, 2147483647] + + 範囲: `0` から `2147483647` + + + + 出力画像の解像度。width*height 形式で指定します(例: 1024*1024)。API はピクセル面積 262144(512*512)から 6553600(2560*2560)の範囲で、アスペクト比 1:8 から 8:1 までの値を受け付けます。指定しない場合、モデルがプロンプトに基づいて解像度を自動的に推奨します + + + + ウォーターマークを追加するかどうか。デフォルトは false です + + +Router が `GET /v2/models/qwen/qwen-image-3.0/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するドキュメントと同じです。 + +### 出力 + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + 失敗したリクエストに関する詳細情報(リクエストが成功した場合は返されません) + + + + モデルの生成結果を含みます + + + + 結果オプションのリスト + + + + タスクが停止した理由。タスクが正常に完了した場合の値は stop です + + + + モデルから返されたメッセージ + + + + 生成済み画像の情報を含むメッセージコンテンツ + + + + 生成済み画像の PNG 形式の URL。リンクは24時間有効です + + + + 画像の代わりに返されるテキスト要素。このフィールドのみを持つ要素はアセットを生成していないため、呼び出し元はコンテンツ要素の有無ではなく `image` を基準に完了を判定します + + + + メッセージの役割。assistant で固定です + + + + 一意のリクエスト識別子 + + + + この呼び出しのリソース使用量。成功時のみ返されます + + + + リクエスト内の入力画像の枚数。テキストから画像への生成の場合は 0 を返します + + + + 入力画像の課金ティア。qima_input_1k または qima_input_2k で、出力解像度のピクセル面積によって決まります + + + + 最終的な出力画像の高さ(ピクセル単位) + + + + 実際に返された出力画像の枚数 + + + + 出力画像の課金ティア。qima_output_1k または qima_output_2k で、出力解像度のピクセル面積によって決まります + + + + 最終的な出力画像の幅(ピクセル単位) + + +## 例 + +### 入力 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 出力 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv2/code.mdx b/ja/development/comfy-router/models/recraft/recraftv2/code.mdx new file mode 100644 index 000000000..55156baab --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv2/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V2 を使用する" +description: "Comfy Router 経由で recraft/recraftv2 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V2" +translationSourceHash: 8215b336 +translationFrom: development/comfy-router/models/recraft/recraftv2/code.mdx +translationBlockHashes: + "_intro": 711eec4f + "Quick start": e5c05b86 + "Schema": 7c25b55c + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。router-schemas/recraft/recraftv2.json から `pnpm code-pages:gen` により生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv2` の API Reference です。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `recraft/recraftv2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv2", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv2", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静止したクリーンなスタイルでカメラをまっすぐ見つめます。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB 色の値 + + + + + + + + 好みの色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が出荷する表記(Comfy Router が `recraft/` として扱うセット)は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から除外されているためです。したがって、そこへのポインタは提供されるドキュメント内でぶら下がった参照になります。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。詳細はそのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成済み画像のサイズ(例: "1024x1024") + + + + 生成済み画像に適用するスタイル(例: "digital_illustration") + + + + 生成済み画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供します。このルートではこのペアリングを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、これなしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx で返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv2/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となる同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv3/code.mdx b/ja/development/comfy-router/models/recraft/recraftv3/code.mdx new file mode 100644 index 000000000..3bc50c5a6 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv3/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Recraft V3 を使う" +description: "Comfy Router 経由で recraft/recraftv3 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて。" +sidebarTitle: "Recraft V3" +translationSourceHash: 05db64a5 +translationFrom: development/comfy-router/models/recraft/recraftv3/code.mdx +translationBlockHashes: + "_intro": de70f54d + "Quick start": 0e77fb0e + "Schema": 49f16357 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv3` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `recraft/recraftv3` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv3", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv3", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成済み画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静的でクリーンなスタイルでカメラをまっすぐ見つめます。ダイナミックで風変わりなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB カラー値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供するスペル(Comfy Router が `recraft/` として扱う集合)は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。ここで参照によって名前を示すのではなく列挙しているのは、それらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されるからです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた状態になります。4 つの `recraftv4_styles*` のスペルはさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成済み画像のサイズ(例: "1024x1024") + + + + 生成済み画像に適用するスタイル(例: "digital_illustration") + + + + 生成済み画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id または style 参照のないリクエストを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルートではその組み合わせを強制していません。ボディは変更されずに Recraft へ転送されるため、`recraftv4_styles*` の呼び出しで style_id がない場合はパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv3/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成済み画像情報の配列 + + + + 生成済み画像の一意の識別子 + + + + 生成済み画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx new file mode 100644 index 000000000..7bdf17086 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Recraft V4.1 Pro Vector を Comfy Router で使用する" +description: "Comfy Router 経由で recraft/recraftv4_1_pro_vector を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Pro Vector" +translationSourceHash: 333d4843 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx +translationBlockHashes: + "_intro": e13c9640 + "Quick start": 8fca5324 + "Schema": c1492000 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_pro_vector` の API リファレンスです。Recraft の Comfy Router により提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `recraft/recraftv4_1_pro_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成する画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静止したクリーンなスタイルでカメラをまっすぐ見ます。動的でエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0`~`5` + + + + RGB の色の値 + + + + + + + + 好みの色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が出荷するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照ではなくここに直接書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されており、そこへのポインタは提供されるドキュメント内で未解決になってしまうためです。また、4 つの `recraftv4_styles*` のスペルは `style_id` を必要とします。詳しくはそのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1`~`6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id が指定されている場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のない呼び出しを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルートではこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、`recraftv4_styles*` の呼び出しで style_id がない場合はパートナーに到達し、4xx が返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_1_pro_vector/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するものと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx new file mode 100644 index 000000000..5f5d713ee --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Recraft V4.1 Pro を使用する" +description: "Comfy Router 経由で recraft/recraftv4_1_pro を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Pro" +translationSourceHash: 3de4d0c4 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx +translationBlockHashes: + "_intro": d23b84cb + "Quick start": 9f2d5923 + "Schema": 2f41a4b9 + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4_1_pro.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_pro` の API リファレンス。Recraft から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `recraft/recraftv4_1_pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成画像の制御項目 + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静止したクリーンなスタイルでカメラをまっすぐ見つめます。動的でエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB の色値 + + + + + + + + 好みの色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは列挙型に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が出荷するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供されるスペックから除外されているからです。したがって、そこへのポインタは提供されるドキュメント内で参照先を失うことになります。4 つの `recraftv4_styles*` のスペルはさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを受け付けません。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルートでこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、style_id のない `recraftv4_styles*` の呼び出しはパートナーに到達し、4xx が返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_1_pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx new file mode 100644 index 000000000..f27706ecb --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4.1 Utility Pro Vector を使用する" +description: "Comfy Router 経由で recraft/recraftv4_1_utility_pro_vector を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Utility Pro Vector" +translationSourceHash: aa6c4d7e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx +translationBlockHashes: + "_intro": 1ee48b43 + "Quick start": 644e3b95 + "Schema": ddc74cf2 + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。router-schemas/recraft/recraftv4_1_utility_pro_vector.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_pro_vector` の API リファレンス。Recraft から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、raw HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `recraft/recraftv4_1_utility_pro_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐに見て、静的でクリーンなスタイルになります。動的でエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB カラー値 + + + + + + + + 優先する色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供する表記、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに書き出しているのは、それらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から除外されているためです。したがって、そこへのポインタは提供されるドキュメント内でダングリングになります。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id または style 参照のないものを受け付けません。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルート上でこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、それなしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx で返ってきます。 + + +`GET /v2/models/recraft/recraftv4_1_utility_pro_vector/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx new file mode 100644 index 000000000..98bfa26d4 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4.1 Utility Pro を使う" +description: "Comfy Router 経由で recraft/recraftv4_1_utility_pro を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Utility Pro" +translationSourceHash: 748ad94e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx +translationBlockHashes: + "_intro": abd5502a + "Quick start": 53f9b90e + "Schema": fcf4a5c5 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_pro` の API リファレンス。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `recraft/recraftv4_1_utility_pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静的でクリーンなスタイルでカメラをまっすぐに見ます。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB の色値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が同梱するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに直接書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されているためです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた参照になってしまいます。4 つの `recraftv4_styles*` のスペルはさらに `style_id` を必要とします。このフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、これなしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_1_utility_pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成済み画像情報の配列 + + + + 生成済み画像の一意の識別子 + + + + 生成済み画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx new file mode 100644 index 000000000..572d3d298 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4.1 Utility Vector を使う" +description: "Comfy Router 経由で recraft/recraftv4_1_utility_vector を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Utility Vector" +translationSourceHash: a4f3c412 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx +translationBlockHashes: + "_intro": 996cbb6d + "Quick start": a5357e10 + "Schema": 7877c6fc + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_vector` の API リファレンスです。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、raw HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `recraft/recraftv4_1_utility_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + 生成される画像の制御パラメータ + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見つめ、静的でクリーンなスタイルになります。ダイナミックで奇抜なレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB 色の値 + + + + + + + + 優先する色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル (例: "recraftv3")。このフィールドは enum に制約されていません。呼び出し側が送信した内容がそのままプロキシによって転送されます。Comfy が提供する表記 (Comfy Router が `recraft/` として扱うセット) は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。ここで参照によって名前を示すのではなく列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されており、そこへのポインタは提供されるドキュメント内で宙に浮いてしまうからです。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。該当フィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ (例: "1024x1024") + + + + 生成される画像に適用するスタイル (例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID (例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこの組み合わせを強制するものは何もありません。ボディは変更されずに Recraft へ転送されるため、これなしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx で返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_1_utility_vector/openapi.json` で提供する schema から生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx new file mode 100644 index 000000000..3135a6f0e --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4.1 Utility を使う" +description: "Comfy Router 経由で recraft/recraftv4_1_utility を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Utility" +translationSourceHash: 490ee1f0 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx +translationBlockHashes: + "_intro": 840be098 + "Quick start": 5eee19b5 + "Schema": 1f2be5cd + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4_1_utility.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv4_1_utility` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `recraft/recraftv4_1_utility` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成画像のコントロール + + + + 画像のアーティスティックなトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見つめ、静的でクリーンなスタイルになります。ダイナミックおよびエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` ~ `5` + + + + RGB 色の値 + + + + + + + + 好みの色の配列 + + + + + + + + テキストレイアウトを埋め込みません + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される仕様から刈り込まれているからです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた参照になります。4 つの `recraftv4_styles*` のスペルはさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` ~ `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成画像のサイズ(例: "1024x1024") + + + + 生成画像に適用するスタイル(例: "digital_illustration") + + + + 生成画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id もスタイル参照もない呼び出しを拒否します。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供しています。このルートではこの組み合わせを強制するものは何もありません。ボディは変更されずに Recraft へ転送されるため、style_id のない `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_1_utility/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成画像情報の配列 + + + + 生成画像の一意の識別子 + + + + 生成画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx new file mode 100644 index 000000000..f06f60c80 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4.1 Vector を使用する" +description: "Comfy Router 経由で recraft/recraftv4_1_vector を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1 Vector" +translationSourceHash: 663bb105 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx +translationBlockHashes: + "_intro": 60d9fc16 + "Quick start": aea4706b + "Schema": 9668bdeb + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_vector` の API リファレンス。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `recraft/recraftv4_1_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見て、静的でクリーンなスタイルになります。ダイナミックおよびエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB 色の値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供する表記、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される仕様から除外されているからです。そのため、そこへのポインタは提供されるドキュメント内で参照先を失います。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。このフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id または style 参照なしのリクエストを拒否します。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供します。このルートではこの組み合わせを強制するものはありません。ボディは Recraft にそのまま転送されるため、`recraftv4_styles*` の呼び出しでこれがない場合はパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_1_vector/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-1/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-1/code.mdx new file mode 100644 index 000000000..e708ea282 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-1/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Recraft V4.1 を使う" +description: "Comfy Router 経由で recraft/recraftv4_1 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4.1" +translationSourceHash: 381c3166 +translationFrom: development/comfy-router/models/recraft/recraftv4-1/code.mdx +translationBlockHashes: + "_intro": 35b040e2 + "Quick start": 4cdf273e + "Schema": 939c5675 + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4_1.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1` の API リファレンスです。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**Model ID:** `recraft/recraftv4_1` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + 生成画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見て、静的でクリーンなスタイルになります。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB の色の値 + + + + + + + + 希望する色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し側が送信したものをそのまま転送します。Comfy が提供する表記(Comfy Router が `recraft/` として扱うセット)は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。ここで参照名ではなく列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されているからです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた状態になります。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成画像のサイズ(例: "1024x1024") + + + + 生成画像に適用するスタイル(例: "digital_illustration") + + + + 生成画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合は、style を指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこのペアリングを強制するものは何もありません。ボディは変更されずに Recraft へ転送されるため、style_id なしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_1/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成画像情報の配列 + + + + 生成画像の一意の識別子 + + + + 生成画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-pro/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-pro/code.mdx new file mode 100644 index 000000000..66ed9bdb1 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4 Pro を使用する" +description: "Comfy Router 経由で recraft/recraftv4_pro を呼び出します: エンドポイント、リクエストの形状、および Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4 Pro" +translationSourceHash: bb249fa1 +translationFrom: development/comfy-router/models/recraft/recraftv4-pro/code.mdx +translationBlockHashes: + "_intro": bcf3db7b + "Quick start": 740394ca + "Schema": 1cc0dc86 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_pro` の API リファレンス。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `recraft/recraftv4_pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見て、静的でクリーンなスタイルになります。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB 色の値 + + + + + + + + 優先する色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル (例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供する表記、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照によって示すのではなくここに列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される仕様から刈り込まれているからです。そうでなければ、そのコンポーネントへのポインタは提供されるドキュメント内で宙に浮いた参照になってしまいます。さらに 4 つの `recraftv4_styles*` 表記は `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ (例: "1024x1024") + + + + 生成される画像に適用するスタイル (例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID (例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照なしのこれらを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこの組み合わせを強制するものは何もありません。ボディは変更されずに Recraft へ転送されるため、これなしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx で返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx new file mode 100644 index 000000000..12757612c --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Recraft V4 Styles Pro Vector を使用する" +description: "Comfy Router 経由で recraft/recraftv4_styles_pro_vector を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて。" +sidebarTitle: "Recraft V4 Styles Pro Vector" +translationSourceHash: 40752aaa +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx +translationBlockHashes: + "_intro": 5d5ca072 + "Quick start": 27b0d8b1 + "Schema": b37c67d0 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles_pro_vector` の API リファレンス。Comfy Router が Recraft から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `recraft/recraftv4_styles_pro_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + 生成される画像の制御パラメータ + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見て、静かでクリーンなスタイルになります。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB 色の値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル (例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照ではなくここに列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される仕様から除外されているからです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた状態になります。また、4 つの `recraftv4_styles*` スペルは追加で `style_id` を必要とします。このフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成される画像のサイズ (例: "1024x1024") + + + + 生成される画像に適用するスタイル (例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID (例: "123e4567-e89b-12d3-a456-426614174000")。style_id が指定された場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこのペアリングを強制するものは何もありません。ボディは変更されずに Recraft へ転送されるため、これのない `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx で返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_styles_pro_vector/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx new file mode 100644 index 000000000..cbabfe036 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router で Recraft V4 Styles Pro を使用する" +description: "Comfy Router 経由で recraft/recraftv4_styles_pro を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4 Styles Pro" +translationSourceHash: 1fcaf25c +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx +translationBlockHashes: + "_intro": 62caf367 + "Quick start": ade5d4ae + "Schema": 05ebdd18 + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4_styles_pro.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv4_styles_pro` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP による同じ呼び出しです。 + +**モデル ID:** `recraft/recraftv4_styles_pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成済み画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静的でクリーンなスタイルでカメラをまっすぐ見ます。ダイナミックでエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB カラー値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル (例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供する表記、すなわち Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で配信される spec から除去されているからです。したがって、そこへのポインタは配信されるドキュメント内でぶら下がった参照になります。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を記述するテキストプロンプト + + + + 生成済み画像のサイズ (例: "1024x1024") + + + + 生成済み画像に適用するスタイル (例: "digital_illustration") + + + + 生成済み画像に適用するスタイル ID (例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合は、style を指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行してください。これは同じプロキシが同じ認証情報で提供しています。このルートではこの組み合わせを強制するものはありません。ボディは変更されずに Recraft へ転送されるため、これがない `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_styles_pro/openapi.json` で配信するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に、呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成済み画像情報の配列 + + + + 生成済み画像の一意の識別子 + + + + 生成済み画像にアクセスするための URL + + +## 使用例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx new file mode 100644 index 000000000..6c8415db8 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Recraft V4 Styles Vector を Comfy Router で使用する" +description: "recraft/recraftv4_styles_vector を Comfy Router 経由で呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4 Styles Vector" +translationSourceHash: b134e87f +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx +translationBlockHashes: + "_intro": 15b084fb + "Quick start": 8bf59c8c + "Schema": 2e061fe2 + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4_styles_vector.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv4_styles_vector` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `recraft/recraftv4_styles_vector` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐに見つめ、静的でクリーンなスタイルになります。ダイナミックでエキセントリックなレベルでは、動きと創造性が取り入れられます。 + + 範囲: `0` ~ `5` + + + + RGB の色の値 + + + + + + + + 希望する色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し側が送信したものをそのまま転送します。Comfy が出荷する綴り、つまり Comfy Router が `recraft/` として扱う集合は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。ここで列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から除外されているためです。したがって、それへのポインタは提供されるドキュメント内で未解決になります。4 つの `recraftv4_styles*` の綴りはさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` ~ `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id または style 参照のないものを受け付けません。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、style_id なしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ってきます。 + + +Router が `GET /v2/models/recraft/recraftv4_styles_vector/openapi.json` で提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成済み画像情報の配列 + + + + 生成済み画像の一意の識別子 + + + + 生成済み画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4-styles/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4-styles/code.mdx new file mode 100644 index 000000000..399f88807 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4-styles/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Recraft V4 Styles を使用する" +description: "Comfy Router を通じて recraft/recraftv4_styles を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4 Styles" +translationSourceHash: 6921e08b +translationFrom: development/comfy-router/models/recraft/recraftv4-styles/code.mdx +translationBlockHashes: + "_intro": f35eca87 + "Quick start": b8651bb0 + "Schema": 9b9320da + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv4_styles` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `recraft/recraftv4_styles` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物はカメラをまっすぐ見て、静的でクリーンなスタイルになります。ダイナミックでエキセントリックなレベルでは、動きと創造性が取り入れられます。 + + 範囲: `0` から `5` + + + + RGB の色の値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されていません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供する表記(Comfy Router が `recraft/` として扱うセット)は、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。ここで参照名ではなく列挙しているのは、これらを宣言している RecraftGenerationModel コンポーネントがどこからも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されているからです。したがって、そこへのポインタは提供されるドキュメント内で宙に浮いた状態になります。4 つの `recraftv4_styles*` 表記はさらに `style_id` を必須とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成される画像のサイズ(例: "1024x1024") + + + + 生成される画像に適用するスタイル(例: "digital_illustration") + + + + 生成される画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id または style の参照がないものを拒否します。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供しています。このルートではこの組み合わせを強制するものはありません。ボディは変更されずに Recraft に転送されるため、style_id なしの `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4_styles/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成されたときの Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成された画像情報の配列 + + + + 生成された画像の一意の識別子 + + + + 生成された画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/recraft/recraftv4/code.mdx b/ja/development/comfy-router/models/recraft/recraftv4/code.mdx new file mode 100644 index 000000000..379fc9707 --- /dev/null +++ b/ja/development/comfy-router/models/recraft/recraftv4/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy RouterでRecraft V4を使用する" +description: "Comfy Router経由でrecraft/recraftv4を呼び出します: エンドポイント、リクエストの形状、Routerが返すレスポンスについて説明します。" +sidebarTitle: "Recraft V4" +translationSourceHash: a459e810 +translationFrom: development/comfy-router/models/recraft/recraftv4/code.mdx +translationBlockHashes: + "_intro": fad0b1c2 + "Quick start": abde0945 + "Schema": f8f3705d + "Examples": 5c6fff21 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/recraft/recraftv4.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Comfy Router が Recraft から提供する `recraft/recraftv4` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `recraft/recraftv4` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/recraft/recraftv4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成する画像のコントロール + + + + 画像の芸術的なトーンを定義します。シンプルなレベルでは、人物は静的でクリーンなスタイルでカメラをまっすぐ見ます。ダイナミックおよびエキセントリックなレベルでは、動きと創造性が導入されます。 + + 範囲: `0` から `5` + + + + RGB の色の値 + + + + + + + + 好ましい色の配列 + + + + + + + + テキストレイアウトを埋め込まない + + + + 生成に使用するモデル(例: "recraftv3")。このフィールドは enum に制約されません。プロキシは呼び出し元が送信したものをそのまま転送します。Comfy が提供するスペル、つまり Comfy Router が `recraft/` として扱うセットは、recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector、recraftv4_styles_pro_vector です。これらを参照で示すのではなくここに直接書き出しているのは、これらを宣言している RecraftGenerationModel コンポーネントが何からも `$ref` されておらず、そのため GET /openapi で提供される spec から削除されているからです。そのため、そこへのポインタは提供されるドキュメント内で宙に浮いてしまいます。4 つの `recraftv4_styles*` のスペルはさらに `style_id` を必要とします。そのフィールドを参照してください。 + + + + 生成する画像の数 + + 範囲: `1` から `6` + + + + 生成する画像を説明するテキストプロンプト + + + + 生成済み画像のサイズ(例: "1024x1024") + + + + 生成済み画像に適用するスタイル(例: "digital_illustration") + + + + 生成済み画像に適用するスタイル ID(例: "123e4567-e89b-12d3-a456-426614174000")。style_id を指定する場合、style は指定しないでください。4 つの `recraftv4_styles*` モデルでは必須です。Recraft は style_id またはスタイル参照のないものを拒否します。`POST /proxy/recraft/styles` で発行できます。これは同じプロキシが同じ認証情報で提供しています。このルート上ではこの組み合わせを強制するものは何もありません。ボディはそのまま Recraft に転送されるため、これがない `recraftv4_styles*` 呼び出しはパートナーに到達し、4xx が返ります。 + + +Router が `GET /v2/models/recraft/recraftv4/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。 + +### 出力 + + + 生成が作成された Unix タイムスタンプ + + + + 生成に使用されたクレジット数 + + + + 生成済み画像情報の配列 + + + + 生成済み画像の一意の識別子 + + + + 生成済み画像にアクセスするための URL + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ja/development/comfy-router/models/runway/aleph2/code.mdx b/ja/development/comfy-router/models/runway/aleph2/code.mdx new file mode 100644 index 000000000..25c00e12f --- /dev/null +++ b/ja/development/comfy-router/models/runway/aleph2/code.mdx @@ -0,0 +1,173 @@ +--- +title: "Comfy Router で Aleph 2 を使用する" +description: "Comfy Router 経由で runway/aleph2 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Aleph 2" +translationSourceHash: 583a548e +translationFrom: development/comfy-router/models/runway/aleph2/code.mdx +translationBlockHashes: + "_intro": c0d540d3 + "Quick start": b9ab4ba4 + "Schema": cb584483 + "Examples": 5512235a +--- +{/* GENERATED FILE. Generated from router-schemas/runway/aleph2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`runway/aleph2` の API リファレンス。Runway から Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `runway/aleph2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/runway/aleph2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/aleph2", + { + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/aleph2", { + promptText: "recolor the scene in cool blue tones", + videoUri: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/aleph2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"recolor the scene in cool blue tones\", \"videoUri\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + コンテンツモデレーションシステムの動作に影響する設定。 + + + + `low` に設定すると、コンテンツモデレーションシステムは、識別可能な著名人を含む生成を防ぐ際の厳格さが緩和されます。 + + 指定可能な値: `auto`、`low` + + + + 入力ビデオ内の特定の時点に配置する、時間指定付きのガイダンス画像。最大5つのキーフレーム。 + + + + 生成に使用するモデル。Comfy Router のルート `POST /v2/models/runway/{model}` では、このフィールドはパスから供給されるため送信してはなりません。v1 の `POST /proxy/runway/video_to_video` ルートでは必須であり、RunwayVideoToVideoModelEnum(`aleph2`)に制約されます。 + + + + ビデオ内の特定の時点での編集をガイドするための、最大5つの画像キーフレームのリスト。 + + + + 出力ビデオ内で画像を適用する位置。 + + + + エンコードされた画像を含む HTTPS URL、Runway URI、またはデータ URI。 + + + + 出力に何を表示するかを記述する、1000文字以下の空でない文字列。 + + + + 生成用のランダムシード。 + + 範囲: `0` ~ `4294967295` + + フォーマット: `int64` + + + + 編集する入力ビデオ(HTTPS URL、Runway アップロード URI、またはデータ URI)。30秒以下である必要があります。 + + +Router が `GET /v2/models/runway/aleph2/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + タスク作成タイムスタンプ + + フォーマット: `date-time` + + + + タスク ID + + + + 完了した生成のアセット URL。`runway/gen4_turbo` および `runway/aleph2` では、各要素は VIDEO URL です。タスクが正常に終了すると存在します。このリストが結果そのものです。 + + + + タスクの進捗を表す 0 から 1 の間の浮動小数点値。ステータスが RUNNING の場合にのみ利用可能です。 + + 範囲: `0` ~ `1` + + フォーマット: `float` + + + + Runway タスクで指定可能なステータス。 + + 指定可能な値: `SUCCEEDED`、`RUNNING`、`FAILED`、`PENDING`、`CANCELLED`、`THROTTLED` + + +## 例 + +### 入力 + +```json +{ + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 出力 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + diff --git a/ja/development/comfy-router/models/runway/gen4-image/code.mdx b/ja/development/comfy-router/models/runway/gen4-image/code.mdx new file mode 100644 index 000000000..dc5343827 --- /dev/null +++ b/ja/development/comfy-router/models/runway/gen4-image/code.mdx @@ -0,0 +1,148 @@ +--- +title: "Comfy Router で Gen 4 Image を使用する" +description: "Comfy Router 経由で runway/gen4_image を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gen 4 Image" +translationSourceHash: d0d00b89 +translationFrom: development/comfy-router/models/runway/gen4-image/code.mdx +translationBlockHashes: + "_intro": cb3c6faa + "Quick start": eb67adf8 + "Schema": d889abf3 + "Examples": 291dbf54 +--- +{/* GENERATED FILE. Generated from router-schemas/runway/gen4_image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`runway/gen4_image` の API リファレンスです。Comfy Router が Runway から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `runway/gen4_image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/runway/gen4_image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_image", + { + "promptText": "a red circle", + "ratio": "1024:1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_image", { + promptText: "a red circle", + ratio: "1024:1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"a red circle\", \"ratio\": \"1024:1024\"}" +``` + + +## スキーマ + +### 入力 + + + 生成に使用するモデル。Comfy Router のルート `POST /v2/models/runway/{model}` では、このフィールドはパスから供給されるため送信してはいけません。v1 の `POST /proxy/runway/text_to_image` ルートでは必須で、`gen4_image` に制約されています。 + + + + 画像生成用のテキストプロンプト + + + + 指定可能な値: `1920:1080`、`1080:1920`、`1024:1024`、`1360:768`、`1080:1080`、`1168:880`、`1440:1080`、`1080:1440`、`1808:768`、`2112:912` + + + + 生成をガイドする参照画像の配列 + + + + エンコードされた画像を含む HTTPS URL またはデータ URI + + +Router が `GET /v2/models/runway/gen4_image/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + タスク作成タイムスタンプ + + フォーマット: `date-time` + + + + タスク ID + + + + 完了した生成のアセット URL。`runway/gen4_image` の場合、各要素は画像 URL です。タスクが正常に終了すると含まれます。このリストが結果そのものです。 + + + + タスクの進捗を表す 0 から 1 の間の浮動小数点値。status が RUNNING の場合にのみ利用可能です。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + Runway タスクで指定可能なステータス。 + + 指定可能な値: `SUCCEEDED`、`RUNNING`、`FAILED`、`PENDING`、`CANCELLED`、`THROTTLED` + + +## 例 + +### 入力 + +```json +{ + "promptText": "a red circle", + "ratio": "1024:1024" +} +``` + +### 出力 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_image/generated.png" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/ja/development/comfy-router/models/runway/gen4-turbo/code.mdx b/ja/development/comfy-router/models/runway/gen4-turbo/code.mdx new file mode 100644 index 000000000..6702a6e1d --- /dev/null +++ b/ja/development/comfy-router/models/runway/gen4-turbo/code.mdx @@ -0,0 +1,162 @@ +--- +title: "Comfy Router で Gen 4 Turbo を使用する" +description: "Comfy Router 経由で runway/gen4_turbo を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Gen 4 Turbo" +translationSourceHash: 5c15b939 +translationFrom: development/comfy-router/models/runway/gen4-turbo/code.mdx +translationBlockHashes: + "_intro": 2edfaa1c + "Quick start": fcdc7564 + "Schema": 5def72fe + "Examples": c4244e75 +--- +{/* GENERATED FILE. Generated from router-schemas/runway/gen4_turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`runway/gen4_turbo` の API リファレンス。Comfy Router が Runway から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `runway/gen4_turbo` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/runway/gen4_turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_turbo", + { + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_turbo", { + duration: 5, + promptImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + ratio: "1280:720", + seed: 42, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"promptImage\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"ratio\": \"1280:720\", \"seed\": 42}" +``` + + +## スキーマ + +### 入力 + + + 指定可能な値: `5`、`10` + + + + 生成に使用するモデル。Comfy Router のルート `POST /v2/models/runway/{model}` では、このフィールドはパスから供給されるため送信してはいけません(MUST NOT)。v1 の `POST /proxy/runway/image_to_video` ルートでは必須であり、RunwayModelEnum(`gen4_turbo`)に制限されます。 + + + + ビデオ生成に使用する画像。単一の URI、または位置情報を持つ画像オブジェクトの配列を指定できます。 + + + + 生成用のテキストプロンプト + + + + 指定可能な値: `1280:720`、`720:1280`、`1104:832`、`832:1104`、`960:960`、`1584:672`、`1280:768`、`768:1280` + + + + 生成用のランダムシード + + 範囲: `0` から `4294967295` + + フォーマット: `int64` + + +Router が `GET /v2/models/runway/gen4_turbo/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じです。 + +### 出力 + + + タスク作成のタイムスタンプ + + フォーマット: `date-time` + + + + タスク ID + + + + 完了した生成物のアセット URL。`runway/gen4_turbo` と `runway/aleph2` では、各要素は VIDEO URL です。タスクが正常に終了すると存在し、このリスト自体が結果です。 + + + + タスクの進捗を表す 0 から 1 の間の浮動小数点値。status が RUNNING の場合にのみ利用可能です。 + + 範囲: `0` から `1` + + フォーマット: `float` + + + + Runway タスクで指定可能なステータス。 + + 指定可能な値: `SUCCEEDED`、`RUNNING`、`FAILED`、`PENDING`、`CANCELLED`、`THROTTLED` + + +## 例 + +### 入力 + +```json +{ + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42 +} +``` + +### 出力 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/ja/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx b/ja/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx new file mode 100644 index 000000000..102f09b5f --- /dev/null +++ b/ja/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx @@ -0,0 +1,170 @@ +--- +title: "Comfy Router で Hunyuan 3D Part を使用する" +description: "Comfy Router 経由で tencent/hunyuan-3d-part を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Hunyuan 3D Part" +translationSourceHash: 48dc2ff1 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx +translationBlockHashes: + "_intro": 55a0b224 + "Quick start": 2774fcbb + "Schema": 24e6a64b + "Examples": ee4faeb5 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/tencent/hunyuan-3d-part.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-part` の API リファレンス。Tencent のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `tencent/hunyuan-3d-part` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-part` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-part", + { + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-part", { + File: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-part \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}}" +``` + + +## スキーマ + +### 入力 + + + コンポーネント生成用の3Dファイル入力 + + + + 3Dファイル形式のタイプ + + 指定可能な値: `FBX` + + + + コンポーネントに分割する3DファイルのURL + + 形式: `uri` + + +`GET /v2/models/tencent/hunyuan-3d-part/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + Tencent のエラーコード。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent のエラーメッセージ。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent 自身のリクエスト識別子で、Tencent でのトラブルシューティングに使用します。ジョブIDでもアセットでもありません。 + + + + 完了したジョブの生成済み3Dファイル。Router が返すドキュメントでは存在し、空ではありません。少なくとも1つのエントリが取得可能な `Url` を持ちます。リンクは Tencent 自身のもので、24時間有効と記載されています。 + + + + プレビュー画像のURL + + 形式: `uri` + + + + 3Dファイル形式 + + 指定可能な値: `GLB`, `OBJ` + + + + ファイルURL(24時間有効) + + 形式: `uri` + + + + 指定可能な値: `DONE` + + +## 例 + +### 入力 + +```json +{ + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + } +} +``` + +### 出力 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-part/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-part/parts.glb" + } + ], + "Status": "DONE" + } +} +``` + + diff --git a/ja/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx b/ja/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx new file mode 100644 index 000000000..f22c073bb --- /dev/null +++ b/ja/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx @@ -0,0 +1,182 @@ +--- +title: "Comfy Router で Hunyuan 3D Smart Topology を使用する" +description: "Comfy Router 経由で tencent/hunyuan-3d-smart-topology を呼び出します: エンドポイント、リクエストの形式、Router が返すレスポンスについて説明します。" +sidebarTitle: "Hunyuan 3D Smart Topology" +translationSourceHash: f777e523 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx +translationBlockHashes: + "_intro": d7aa51d0 + "Quick start": 8de9c627 + "Schema": 31015a4b + "Examples": 6f3af127 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-smart-topology.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-smart-topology` の API リファレンスです。Tencent のモデルで、Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `tencent/hunyuan-3d-smart-topology` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-smart-topology", + { + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-smart-topology", { + File3D: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## Schema + +### 入力 + + + ポリゴン削減レベル。 + + 指定可能な値: `high`、`medium`、`low` + + + + スマートトポロジー用の3Dファイル入力 + + + + 3Dファイル形式のタイプ + + 指定可能な値: `OBJ`、`GLB` + + + + リトポロジーする3DファイルのURL + + 形式: `uri` + + + + 出力メッシュのポリゴンタイプ。デフォルトは triangle。 + + 指定可能な値: `triangle`、`quadrilateral` + + +Router が `GET /v2/models/tencent/hunyuan-3d-smart-topology/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + Tencent のエラーコード。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent のエラーメッセージ。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent 自身のリクエスト識別子で、Tencent とのトラブルシューティングに使用します。ジョブID でもアセットでもありません。 + + + + 完了したジョブで生成された3Dファイル。Router が返すドキュメントでは存在し、空ではありません。少なくとも1つのエントリに取得可能な `Url` が含まれます。リンクは Tencent 自身のもので、24時間有効と記載されています。 + + + + 画像プレビューURL + + 形式: `uri` + + + + 3Dファイル形式 + + 指定可能な値: `GLB`、`OBJ` + + + + ファイルURL(24時間有効) + + 形式: `uri` + + + + 指定可能な値: `DONE` + + +## 例 + +### 入力 + +```json +{ + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 出力 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-smart-topology/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-smart-topology/retopologised.glb" + } + ], + "Status": "DONE" + } +} +``` + + diff --git a/ja/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx b/ja/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx new file mode 100644 index 000000000..4d4bf143c --- /dev/null +++ b/ja/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx @@ -0,0 +1,196 @@ +--- +title: "Comfy Router で Hunyuan 3D Texture Edit を使う" +description: "Comfy Router 経由で tencent/hunyuan-3d-texture-edit を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Hunyuan 3D Texture Edit" +translationSourceHash: 7c8d6684 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx +translationBlockHashes: + "_intro": d89c092e + "Quick start": 0d5af5f1 + "Schema": e475b723 + "Examples": d9b41615 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-texture-edit.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-texture-edit` のAPIリファレンスです。Comfy RouterがTencentから提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、同じ呼び出しを raw HTTP 経由で行うものです。 + +**Model ID:** `tencent/hunyuan-3d-texture-edit` + +**Endpoint:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-texture-edit", + { + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + "Prompt": "a kitten", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-texture-edit", { + File3D: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + Prompt: "a kitten", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}, \"Prompt\": \"a kitten\"}" +``` + + +## スキーマ + +### 入力 + + + PBR テクスチャパラメータを有効にするかどうか。Prompt を使用する場合にのみサポートされます。 + + + + テクスチャ編集を行う 3D ファイルの入力 + + + + 3D ファイルのフォーマット種別 + + 指定可能な値: `FBX` + + + + テクスチャを編集する 3D ファイルの URL + + 形式: `uri` + + + + 参照画像。Base64 データまたは画像 URL + + + + Base64 エンコードされた画像。1 辺あたりの解像度は 128~4096 で、変換後の Base64 は 10MB 未満である必要があります。フォーマットは jpg、jpeg、png です。 + + + + 画像 URL。Base64 と Url の両方が指定された場合、Url が優先されます。 + + 形式: `uri` + + + + テクスチャ編集の内容を記述します。Image または Prompt のいずれかが必須で、両方を同時に指定することはできません。 + + +スキーマから生成されたもので、Router は `GET /v2/models/tencent/hunyuan-3d-texture-edit/openapi.json` で提供しています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じです。 + +### 出力 + + + + + + + Tencent のエラーコード。エラーがない場合は空文字列としてドキュメントに記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent のエラーメッセージ。エラーがない場合は空文字列としてドキュメントに記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent 独自のリクエスト識別子で、Tencent でのトラブルシューティングに使用します。ジョブIDでもアセットでもありません。 + + + + 完了したジョブで生成された 3D ファイル。Router が返すドキュメントでは存在し、空ではありません。少なくとも1つのエントリに取得可能な `Url` が含まれます。リンクは Tencent 独自のもので、24 時間有効と記載されています。 + + + + 画像プレビューの URL + + 形式: `uri` + + + + 3D ファイルのフォーマット + + 指定可能な値: `GLB`、`OBJ` + + + + ファイル URL(24 時間有効) + + 形式: `uri` + + + + 指定可能な値: `DONE` + + +## 例 + +### 入力 + +```json +{ + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + }, + "Prompt": "a kitten" +} +``` + +### 出力 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-texture-edit/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-texture-edit/retextured.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx b/ja/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx new file mode 100644 index 000000000..690ad59ce --- /dev/null +++ b/ja/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router で Hunyuan 3D Uv を使用する" +description: "Comfy Router 経由で tencent/hunyuan-3d-uv を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Hunyuan 3D Uv" +translationSourceHash: 41573987 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx +translationBlockHashes: + "_intro": cc16c86e + "Quick start": d368c7e6 + "Schema": 925d33c0 + "Examples": dcaa8745 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-uv.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-uv` の API リファレンスです。Tencent のモデルを Comfy Router が提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `tencent/hunyuan-3d-uv` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-uv", + { + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-uv", { + File: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## スキーマ + +### 入力 + + + UV展開用の3Dファイル入力 + + + + 3Dファイル形式のタイプ + + 指定可能な値: `FBX`, `OBJ`, `GLB` + + + + UV展開が必要な3DファイルのURL + + 形式: `uri` + + +このスキーマは、Router が `GET /v2/models/tencent/hunyuan-3d-uv/openapi.json` で提供するスキーマから生成されたものです。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するドキュメントと同じものです。 + +### 出力 + + + + + + + Tencent のエラーコード。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent のエラーメッセージ。エラーがない場合は空文字列と記載されています。`Status` が存在する場合、Router はこれを読み取りません。 + + + + Tencent 自身のリクエスト識別子で、Tencent でのトラブルシューティングに使用します。ジョブIDでもアセットでもありません。 + + + + 完了したジョブで生成済みの3Dファイル。Router が返すドキュメントに含まれ、空にはなりません。少なくとも1つのエントリに取得可能な `Url` が含まれます。リンクは Tencent 自身のもので、24時間有効と記載されています。 + + + + プレビュー画像のURL + + 形式: `uri` + + + + 3Dファイル形式 + + 指定可能な値: `GLB`, `OBJ` + + + + ファイルURL(24時間有効) + + 形式: `uri` + + + + 指定可能な値: `DONE` + + +## 例 + +### 入力 + +```json +{ + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 出力 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-uv/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-uv/unwrapped.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx new file mode 100644 index 000000000..11b73b640 --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx @@ -0,0 +1,240 @@ +--- +title: "Comfy Router で Veo 2.0 Generate 001 を使用する" +description: "Comfy Router 経由で veo/veo-2.0-generate-001 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Veo 2.0 Generate 001" +translationSourceHash: 7d6a780f +translationFrom: development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 0db7d712 + "Quick start": f29101c0 + "Schema": fb4a9a14 + "Examples": cfcc0f09 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/veo/veo-2.0-generate-001.json から生成。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`veo/veo-2.0-generate-001` の API リファレンス。Veo から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `veo/veo-2.0-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-2.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-2.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-2.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 6, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-2.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":6,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + ビデオ生成をガイドするためのオプションの画像 + + + + 形式: `byte` + + + + + + + + + + + + ビデオのテキストによる説明 + + + + + + + + + + + + + + + + + + + + + + + + 生成されるビデオに人物を含めるかを制御します。`dont_allow`、`allow_adult`、`allowAll` は Vertex AI 独自の表記であり、同じフィールドに対して VeoGenVidRequest が公開している値です。`ALLOW` と `BLOCK` は、このコンポーネントが Router 製になる前にこのコンポーネントから生成されたクライアントとの互換性のために保持されています。詳細は Veo2GenVidRequest の冒頭の注記を参照してください。 + + 指定可能な値: `ALLOW`、`BLOCK`、`dont_allow`、`allow_adult`、`allowAll` + + + + + + + + 形式: `uint32` + + + + ビデオをアップロードするためのオプションの Cloud Storage URI + + +Router が `GET /v2/models/veo/veo-2.0-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + オペレーションが完了したかどうか + + + + オペレーションが失敗した場合に存在するエラーの詳細 + + + + gRPC エラーコード + + + + エラーメッセージ + + + + オペレーションのリソース名 + + + + done が true の場合に存在する予測レスポンス + + + + + + + + 責任ある AI ポリシーによってフィルタリングされたビデオの数 + + + + ビデオが責任ある AI ポリシーによってフィルタリングされた理由 + + + + + + + + Base64 エンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ (video/mp4) + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/ja/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..f70d01453 --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router で Veo 3.0 Fast Generate 001 を使用する" +description: "Comfy Router 経由で veo/veo-3.0-fast-generate-001 を呼び出します: endpoint、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Veo 3.0 Fast Generate 001" +translationSourceHash: a31a905f +translationFrom: development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": a97006f3 + "Quick start": 0698269f + "Schema": 9ed9aea3 + "Examples": 88e27039 +--- +{/* 生成済みファイル。router-schemas/veo/veo-3.0-fast-generate-001.json から `pnpm code-pages:gen` によって生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-fast-generate-001` の API リファレンス。Veo から Comfy Router 経由で提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `veo/veo-3.0-fast-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + カメラモーションの種類。画像を指定する必要があります。 + + 指定可能な値: `fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + ビデオ生成をガイドするためのオプションの最初のフレーム画像 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + オプションの最後のフレーム画像。image と併用して、最初と最後のフレーム間のビデオを生成します。Veo 3.0+ モデルでサポートされています。 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + ビデオ編集用のオプションのマスク。入力ビデオに適用されます。 + + + + Base64 でエンコードされたマスクのバイトデータ + + 形式: `byte` + + + + マスクファイルの Cloud Storage URI + + + + マスクの適用方法 + + 指定可能な値: `insert`、`remove`、`remove_static`、`outpaint` + + + + マスクの MIME タイプ(image/png、image/jpeg、image/webp、またはビデオ形式) + + + + 生成するビデオのテキスト説明 + + + + ビデオ生成をガイドするためのオプションの参照画像。最大 3 つのアセット画像または 1 つのスタイル画像をサポートします。Veo 3.1 モデル(プレビュー)でサポートされています。 + + + + + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + 参照画像のオプションの識別子 + + + + 参照画像のタイプ + + 指定可能な値: `asset`、`style` + + + + ビデオ拡張または編集用のオプションの入力ビデオ。image および referenceImages とは併用できません。 + + + + Base64 でエンコードされたビデオのバイトデータ + + 形式: `byte` + + + + 入力ビデオの Cloud Storage URI + + + + ビデオの MIME タイプ + + 指定可能な値: `video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 生成されるビデオのアスペクト比。デフォルト: 16:9 + + 指定可能な値: `16:9`、`9:16` + + + + ビデオの圧縮品質。デフォルト: optimized + + 指定可能な値: `optimized`、`lossless` + + + + 生成されるビデオの目標再生時間(秒)。Veo 2: 5~8。Veo 3/3.1: 4、6、または 8。デフォルト: 8 + + + + より高品質な結果を得るためにプロンプトを自動的に改善します。デフォルトは true です。 + + + + 生成されるビデオのフレームレート(1 秒あたりのフレーム数) + + + + ビデオと一緒にオーディオを生成するかどうか。デフォルトは true です。Veo 3.0+ モデルでサポートされています。 + + + + 生成されるビデオで避けるべき内容を記述するテキスト + + + + 生成されるビデオ内の人物を制御します。デフォルト: allow_adult + + 指定可能な値: `dont_allow`、`allow_adult`、`allowAll` + + + + 進捗更新用の Cloud Pub/Sub トピック(projects/\{project}/topics/\{topic}) + + + + 入力画像のリサイズ方法。デフォルト: pad + + 指定可能な値: `pad`、`crop` + + + + 出力ビデオの解像度。Veo 3.0+ モデルでサポートされています。デフォルト: 720p + + 指定可能な値: `720p`、`1080p`、`4k` + + + + 生成するビデオの数。指定しない場合は 1 本のビデオが生成されます。 + + 範囲: `1` ~ `4` + + + + 決定的な出力のためのランダムシード。sampleCount > 1 の場合はビデオごとに異なるシードが使用されます。 + + 形式: `uint32` + + + + 生成済みビデオを保存するための Cloud Storage URI(gs://) + + + + ビデオ生成リクエストの操作タイプ + + 指定可能な値: `textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +Router が `GET /v2/models/veo/veo-3.0-fast-generate-001/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じです。### 出力 + + + 操作が完了したかどうか + + + + エラーの詳細。操作が失敗した場合に存在します + + + + gRPC エラーコード + + + + エラーメッセージ + + + + 操作リソース名 + + + + 予測レスポンス。done が true の場合に存在します + + + + + + + + 責任ある AI ポリシーによってフィルタリングされたビデオの数 + + + + ビデオが責任ある AI ポリシーによってフィルタリングされた理由 + + + + + + + + Base64 でエンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ(video/mp4) + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ja/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx new file mode 100644 index 000000000..45ec3c88d --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router で Veo 3.0 Generate 001 を使用する" +description: "Comfy Router 経由で veo/veo-3.0-generate-001 を呼び出します。エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Veo 3.0 Generate 001" +translationSourceHash: 56aa1769 +translationFrom: development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": c87da726 + "Quick start": 69eae087 + "Schema": e9acd9e6 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-generate-001` の API リファレンスです。Comfy Router が Veo から提供しています。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデルID:** `veo/veo-3.0-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + カメラの動きの種類。画像を指定する必要があります。 + + 指定可能な値: `fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + ビデオ生成をガイドするための任意の最初のフレーム画像 + + + + Base64 でエンコードされた画像データ + + フォーマット: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + 任意の最後のフレーム画像。image と併用して、最初と最後のフレーム間のビデオを生成します。Veo 3.0 以降のモデルでサポートされています。 + + + + Base64 でエンコードされた画像データ + + フォーマット: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + ビデオ編集用の任意のマスク。入力ビデオに適用されます。 + + + + Base64 でエンコードされたマスクのバイトデータ + + フォーマット: `byte` + + + + マスクファイルの Cloud Storage URI + + + + マスクの適用方法 + + 指定可能な値: `insert`、`remove`、`remove_static`、`outpaint` + + + + マスクの MIME タイプ (image/png、image/jpeg、image/webp、またはビデオ形式) + + + + 生成するビデオのテキスト記述 + + + + ビデオ生成をガイドするための任意の参照画像。最大 3 つのアセット画像、または 1 つのスタイル画像をサポートします。Veo 3.1 モデル (プレビュー) でサポートされています。 + + + + + + + + Base64 でエンコードされた画像データ + + フォーマット: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + 参照画像の任意の識別子 + + + + 参照画像のタイプ + + 指定可能な値: `asset`、`style` + + + + ビデオの拡張または編集用の任意の入力ビデオ。image および referenceImages とは併用できません。 + + + + Base64 でエンコードされたビデオのバイトデータ + + フォーマット: `byte` + + + + 入力ビデオの Cloud Storage URI + + + + ビデオの MIME タイプ + + 指定可能な値: `video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 生成されるビデオのアスペクト比。デフォルト: 16:9 + + 指定可能な値: `16:9`、`9:16` + + + + ビデオの圧縮品質。デフォルト: optimized + + 指定可能な値: `optimized`、`lossless` + + + + 生成されるビデオの目標再生時間 (秒)。Veo 2: 5~8。Veo 3/3.1: 4、6、または 8。デフォルト: 8 + + + + より高品質にするためにプロンプトを自動的に改善します。デフォルトは true です。 + + + + 生成されるビデオのフレームレート (フレーム/秒) + + + + ビデオと一緒にオーディオを生成するかどうか。デフォルトは true です。Veo 3.0 以降のモデルでサポートされています。 + + + + 生成されるビデオで避けるべき内容を記述したテキスト + + + + 生成されるビデオ内の人物を制御します。デフォルト: allow_adult + + 指定可能な値: `dont_allow`、`allow_adult`、`allowAll` + + + + 進捗更新用の Cloud Pub/Sub トピック (projects/\{project}/topics/\{topic}) + + + + 入力画像のリサイズ方法。デフォルト: pad + + 指定可能な値: `pad`、`crop` + + + + 出力ビデオの解像度。Veo 3.0 以降のモデルでサポートされています。デフォルト: 720p + + 指定可能な値: `720p`、`1080p`、`4k` + + + +生成するビデオの数。指定しない場合は、1 つのビデオが生成されます。 + + 範囲: `1` から `4` + + + + 決定論的な出力のためのランダムシード。sampleCount > 1 の場合は、ビデオごとに異なるシードが使用されます。 + + 形式: `uint32` + + + + 生成済みビデオを保存するための Cloud Storage URI (gs://) + + + + ビデオ生成リクエストの操作タイプ + + 指定可能な値: `textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +Router が `GET /v2/models/veo/veo-3.0-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + 操作が完了したかどうか + + + + エラーの詳細。操作が失敗した場合に含まれます + + + + gRPC エラーコード + + + + エラーメッセージ + + + + 操作リソース名 + + + + 予測レスポンス。done が true の場合に含まれます + + + + + + + + 責任ある AI ポリシーによりフィルタリングされたビデオの数 + + + + 責任ある AI ポリシーによりビデオがフィルタリングされた理由 + + + + + + + + Base64 でエンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ(video/mp4) + + +## 例 {#examples} + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ja/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx new file mode 100644 index 000000000..420dc428b --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router で Veo 3.1 Fast Generate 001 を使う" +description: "Comfy Router 経由で veo/veo-3.1-fast-generate-001 を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Veo 3.1 Fast Generate 001" +translationSourceHash: 57aa0fe0 +translationFrom: development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 25f9d753 + "Quick start": 690fb658 + "Schema": 7a21ed84 + "Examples": 88e27039 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/veo/veo-3.1-fast-generate-001.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.1-fast-generate-001` の API リファレンス。Comfy Router が Veo から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL スニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `veo/veo-3.1-fast-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + カメラのモーションタイプ。画像を指定する必要があります。 + + 指定可能な値: `fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + ビデオ生成をガイドするためのオプションの先頭フレーム画像 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + オプションの最終フレーム画像。image と併用して、先頭フレームと最終フレームの間のビデオを生成します。Veo 3.0 以降のモデルでサポートされています。 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + ビデオ編集用のオプションのマスク。入力ビデオに適用されます。 + + + + Base64 でエンコードされたマスクのバイト列 + + 形式: `byte` + + + + マスクファイルの Cloud Storage URI + + + + マスクの適用方法 + + 指定可能な値: `insert`、`remove`、`remove_static`、`outpaint` + + + + マスクの MIME タイプ(image/png、image/jpeg、image/webp、またはビデオ形式) + + + + 生成するビデオのテキスト記述 + + + + ビデオ生成をガイドするためのオプションの参照画像。最大 3 枚のアセット画像または 1 枚のスタイル画像をサポートします。Veo 3.1 モデル(プレビュー)でサポートされています。 + + + + + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ(image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + 参照画像のオプションの識別子 + + + + 参照画像のタイプ + + 指定可能な値: `asset`、`style` + + + + ビデオ拡張または編集用のオプションの入力ビデオ。image および referenceImages とは併用できません。 + + + + Base64 でエンコードされたビデオのバイト列 + + 形式: `byte` + + + + 入力ビデオの Cloud Storage URI + + + + ビデオの MIME タイプ + + 指定可能な値: `video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 生成されるビデオのアスペクト比。デフォルト: 16:9 + + 指定可能な値: `16:9`、`9:16` + + + + ビデオの圧縮品質。デフォルト: optimized + + 指定可能な値: `optimized`、`lossless` + + + + 生成されるビデオの目標再生時間(秒)。Veo 2: 5~8。Veo 3/3.1: 4、6、または 8。デフォルト: 8 + + + + 高品質化のためにプロンプトを自動的に改善します。デフォルトは true です。 + + + + 生成されるビデオのフレームレート(1 秒あたりのフレーム数) + + + + ビデオとともにオーディオを生成するかどうか。デフォルトは true です。Veo 3.0 以降のモデルでサポートされています。 + + + + 生成されるビデオで避けるべき内容を記述したテキスト + + + + 生成されるビデオ内の人物を制御します。デフォルト: allow_adult + + 指定可能な値: `dont_allow`、`allow_adult`、`allowAll` + + + + 進捗更新用の Cloud Pub/Sub トピック(projects/\{project}/topics/\{topic}) + + + + 入力画像のリサイズ方法。デフォルト: pad + + 指定可能な値: `pad`、`crop` + + + + 出力ビデオの解像度。Veo 3.0 以降のモデルでサポートされています。デフォルト: 720p + + 指定可能な値: `720p`、`1080p`、`4k` + + + + 生成するビデオの数。指定しない場合は、1本のビデオが生成されます。 + + 範囲: `1` から `4` + + + + 決定論的な出力のためのランダムシード。sampleCount > 1 の場合は、ビデオごとに異なるシードが使用されます。 + + 形式: `uint32` + + + + 生成されたビデオを保存するための Cloud Storage URI (gs://) + + + + ビデオ生成リクエストの操作タイプ + + 指定可能な値: `textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +Router が `GET /v2/models/veo/veo-3.1-fast-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するのと同じドキュメントです。### 出力 + + + オペレーションが完了したかどうか + + + + エラーの詳細。オペレーションが失敗した場合に存在します + + + + gRPC エラーコード + + + + エラーメッセージ + + + + オペレーションのリソース名 + + + + 予測レスポンス。done が true の場合に存在します + + + + + + + + 責任ある AI ポリシーによってフィルタリングされたビデオの数 + + + + ビデオが責任ある AI ポリシーによってフィルタリングされた理由 + + + + + + + + Base64 でエンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ(video/mp4) + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ja/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx new file mode 100644 index 000000000..9472b182b --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx @@ -0,0 +1,391 @@ +--- +title: "Comfy Router で Veo 3.1 Generate 001 を使う" +description: "Comfy Router 経由で veo/veo-3.1-generate-001 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Veo 3.1 Generate 001" +translationSourceHash: 82b6c3ea +translationFrom: development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx +translationBlockHashes: + "_intro": 0925e6d2 + "Quick start": 14060114 + "Schema": bc219941 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.1-generate-001` の API リファレンス。Veo から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `veo/veo-3.1-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + カメラのモーションタイプ。画像の指定が必要です。 + + 指定可能な値: `fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + ビデオ生成をガイドするためのオプションの先頭フレーム画像 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + オプションの末尾フレーム画像。image と併用して先頭フレームと末尾フレームの間のビデオを生成します。Veo 3.0 以降のモデルでサポートされています。 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + ビデオ編集用のオプションのマスク。入力ビデオに適用されます。 + + + + Base64 でエンコードされたマスクのバイト列 + + 形式: `byte` + + + + マスクファイルの Cloud Storage URI + + + + マスクの適用方法 + + 指定可能な値: `insert`、`remove`、`remove_static`、`outpaint` + + + + マスクの MIME タイプ (image/png、image/jpeg、image/webp、またはビデオ形式) + + + + 生成するビデオのテキストによる説明 + + + + ビデオ生成をガイドするためのオプションの参照画像。最大 3 枚のアセット画像または 1 枚のスタイル画像をサポートします。Veo 3.1 モデル (プレビュー) でサポートされています。 + + + + + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 指定可能な値: `image/jpeg`、`image/png` + + + + 参照画像の任意の識別子 + + + + 参照画像のタイプ + + 指定可能な値: `asset`、`style` + + + + ビデオの拡張または編集用のオプションの入力ビデオ。image および referenceImages とは併用できません。 + + + + Base64 でエンコードされたビデオのバイト列 + + 形式: `byte` + + + + 入力ビデオの Cloud Storage URI + + + + ビデオの MIME タイプ + + 指定可能な値: `video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 生成されるビデオのアスペクト比。デフォルト: 16:9 + + 指定可能な値: `16:9`、`9:16` + + + + ビデオの圧縮品質。デフォルト: optimized + + 指定可能な値: `optimized`、`lossless` + + + + 生成されるビデオの目標再生時間 (秒)。Veo 2: 5~8。Veo 3/3.1: 4、6、または 8。デフォルト: 8 + + + + 高品質化のためにプロンプトを自動的に改善します。デフォルトは true です。 + + + + 生成されるビデオのフレームレート (1 秒あたりのフレーム数) + + + + ビデオとともにオーディオを生成するかどうか。デフォルトは true です。Veo 3.0 以降のモデルでサポートされています。 + + + + 生成されるビデオで避けるべき内容を記述したテキスト + + + + 生成されるビデオ内の人物を制御します。デフォルト: allow_adult + + 指定可能な値: `dont_allow`、`allow_adult`、`allowAll` + + + + 進捗更新用の Cloud Pub/Sub トピック (projects/\{project}/topics/\{topic}) + + + + 入力画像のリサイズ方法。デフォルト: pad + + 指定可能な値: `pad`、`crop` + + + + 出力ビデオの解像度。Veo 3.0 以降のモデルでサポートされています。デフォルト: 720p + + 指定可能な値: `720p`、`1080p`、`4k` + + + + 生成するビデオの本数。指定しない場合は 1 本のビデオが生成されます。 + + 範囲: `1` から `4` + + + + 決定論的な出力のためのランダムシード。sampleCount > 1 の場合、ビデオごとに異なるシードが使用されます。 + + 形式: `uint32` + + + + 生成されたビデオを保存するための Cloud Storage URI (gs://) + + + + ビデオ生成リクエストの操作タイプ + + 指定可能な値: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Router が `GET /v2/models/veo/veo-3.1-generate-001/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じです。### 出力 + + + オペレーションが完了したかどうか + + + + エラーの詳細。オペレーションが失敗した場合に含まれます + + + + gRPC エラーコード + + + + エラーメッセージ + + + + オペレーションのリソース名 + + + + 予測レスポンス。done が true の場合に含まれます + + + + + + + + 責任ある AI ポリシーによってフィルタリングされたビデオの数 + + + + 責任ある AI ポリシーによってビデオがフィルタリングされた理由 + + + + + + + + Base64 エンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ (video/mp4) + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/ja/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx b/ja/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx new file mode 100644 index 000000000..e9af99db6 --- /dev/null +++ b/ja/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router で Veo 3.1 Lite Generate 001 を使用する" +description: "Comfy Router 経由で veo/veo-3.1-lite-generate-001 を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Veo 3.1 Lite Generate 001" +translationSourceHash: b1314fef +translationFrom: development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx +translationBlockHashes: + "_intro": 17d94e61 + "Quick start": c437f227 + "Schema": bf6fab55 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-lite-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Veo から Comfy Router によって提供される `veo/veo-3.1-lite-generate-001` の API リファレンス。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `veo/veo-3.1-lite-generate-001` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-lite-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-lite-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## スキーマ + +### 入力 + + + + + + + カメラの動きの種類。画像を指定する必要があります。 + + 取り得る値: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + ビデオ生成をガイドするためのオプションの先頭フレーム画像 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 取り得る値: `image/jpeg`, `image/png` + + + + オプションの末尾フレーム画像。image と併用して、先頭フレームと末尾フレームの間のビデオを生成します。Veo 3.0+ モデルでサポートされています。 + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 取り得る値: `image/jpeg`, `image/png` + + + + ビデオ編集用のオプションのマスク。入力ビデオに適用されます。 + + + + Base64 でエンコードされたマスクのバイトデータ + + 形式: `byte` + + + + マスクファイルの Cloud Storage URI + + + + マスクの適用方法 + + 取り得る値: `insert`, `remove`, `remove_static`, `outpaint` + + + + マスクの MIME タイプ (image/png、image/jpeg、image/webp、またはビデオ形式) + + + + 生成するビデオのテキスト説明 + + + + ビデオ生成をガイドするためのオプションの参照画像。最大 3 つのアセット画像または 1 つのスタイル画像をサポートします。Veo 3.1 モデル (プレビュー) でサポートされています。 + + + + + + + + Base64 でエンコードされた画像データ + + 形式: `byte` + + + + 画像の Cloud Storage URI + + + + 画像の MIME タイプ (image/jpeg または image/png) + + 取り得る値: `image/jpeg`, `image/png` + + + + 参照画像のオプションの識別子 + + + + 参照画像のタイプ + + 取り得る値: `asset`, `style` + + + + ビデオ拡張または編集用のオプションの入力ビデオ。image および referenceImages とは併用できません。 + + + + Base64 でエンコードされたビデオのバイトデータ + + 形式: `byte` + + + + 入力ビデオの Cloud Storage URI + + + + ビデオの MIME タイプ + + 取り得る値: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 生成されるビデオのアスペクト比。デフォルト: 16:9 + + 取り得る値: `16:9`, `9:16` + + + + ビデオの圧縮品質。デフォルト: optimized + + 取り得る値: `optimized`, `lossless` + + + + 生成されるビデオの目標再生時間 (秒)。Veo 2: 5-8。Veo 3/3.1: 4、6、または 8。デフォルト: 8 + + + + より高品質にするためにプロンプトを自動的に改善します。デフォルトは true です。 + + + + 生成されるビデオのフレームレート (1 秒あたりのフレーム数) + + + + ビデオとともにオーディオを生成するかどうか。デフォルトは true です。Veo 3.0+ モデルでサポートされています。 + + + + 生成されるビデオで避けるべき内容を記述したテキスト + + + + 生成されるビデオに登場する人物を制御します。デフォルト: allow_adult + + 取り得る値: `dont_allow`, `allow_adult`, `allowAll` + + + + 進捗更新用の Cloud Pub/Sub トピック (projects/\{project}/topics/\{topic}) + + + + 入力画像のリサイズ方法。デフォルト: pad + + 取り得る値: `pad`, `crop` + + + + 出力ビデオの解像度。Veo 3.0+ モデルでサポートされています。デフォルト: 720p + + 取り得る値: `720p`, `1080p`, `4k` + + + + 生成するビデオの数。指定しない場合は 1 本のビデオが生成されます。 + + 範囲: `1` から `4` + + + + 決定論的な出力のためのランダムシード。sampleCount > 1 の場合は、ビデオごとに異なるシードが使用されます。 + + 形式: `uint32` + + + + 生成されたビデオを保存するための Cloud Storage URI (gs://) + + + + ビデオ生成リクエストの操作タイプ + + 指定可能な値: `textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +Router が `GET /v2/models/veo/veo-3.1-lite-generate-001/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + 操作が完了したかどうか + + + + エラーの詳細。操作が失敗した場合に存在します + + + + gRPC エラーコード + + + + エラーメッセージ + + + + 操作リソース名 + + + + 予測レスポンス。done が true の場合に存在します + + + + + + + + 責任ある AI ポリシーによってフィルタリングされたビデオの数 + + + + ビデオが責任ある AI ポリシーによってフィルタリングされた理由 + + + + + + + + Base64 エンコードされたビデオコンテンツ + + + + 生成されたビデオの Cloud Storage URI + + + + ビデオの MIME タイプ (video/mp4) + + +## 例 + +### 入力 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 出力 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx new file mode 100644 index 000000000..03a9ce676 --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx @@ -0,0 +1,426 @@ +--- +title: "Comfy Router で HappyHorse 1.0 I2V を使用する" +description: "Comfy Router 経由で HTTP により wan/happyhorse-1.0-i2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.0 I2V" +translationSourceHash: e2663082 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx +translationBlockHashes: + "_intro": 24c1988d + "Quick start": 810ab797 + "Schema": 7ad667d0 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 I2V の API リファレンスです。HappyHorse 1.0 の画像から動画への変換は、静止した最初のフレームをアニメーション化し、同じ処理の中で同期したオーディオをレンダリングします。 + +## クイックスタート {#quick-start} + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `wan/happyhorse-1.0-i2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなど、基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3 および wav。reference_video_urls とは併用できません。 + + + + 最初のフレーム画像のURL、または Base64 エンコードデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360〜2000 ピクセル。ファイルサイズ: 最大 10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成用の参照素材 (画像、オーディオ、ビデオ) を指定します。各要素は type フィールドと url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame (最大 1)、last_frame (最大 1)、reference_image (最大 10)、 + reference_video (最大 5 クリップ、合計再生時間 \<= 15 秒)、reference_audio (最大 5 クリップ、 + 合計再生時間 \<= 15 秒)、file (最大 1、link とは併用不可)、link (最大 1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序が、プロンプト内でのアセットの + 参照順序 (画像 1、ビデオ 1、オーディオ 1、…) を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL (公開 HTTP/HTTPS URL または OSS 一時URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応し、長さは 800 文字以内です +(wan3.0-video では最大 20,000 文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v の場合は、参照ビデオの順序に従って +被写体を 'character1'、'character2' などで参照します。例: 「Character1 が道端で歌い、Character2 がその横で踊る」 +wan3.0-video の参照モードでは、media 配列内の対応する順序でメディアアセットを +'Image 1'、'Video 1'、'Audio 1' などで参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1〜3 本のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 本数: 1〜3 本 +- 単一ビデオの長さ: 2〜30 秒 +- 単一ファイルサイズ: 最大 30MB +- audio_url とは併用不可 +参照再生時間: 単一ビデオは最大 5 秒、2 本の場合は各最大 2.5 秒、3 本の場合は比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているもの: squish、flying、carousel。使用すると prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto (デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間 (秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ (15 秒には非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力がある場合は、 + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が 30 秒を超えてはなりません。-1 は + モデルが適切な再生時間を選択するスマート再生時間モードを有効にします + + 範囲: `-1` 〜 `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive (デフォルト) が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ (480P 非対応) +- wan2.7 モデル (i2v、t2v、r2v、videoedit): 720P、1080P (デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P (上流のデフォルトは 1080P) +このプロキシは resolution も size も指定しないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: 単一ショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`、`single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 透かしロゴを追加するかどうか。透かしは右下隅に配置されます + + +これは Router が `GET /v2/models/wan/happyhorse-1.0-i2v/openapi.json` で提供するスキーマから生成されたものです。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となるドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト (ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード (リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報 (リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト (ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト (有効な場合) + + + + 画像のエラーコード (一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報 (一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオの解像度レベル (I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間 (秒) (I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート (wan3.0-video タスク) + + + + 生成された画像の数 (T2I および I2I タスク) + + + + 入力ビデオの再生時間 (秒)、ビデオ入力がない場合は 0.0 (wan3.0-video タスク) + + + + 出力ビデオの再生時間 (秒) (wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比 (例: 16:9) (wan3.0-video タスク) + + + + 画像の解像度 (T2I および I2I タスク) + + + + 生成されたビデオの数 (T2V タスク) + + + + 生成されたビデオの再生時間 (秒) (T2V タスク) + + + + ビデオの解像度比率 (T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます (リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます (リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、こちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオ URL は 24 時間有効です。保持する必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx new file mode 100644 index 000000000..6de30259b --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy Router で HappyHorse 1.0 R2V を使用する" +description: "Comfy Router 経由で HTTP から wan/happyhorse-1.0-r2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.0 R2V" +translationSourceHash: 03ea8ead +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx +translationBlockHashes: + "_intro": c9fdbfc5 + "Quick start": 477da529 + "Schema": 604ab7a9 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 R2V の API リファレンスです。HappyHorse 1.0 参照から動画は、1 つ以上の参照画像の被写体を新しいシーン全体で一貫させます。プロンプトでは character1、character2 などとして指定します。 + +## クイックスタート + +[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、raw HTTP 経由の同じ呼び出しです。 + +**モデル ID:** `wan/happyhorse-1.0-r2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなど、基本的な情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応フォーマット: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURL、またはBase64エンコードされたデータ。I2Vモデルでは必須です。画像フォーマット: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7およびwan3.0モデル用のメディアアセットリスト。ビデオ生成に使用する参照素材(画像、オーディオ、ビデオ) +を指定します。各要素は type と url フィールドを持ちます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序がプロンプト内のアセットの参照順 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URL または OSS 一時URL) + + + + ネガティブプロンプト。ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応、長さは800文字以内 +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを指定する wan2.6-r2v では、参照ビデオの順序に従って被写体を +'character1'、'character2' のように参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、media 配列内の対応する順序に従ってメディアアセットを +'Image 1'、'Video 1'、'Audio 1' のように参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列。 +入力制限: +- フォーマット: mp4、mov +- 数量: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用不可 +参照再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合はそれに比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在対応しているもの: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` に定義されています。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間+出力ビデオの再生時間が30秒を超えてはなりません。-1 を指定すると + モデルが適切な再生時間を選択するスマート再生時間モードが有効になります + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7およびwan3.0モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルト 1080P) +このプロキシは resolution も size も指定しないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`、`single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +スキーマから生成。Router が `GET /v2/models/wan/happyhorse-1.0-r2v/openapi.json` で提供するドキュメントで、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + 音声生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの合計数 + + + + タスクのステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなくエンベロープのルート(ROOT)で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなくエンベロープのルート(ROOT)で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存しておきたい場合は、速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx new file mode 100644 index 000000000..d7f5d4179 --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx @@ -0,0 +1,424 @@ +--- +title: "Comfy Router で HappyHorse 1.0 T2V を使用する" +description: "Comfy Router 経由で HTTP を使って wan/happyhorse-1.0-t2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.0 T2V" +translationSourceHash: 8e898153 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx +translationBlockHashes: + "_intro": 7555288c + "Quick start": 88660925 + "Schema": 3037f420 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 T2V の API リファレンス。HappyHorse 1.0 のテキストから動画への生成は、プロンプトのみから同期したオーディオ付きの短いビデオを作成します。 + +## クイックスタート + +キーを[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)で作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、raw HTTP 経由で同じ呼び出しを行います。 + +**モデル ID:** `wan/happyhorse-1.0-t2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URL、または Base64 エンコードされたデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成に使用する参照素材(画像、オーディオ、ビデオ)を指定します。各要素は type フィールドと url フィールドを持ちます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは、同じリクエスト内で + 同時に使用できません。配列の順序が、プロンプト内でのアセットの参照順序(Image 1、Video 1、Audio 1、…)を + 定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS 一時URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応、長さは800文字以内 +(wan3.0-video では最大20,000文字。上限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順に被写体を指すために +'character1'、'character2' などを使用します。例: 「Character1 が道端で歌い、Character2 がその横で踊る」 +wan3.0-video の参照モードでは、media 配列内の対応する順序でメディアアセットを指すために +'Image 1'、'Video 1'、'Audio 1' などを使用します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本のビデオ +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用不可 +参照再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合は比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在対応: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必ず指定する必要があり、受け入れられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断 +- origin: 入力ビデオのオリジナルオーディオを強制的に保持 + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの長さ(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒には非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 を指定すると + モデルが適切な再生時間を選ぶスマート再生時間モードが有効になります + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて適切な +アスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P 非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ動作します。 +wan2.6 および wan2.7-r2v モデル向け。 +- single: 単一ショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`、`single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークのロゴを追加するかどうか。ウォーターマークは右下隅に配置されます。 + + +スキーマから生成されたもので、Router が `GET /v2/models/wan/happyhorse-1.0-t2v/openapi.json` で提供するドキュメントと同じです。これはリクエストがプロバイダーに到達する前に、呼び出しを検証する際に使用されるものと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + 元の入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + 元の入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスク数 + + + + 成功したタスク数 + + + + タスクの総数 + + + + タスクステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)、ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比、例: 16:9(wan3.0-videoタスク) + + + + 画像の解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオの URL は 24 時間有効です。保存しておきたい場合は速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx new file mode 100644 index 000000000..e25354af5 --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx @@ -0,0 +1,439 @@ +--- +title: "Comfy Router で HappyHorse 1.0 Video Edit を使う" +description: "Comfy Router 経由で wan/happyhorse-1.0-video-edit を HTTP で呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.0 Video Edit" +translationSourceHash: 7bbd47ee +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx +translationBlockHashes: + "_intro": 43ae28bb + "Quick start": 83992b09 + "Schema": 7f54592c + "Examples": a41df668 +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 Video Edit の API リファレンス。HappyHorse 1.0 video edit は、テキスト指示に基づいて既存のクリップを書き換えます。任意で参照画像によるガイドも利用できます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `wan/happyhorse-1.0-video-edit` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-video-edit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-video-edit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\"}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなど、基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURL、またはBase64エンコードされたデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7およびwan3.0モデル用のメディアアセット一覧。ビデオ生成のための参照素材(画像、オーディオ、ビデオ) +を指定します。各要素には type と url フィールドが含まれます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは併用 + 不可)。reference_*/file/link タイプと first_frame/last_frame タイプは、同じリクエスト内で + 同時に使用できません。配列の順序が、プロンプト内でのアセットの参照順序(画像1、ビデオ1、オーディオ1、...) + を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + メディアファイルのURL(公開HTTP/HTTPS URL、またはOSSの一時URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応し、長さは800文字以内です +(wan3.0-video では最大20,000文字。制限を超えたコンテンツは切り捨てられます)。 +複数の参照ビデオを指定する wan2.6-r2v では、'character1'、'character2' などを使って +参照ビデオの順に被写体を参照します。例:「キャラクター1が道端で歌い、キャラクター2がその横で踊る」 +wan3.0-video の参照モードでは、'Image 1'、'Video 1'、'Audio 1' などを使って、 +media 配列内の対応する順序のメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列です。 +入力制限: +- 形式: mp4、mov +- 本数: 1~3本 +- 1本あたりのビデオ長: 2~30秒 +- 1ファイルあたりのファイルサイズ: 最大30MB +- audio_url とは併用できません +参照可能な再生時間: ビデオ1本の場合は最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合は比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。任意です。現在サポートされているのは squish、flying、carousel です。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは、必ず指定する必要があります。受け付けられる表記の enum は、そのオペレーション自身のコンポーネントである `WanVideoGenerationRequest` に定義されています。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデルのビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`, `origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力がない場合は [2, 30] の整数。ビデオ入力がある場合は、入力ビデオの + 合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 はスマート再生時間モードを + 有効にし、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です + + + + 生成されるビデオのアスペクト比。wan2.7およびwan3.0モデル専用です。 +wan2.7モデルでは、指定しない場合、解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P 非対応) +- wan2.7モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルトは 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`, `720P`, `1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` ~ `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデルで使用できます。 +- single: 単一ショットのビデオ(デフォルト) +- multi: マルチショットのビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832, 832*480, 624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/happyhorse-1.0-video-edit/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に対象とするドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスク数 + + + + 成功したタスク数 + + + + タスクの総数 + + + + タスクステータス + + 取り得る値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-videoタスク) + + + + 画像解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなくエンベロープのROOTで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなくエンベロープのROOTで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P" + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存が必要な場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx new file mode 100644 index 000000000..95c7d0b5f --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx @@ -0,0 +1,426 @@ +--- +title: "HappyHorse 1.1 I2V を Comfy Router で使用する" +description: "Comfy Router 経由で HTTP により wan/happyhorse-1.1-i2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.1 I2V" +translationSourceHash: 8fa3c9fe +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx +translationBlockHashes: + "_intro": df62101a + "Quick start": 804bc637 + "Schema": b49a9a2c + "Examples": 2b581e5f +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 I2V の API リファレンスです。HappyHorse 1.1 の画像から動画への変換は、静止した最初のフレームをアニメーション化し、同期したセリフ、エフェクト、音楽を同じパスでレンダリングします。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `wan/happyhorse-1.1-i2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls と併用できません。 + + + + 最初のフレーム画像のURL、またはBase64エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ)を指定します。各要素には type フィールドと url フィールドが含まれます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link と併用不可)、link(最大1、file と + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは、 + 同じリクエスト内で同時に使用できません。配列の順序が、プロンプト内のアセットの + 参照順序(Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSS一時URL) + + + + ネガティブプロンプト。ビデオ画面に表示したくない内容を記述するために使用します。 + + + + テキストプロンプト。中国語と英語をサポートし、長さは800文字を超えないこと +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、「character1」「character2」などを使って、 +参照ビデオの順に被写体を参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、「Image 1」「Video 1」「Audio 1」などを使って、 +media 配列内の対応する順序でメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 本数: 1~3本 +- 1本あたりのビデオ長: 2~30秒 +- 1ファイルあたりのサイズ: 最大30MB +- audio_url と併用できません +参照再生時間: 1本の場合は最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合は比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているのは squish、flying、carousel です。これを使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け入れられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非サポート) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオ再生時間の合計 + 出力ビデオ再生時間が30秒を超えてはなりません。-1 は + スマート再生時間モードを有効にし、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントリライトを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合、解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非サポート) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルト 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアによって課金レートが決まるためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用です。 +- single: 単一ショットのビデオ(デフォルト) +- multi: マルチショットのビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ 形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/happyhorse-1.1-i2v/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントです。### 出力 + + + + + + + インテリジェントなリライト後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントなリライト後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成された画像URLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 取り得る値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオの解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比、例: 16:9(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオの解像度比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存しておく必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx new file mode 100644 index 000000000..26ae623d9 --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "HappyHorse 1.1 R2V を Comfy Router で使用する" +description: "Comfy Router 経由で HTTP を通して wan/happyhorse-1.1-r2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.1 R2V" +translationSourceHash: bcc3fe39 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx +translationBlockHashes: + "_intro": 9cfab6c4 + "Quick start": 85fe82b4 + "Schema": 6abf7a04 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 R2V の API リファレンスです。HappyHorse 1.1 の参照から動画は、最大9枚の参照画像に写る被写体を新しいシーン全体で一貫させます。プロンプト内では character1、character2 のように指定します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `wan/happyhorse-1.1-r2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URLまたはBase64エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成用の参照素材(画像、オーディオ、ビデオ)を指定します。 +各要素は type と url フィールドを持ちます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内では同時に使用できません。配列の順序が、プロンプト内でのアセットの + 参照順序(画像1、ビデオ1、オーディオ1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSSの一時URL) + + + + ネガティブプロンプト。ビデオ画面に表示したくない内容を記述するために使用します。 + + + + テキストプロンプト。中国語と英語に対応しており、長さは800文字以内です +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使う wan2.6-r2v では、'character1'、'character2' などを使って +参照ビデオの順序で被写体を参照します。例: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video の参照モードでは、'Image 1'、'Video 1'、'Audio 1' などを使って、 +media 配列内の対応する順序でメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3個のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用不可 +参照時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合はそれに比例して短くなります。 +課金: 実際に使用した参照時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているのは squish、flying、carousel です。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` を直接 v1 呼び出しする場合は必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、入力ビデオの + 合計再生時間 + 出力ビデオの再生時間が 30 秒を超えてはなりません。-1 を指定すると + スマート再生時間モードが有効になり、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + prompt のインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P 非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを選択するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ動作します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ (デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。サポートされる解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832、832*480、624*624)、720P、1080P のサイズ +wan2.6 T2V/R2V の場合 (480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます。 + + +Router が `GET /v2/models/wan/happyhorse-1.1-r2v/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像エラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像エラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの合計数 + + + + タスクステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成済みビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成済みビデオのフレームレート(wan3.0-video タスク) + + + + 生成済み画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成済みビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像解像度(T2I および I2I タスク) + + + + 生成済みビデオの数(T2V タスク) + + + + 生成済みビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存する必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx b/ja/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx new file mode 100644 index 000000000..90d20f219 --- /dev/null +++ b/ja/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx @@ -0,0 +1,424 @@ +--- +title: "Comfy Router で HappyHorse 1.1 T2V を使う" +description: "Comfy Router を通じて HTTP 経由で wan/happyhorse-1.1-t2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "HappyHorse 1.1 T2V" +translationSourceHash: d2a04691 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx +translationBlockHashes: + "_intro": 9a8430cd + "Quick start": fe1ffe46 + "Schema": 42258343 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 T2V の API リファレンスです。HappyHorse 1.1 のテキストから動画への生成は、プロンプトのみから、同期したセリフ、エフェクト、音楽を備えた短いビデオを作成します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `wan/happyhorse-1.1-t2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポートされる形式: mp3、wav。reference_video_urls と併用できません。 + + + + 先頭フレームの画像URL、または Base64 エンコードされたデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000 ピクセル。ファイルサイズ: 最大 10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ)を指定します。各要素は type と url フィールドを持ちます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大 1)、last_frame(最大 1)、reference_image(最大 10)、 + reference_video(最大 5 クリップ、合計再生時間 \<= 15 秒)、reference_audio(最大 5 クリップ、 + 合計再生時間 \<= 15 秒)、file(最大 1、link と併用不可)、link(最大 1、file と + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序が、プロンプト内のアセットの + 参照順序(Image 1、Video 1、Audio 1…)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS の一時 URL) + + + + ネガティブプロンプトワードは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプトワード。中国語と英語をサポートし、長さは 800 文字以内です +(wan3.0-video では最大 20,000 文字。上限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、「character1」「character2」などを使って、 +参照ビデオの順序で被写体を参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、「Image 1」「Video 1」「Audio 1」などを使って、 +media 配列内の対応する順序でメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオ URL。1~3 個のビデオ URL の配列です。 +入力の制限: +- 形式: mp4、mov +- 数量: 1~3 本のビデオ +- 単一ビデオの長さ: 2~30 秒 +- 単一ファイルサイズ: 最大 30MB +- audio_url と併用できません +参照の再生時間: 単一ビデオは最大 5 秒、2 本のビデオはそれぞれ最大 2.5 秒、3 本のビデオはそれに比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意です。現在サポートされているのは squish、flying、carousel です。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必須であり、受け入れられる表記の列挙は、そのオペレーション自身のコンポーネント `WanVideoGenerationRequest` に定義されています。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 秒または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5 秒、10 秒、または 15 秒 +- wan2.6-r2v: 5 秒または 10 秒のみ(15 秒は非サポート) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が 30 秒を超えてはなりません。-1 は + モデルが適切な再生時間を選択するスマート再生時間モードを有効にします + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非サポート) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを選択するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + ランダム数値のシード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` ~ `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合のみ動作します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + width*height 形式のビデオ解像度。対応解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832, 832*480, 624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合 (480P なし): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます。 + + +`GET /v2/models/wan/happyhorse-1.1-t2v/openapi.json` で Router が提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に、呼び出しの検証に使用されるものと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比。例: 16:9(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオの解像度比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、これを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオ URL の有効期限は 24 時間です。保存が必要な場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx b/ja/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx new file mode 100644 index 000000000..d75f240c8 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx @@ -0,0 +1,335 @@ +--- +title: "Comfy Router で Wan 2.5 I2I Preview を使用する" +description: "Comfy Router 経由で wan/wan2.5-i2i-preview を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Wan 2.5 I2I Preview" +translationSourceHash: 69f17d11 +translationFrom: development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx +translationBlockHashes: + "_intro": 54209465 + "Quick start": abe86d7a + "Schema": c8fca9d2 + "Examples": 3d10fc60 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/wan/wan2.5-i2i-preview.json から生成されます。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-i2i-preview` の API リファレンス。Wan の Comfy Router から提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 + +**モデル ID:** `wan/wan2.5-i2i-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2i-preview", + { + "input": { + "images": ["https://example.invalid/red-maple-leaf.png"], + "prompt": "Make the leaf golden.", + }, + "parameters": { + "n": 1, + "size": "768*768", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-i2i-preview", { + input: { + images: ["https://example.invalid/red-maple-leaf.png"], + prompt: "Make the leaf golden.", + }, + parameters: { + n: 1, + size: "768*768", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"images\":[\"https://example.invalid/red-maple-leaf.png\"],\"prompt\":\"Make the leaf golden.\"}, \"parameters\": {\"n\":1,\"size\":\"768*768\"}}" +``` + + +## Schema + +### 入力 + + + プロンプト、画像などの基本情報を入力します。 + + + + 画像から画像への生成に使用する画像 URL の配列 + + + + 画像に表示したくないコンテンツを記述するネガティブプロンプト + + + + 期待する画像の要素や視覚的特徴を記述するポジティブプロンプト。中国語と英語をサポートし、長さは 2000 文字以内です + + + + 画像から画像への生成に呼び出すモデルの ID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定します。`POST /proxy/wan/api/v1/services/aigc/image2image/image-synthesis` への直接の v1 呼び出しではこれを必ず指定する必要があり、受け入れられる表記の enum はそのオペレーション自身のコンポーネント `WanImage2ImageGenerationRequest` にあります。 + + + + 画像処理パラメータ + + + + 生成する画像の数。範囲は 1~4、デフォルトは 1 + + 範囲: `1` ~ `4` + + + + ランダム性を制御する乱数シード。範囲 [0, 2147483647] + + 範囲: `0` ~ `2147483647` + + + + 幅*高さ形式の出力画像の解像度。デフォルトは 1280*1280 です。API は 589824 (768*768) から 1638400 (1280*1280) までのピクセル面積を、1:4 から 4:1 までのアスペクト比で受け付けます + + + + 右下隅に透かしロゴを追加するかどうか + + +Router が `GET /v2/models/wan/wan2.5-i2i-preview/openapi.json` で提供するスキーマから生成されます。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像エラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像エラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成された画像の URL アドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの合計数 + + + + タスクステータス + + 取り得る値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "images": [ + "https://example.invalid/red-maple-leaf.png" + ], + "prompt": "Make the leaf golden." + }, + "parameters": { + "n": 1, + "size": "768*768" + } +} +``` + +### 出力 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + + diff --git a/ja/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx b/ja/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx new file mode 100644 index 000000000..efd1ba656 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx @@ -0,0 +1,427 @@ +--- +title: "Wan 2.5 I2V Preview を Comfy Router で使用する" +description: "Comfy Router 経由で HTTP を使用して wan/wan2.5-i2v-preview を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.5 I2V Preview" +translationSourceHash: 11676d6d +translationFrom: development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx +translationBlockHashes: + "_intro": 92f3b1d3 + "Quick start": a48b510f + "Schema": affcfad3 + "Examples": 2b581e5f +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.5 I2V Preview の API リファレンスです。Wan 2.5 の画像から動画への変換では、静止した最初のフレームを短いビデオに変換し、その動きとカメラの動きはプロンプトで記述します。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用します。cURL のスニペットは同じ呼び出しを生の HTTP で実行します。 + +**モデル ID:** `wan/wan2.5-i2v-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2v-preview", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-i2v-preview", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURL、またはBase64エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ)を指定します。各要素は type フィールドと url フィールドを持ちます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15s)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15s)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内では排他的です。配列の順序が、プロンプト内でのアセットの参照順序 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS 一時URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応し、長さは800文字以内です +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使う wan2.6-r2v では、「character1」「character2」などで参照ビデオの順に +被写体を参照できます。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、「Image 1」「Video 1」「Audio 1」などで、media 配列内の +対応する順序のメディアアセットを参照できます。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3個のビデオURLの配列です。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用できません +参照再生時間: 単一ビデオは最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合はそれぞれ比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意です。現在サポートされているのは squish、flying、carousel です。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元はこれを省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必須であり、受け付けられる表記の enum は、そのオペレーション自身のコンポーネントである `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`, `origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒には非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、 + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 を指定すると + スマート再生時間モードが有効になり、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントリライトを有効にするかどうか。デフォルトは true です + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合、解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P 非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`, `720P`, `1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: 単一ショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`、`single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +スキーマから生成されています。Router は `GET /v2/models/wan/wan2.5-i2v-preview/openapi.json` でこのスキーマを提供しており、リクエストがプロバイダーに到達する前に呼び出しを検証する際にも同じドキュメントを使用します。### 出力 + + + + + + + インテリジェントリライト後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントリライト後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの合計数 + + + + タスクのステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみが集計されます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、こちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオ URL の有効期間は 24 時間です。ビデオを保持する必要がある場合は、速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx b/ja/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx new file mode 100644 index 000000000..f0d986161 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx @@ -0,0 +1,329 @@ +--- +title: "Comfy Router で Wan 2.5 T2I Preview を使用する" +description: "Comfy Router 経由で wan/wan2.5-t2i-preview を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Wan 2.5 T2I Preview" +translationSourceHash: 51b71001 +translationFrom: development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx +translationBlockHashes: + "_intro": bdf16bb7 + "Quick start": e89c207d + "Schema": 579649db + "Examples": e420aca1 +--- +{/* GENERATED FILE. Generated from router-schemas/wan/wan2.5-t2i-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-t2i-preview` の API リファレンス。Wan から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `wan/wan2.5-t2i-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2i-preview", + { + "input": { + "prompt": "A single red maple leaf on a plain white background.", + }, + "parameters": { + "n": 1, + "size": "1280*1280", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-t2i-preview", { + input: { + prompt: "A single red maple leaf on a plain white background.", + }, + parameters: { + n: 1, + size: "1280*1280", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"A single red maple leaf on a plain white background.\"}, \"parameters\": {\"n\":1,\"size\":\"1280*1280\"}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + 画像に表示したくないコンテンツを記述するネガティブプロンプト + + + + 期待する画像要素や視覚的特徴を記述するポジティブプロンプト。中国語と英語をサポートし、長さは 800 文字以内 + + + + テキストから画像への生成のために呼び出すモデルの ID。このコンポーネントでは制約されません: Comfy Router は `POST /v2/models/wan/{model}` の `{model}` パスセグメントからこれを設定します。`POST /proxy/wan/api/v1/services/aigc/text2image/image-synthesis` への v1 の直接呼び出しでは必ず指定する必要があり、受け入れられる表記の enum はその操作自身のコンポーネント `WanImageGenerationRequest` にあります。 + + + + 画像処理パラメータ + + + + 生成する画像の数。範囲は 1~4、デフォルトは 4 + + 範囲: `1` から `4` + + + + プロンプトのインテリジェント書き換えを有効にします。デフォルトは true + + + + ランダム性を制御する乱数シード。範囲 [0, 2147483647] + + 範囲: `0` から `2147483647` + + + + 出力画像の解像度。形式は 幅*高さ です。デフォルトは 1280*1280。API は 1638400 (1280*1280) から 2073600 (1440*1440) までのピクセル面積を、1:4 から 4:1 の間のアスペクト比で受け入れます。そのため 768*2700 も有効です。 + + + + 右下隅にウォーターマークロゴを追加するかどうか + + +Router が `GET /v2/models/wan/wan2.5-t2i-preview/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + 元の入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + 元の入力プロンプト + + + + 生成された画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの合計数 + + + + タスクのステータス + + 取り得る値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒単位)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒単位)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒単位)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-videoタスク) + + + + 画像の解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒単位)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、こちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "A single red maple leaf on a plain white background." + }, + "parameters": { + "n": 1, + "size": "1280*1280" + } +} +``` + +### 出力 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + diff --git a/ja/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx b/ja/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx new file mode 100644 index 000000000..1d0fc13d4 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router で Wan 2.5 T2V Preview を使う" +description: "Comfy Router 経由で HTTP から wan/wan2.5-t2v-preview を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.5 T2V Preview" +translationSourceHash: 8b4019e8 +translationFrom: development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx +translationBlockHashes: + "_intro": 09319905 + "Quick start": 8d9cb70e + "Schema": d747859e + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.5 T2V プレビューの API リファレンスです。Wan 2.5 のテキストから動画への生成は、プロンプトのみから短いビデオを作成します。参照画像や参照ビデオは不要です。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `wan/wan2.5-t2v-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2v-preview", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-t2v-preview", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポートされる形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURL、または Base64 エンコードされたデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットのリスト。ビデオ生成に使用する参照素材(画像、オーディオ、ビデオ) +を指定します。各要素には type フィールドと url フィールドが含まれます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序がプロンプト内でのアセットの参照順 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS の一時 URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語をサポートし、長さは800文字以内 +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順に被写体を参照するために +'character1'、'character2' などを使用します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、media 配列内の対応する順序でメディアアセットを参照するために +'Image 1'、'Video 1'、'Audio 1' などを使用します。 + + + + wan2.6-r2v モデル専用の参照ビデオ URL。1~3個のビデオ URL の配列。 +入力の制限: +- 形式: mp4、mov +- 数量: 1~3本のビデオ +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用できません +参照再生時間: 単一ビデオは最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合はさらに比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているもの: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルの ID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し側はこれを省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必ず指定する必要があり、許可される表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの長さ(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力がある場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはならず、-1 を指定すると + モデルが適切な再生時間を選択するスマート再生時間モードが有効になります + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)は入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(アップストリームのデフォルトは 1080P) +このプロキシは resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +スキーマから生成されており、Router が `GET /v2/models/wan/wan2.5-t2v-preview/openapi.json` で提供するドキュメントと同じものです。これはリクエストがプロバイダーに到達する前に、呼び出しの検証に使用されるものと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスクのオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスク数 + + + + 成功したタスク数 + + + + タスクの総数 + + + + タスクのステータス + + 取りうる値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成済みビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成済みビデオのフレームレート(wan3.0-video タスク) + + + + 生成済み画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成済みビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成済みビデオの数(T2V タスク) + + + + 生成済みビデオの再生時間(秒)(T2V タスク) + + + + ビデオの解像度比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープの ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオ URL の有効期限は 24 時間です。保存しておきたい場合は、速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-6-i2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-6-i2v/code.mdx new file mode 100644 index 000000000..fb091af52 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-6-i2v/code.mdx @@ -0,0 +1,426 @@ +--- +title: "Comfy Router で Wan 2.6 I2V を使う" +description: "Comfy Router を通じて HTTP 経由で wan/wan2.6-i2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.6 I2V" +translationSourceHash: d02cf0cb +translationFrom: development/comfy-router/models/wan/wan2-6-i2v/code.mdx +translationBlockHashes: + "_intro": 13e5c8cc + "Quick start": 64466010 + "Schema": 85b61b37 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.6 I2V の API リファレンスです。Wan 2.6 の画像から動画へは、静止した最初のフレームをアニメーション化します。720P または 1080P、最大 15 秒に対応しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK を使用します(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)。cURL のスニペットは同じ呼び出しを raw HTTP で実行するものです。 + +**Model ID:** `wan/wan2.6-i2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.6-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls と併用できません。 + + + + 先頭フレームの画像URLまたはBase64エンコードデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成用の参照素材(画像、オーディオ、ビデオ)を指定します。各要素は type フィールドと url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15s)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15s)、file(最大1、link と併用不可)、link(最大1、file と + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序が、プロンプト内でのアセットの + 参照順序(Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS 一時 URL) + + + + ネガティブプロンプト。動画の画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応しており、長さは800文字以内です +(wan3.0-video では最大20,000文字。制限を超えたコンテンツは切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、'character1'、'character2' などを使用して、 +参照ビデオの順序で被写体を参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、'Image 1'、'Video 1'、'Audio 1' などを使用して、media 配列内の +対応する順序でメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3個のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本のビデオ +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url と併用できません +参照再生時間: 単一ビデオは最大5秒、2本のビデオは各最大2.5秒、3本のビデオは比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているのは squish、flying、carousel です。使用すると prompt パラメータは無視されます。 + + + + 呼び出すモデルの ID。このコンポーネントでは制約されません: Comfy Router は `POST /v2/models/wan/{model}` の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる綴りの enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`, `origin` + + + + 生成されるビデオの長さ(秒): +- wan2.5 モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、 + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。なお、 + -1 を指定するとスマート再生時間モードが有効になり、モデルが適切な長さを選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です + + + + 生成されるビデオの比率。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切な比率を自動的に推奨します。 + + 指定可能な値: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P 非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution と size のどちらも指定されていないビデオ生成リクエストを +拒否します。解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`, `720P`, `1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ動作します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`、`single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます。 + + +スキーマから生成されています。Router は `GET /v2/models/wan/wan2.6-i2v/openapi.json` でこのスキーマを提供しており、リクエストがプロバイダーに到達する前に、呼び出しを検証する際に使用するドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成された画像URLアドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスク数 + + + + 成功したタスク数 + + + + タスクの合計数 + + + + タスクステータス + + 取りうる値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比。例: 16:9(wan3.0-videoタスク) + + + + 画像の解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオ数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオのURLは24時間有効です。保存が必要な場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-6-r2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-6-r2v/code.mdx new file mode 100644 index 000000000..fa335ab9b --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-6-r2v/code.mdx @@ -0,0 +1,429 @@ +--- +title: "Comfy Router で Wan 2.6 R2V を使う" +description: "Comfy Router 経由で HTTP から wan/wan2.6-r2v を呼び出すための Python、TypeScript、cURL スニペットと、リクエストフィールドおよび結果の形状" +sidebarTitle: "Wan 2.6 R2V" +translationSourceHash: 6d5ca4d7 +translationFrom: development/comfy-router/models/wan/wan2-6-r2v/code.mdx +translationBlockHashes: + "_intro": e8706b25 + "Quick start": b9e4a192 + "Schema": 2f56f8e9 + "Examples": dd88ebee +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集し、`pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.6 R2V の API リファレンス。Wan 2.6 の参照から動画は、1~3 本の参照ビデオの被写体を新しいシーンへ持ち込みます。プロンプト内では character1、character2 などのように指定します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `wan/wan2.6-r2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.6-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + reference_video_urls: ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"reference_video_urls\":[\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポートされる形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URL、またはBase64エンコードされたデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ)を指定します。 +各要素は type フィールドと url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは併用不可)。 + reference_*/file/link タイプと first_frame/last_frame タイプは、同じリクエスト内で + 同時に使用できません。配列の順序が、プロンプト内でのアセットの参照順 + (Image 1、Video 1、Audio 1 ...)を定義します。 + + + + メディアアセットの種類 + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSSの一時URL) + + + + ネガティブプロンプトは、ビデオ画面に表示させたくないコンテンツを記述するために使用します + + + + テキストプロンプト。中国語と英語をサポートし、長さは800文字以内です +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に従って被写体を +'character1'、'character2' などで参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、media 配列内の対応する順序に従ってメディアアセットを +'Image 1'、'Video 1'、'Audio 1' などで参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列です。 +入力制限: +- 形式: mp4、mov +- 本数: 1~3本 +- 1本あたりのビデオ長: 2~30秒 +- 1ファイルあたりのサイズ: 最大30MB +- audio_url とは併用できません +参照の再生時間: 1本の場合は最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合は比例してさらに短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。任意です。現在サポートされている値: squish、flying、carousel。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し側は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非サポート) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、 + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 は + モデルが適切な再生時間を選択するスマート再生時間モードを有効にします + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合、解像度の階層に基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非サポート) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(アップストリームのデフォルトは 1080P) +このプロキシは、resolution と size のどちらも指定しないビデオ生成リクエストを拒否します。 +解像度の階層が課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P 非対応): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +スキーマから生成された、Router が `GET /v2/models/wan/wan2.6-r2v/openapi.json` で提供するドキュメントです。これは、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるものと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなくエンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなくエンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 使用例 + +### 入力 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": [ + "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存しておく必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-6-t2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-6-t2v/code.mdx new file mode 100644 index 000000000..1bce5fb72 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-6-t2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router で Wan 2.6 T2V を使用する" +description: "Comfy Router 経由で HTTP を使用して wan/wan2.6-t2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.6 T2V" +translationSourceHash: 67885546 +translationFrom: development/comfy-router/models/wan/wan2-6-t2v/code.mdx +translationBlockHashes: + "_intro": 2f5a31f7 + "Quick start": b90dbbd9 + "Schema": 5a150e56 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.6 T2V の API リファレンス。Wan 2.6 のテキストから動画への変換は、プロンプトのみから短いビデオを生成します。解像度は 720P または 1080P、長さは最大 15 秒です。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `wan/wan2.6-t2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.6-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応フォーマット: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURLまたはBase64エンコードデータ。I2Vモデルでは必須です。画像フォーマット: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7およびwan3.0モデル用のメディアアセットリスト。ビデオ生成用の参照素材(画像、オーディオ、ビデオ) +を指定します。各要素は type と url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で同時に使用できません。配列の順序がプロンプト内のアセットの参照順 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSS一時URL) + + + + ネガティブプロンプトワード。ビデオ画面に表示したくない内容を記述するために使用します。 + + + + テキストプロンプトワード。中国語と英語をサポートし、長さは800文字以内です +(wan3.0-videoでは最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用するwan2.6-r2vでは、参照ビデオの順序に合わせて +「character1」「character2」などで被写体を参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-videoの参照モードでは、media配列内の対応する順序で +「Image 1」「Video 1」「Audio 1」などでメディアアセットを参照します。 + + + + wan2.6-r2vモデル専用の参照ビデオURL。1~3個のビデオURLの配列。 +入力制限: +- フォーマット: mp4、mov +- 数量: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用できません +参照再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合はそれに比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているもの: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接のv1呼び出しでは必ず指定する必要があり、受け付けられる表記のenumはそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoeditモデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 を指定すると + モデルが適切な再生時間を選択するスマート再生時間モードになります + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true。 + + + + 生成されるビデオのアスペクト比。wan2.7およびwan3.0モデル専用です。 +wan2.7モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-videoでは、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080Pのみ(480Pは非対応) +- wan2.7モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルトは1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは1080P) +このプロキシは resolution と size のどちらも指定しないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + ランダム数値のシード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合のみ動作します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ 形式のビデオ解像度。対応する解像度はモデルによって異なります。 +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan2.6-t2v/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を含む I2V タスク用のオーディオ URL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストに関する詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像の URL アドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスク ID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオ URL。リンクの有効期間は 24 時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオの解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオの解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストに関する詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、これを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオの URL は 24 時間有効です。保存が必要な場合は、速やかにダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-7-i2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-7-i2v/code.mdx new file mode 100644 index 000000000..9d7bbd833 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-7-i2v/code.mdx @@ -0,0 +1,443 @@ +--- +title: "Comfy Router で Wan 2.7 I2V を使う" +description: "Comfy Router 経由で HTTP を使って wan/wan2.7-i2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.7 I2V" +translationSourceHash: ea6272b5 +translationFrom: development/comfy-router/models/wan/wan2-7-i2v/code.mdx +translationBlockHashes: + "_intro": b2a5e3a6 + "Quick start": a9c6fffc + "Schema": 5aa218af + "Examples": 5ffd46d7 +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集して `pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.7 I2V の API リファレンスです。Wan 2.7 の画像から動画へは、メディアリストで指定した最初のフレームをアニメーション化します。このメディアリストでは、最後のフレーム、駆動用のオーディオトラック、オープニングクリップも受け付けます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `wan/wan2.7-i2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.7-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポート形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URLまたは Base64 エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材 +(画像、オーディオ、ビデオ)を指定します。各要素は type と url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは併用不可)。 + reference_*/file/link タイプと first_frame/last_frame タイプは、同一リクエスト内では + 相互に排他的です。配列の順序が、プロンプト内でのアセットの参照順序 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSS一時URL) + + + + ネガティブプロンプトワード。ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプトワード。中国語と英語をサポートし、長さは800文字以内 +(wan3.0-video では最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に従って +'character1'、'character2' などで被写体を参照します。 +例: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video の参照モードでは、media 配列内の対応する順序に従って +'Image 1'、'Video 1'、'Audio 1' などでメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3件のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用できません +参照可能な再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合はそれに比例して短くなります。 +課金: 実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポートされているのは squish、flying、carousel です。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必ず指定する必要があり、受け入れられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` に定義されています。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断 +- origin: 入力ビデオのオリジナルオーディオを強制的に保持 + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15秒は非サポート) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。 + -1 はスマート再生時間モードを有効にし、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントリライトを有効にするか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非サポート) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + ランダムシード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832, 832*480, 624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan2.7-i2v/openapi.json` で提供する schema から生成されており、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じものです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + 元の入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像エラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像エラー情報(一部のタスクが失敗した場合に返されます) + + + + 元の入力プロンプト + + + + 生成された画像URLアドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクステータス + + 可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオの比率。例: 16:9(wan3.0-videoタスク) + + + + 画像解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、これを確認してください。 + + +## Examples {#examples} + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存が必要な場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-7-r2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-7-r2v/code.mdx new file mode 100644 index 000000000..900278703 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-7-r2v/code.mdx @@ -0,0 +1,441 @@ +--- +title: "Comfy Router で Wan 2.7 R2V を使用する" +description: "Comfy Router 経由で HTTP から wan/wan2.7-r2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.7 R2V" +translationSourceHash: 5dbe07b4 +translationFrom: development/comfy-router/models/wan/wan2-7-r2v/code.mdx +translationBlockHashes: + "_intro": 3361a1c4 + "Quick start": e1e26620 + "Schema": 72700081 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.7 R2V の API リファレンスです。Wan 2.7 の参照から動画は、参照画像や参照ビデオに含まれる被写体を新しいシーンへ持ち込み、プロンプト内で character1、character2 などとして指定します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `wan/wan2.7-r2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.7-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポート形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URLまたはBase64エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成用の参照素材(画像、オーディオ、ビデオ)を指定します。各要素は type と url フィールドを含みます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用できません)、link(最大1、file とは + 併用できません)。reference_*/file/link タイプと first_frame/last_frame タイプは、 + 同一リクエスト内では相互排他的です。配列の順序が、プロンプト内でアセットを参照する順序 + (Image 1、Video 1、Audio 1、…)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS 一時 URL) + + + + ネガティブプロンプトは、ビデオ画面に表示したくないコンテンツを記述するために使用します。 + + + + テキストプロンプト。中国語と英語をサポートし、長さは800文字以内です +(wan3.0-video では最大20,000文字。上限を超えたコンテンツは切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、'character1'、'character2' などを使用して、 +参照ビデオの順序で被写体を参照します。例: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video の参照モードでは、'Image 1'、'Video 1'、'Audio 1' などを使用して、 +media 配列内の対応する順序でメディアアセットを参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3個のビデオURLの配列。 +入力制限: +- 形式: mp4、mov +- 数量: 1~3本のビデオ +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用できません +参照再生時間: ビデオ1本の場合は最大5秒、2本の場合はそれぞれ最大2.5秒、3本の場合は比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。任意。現在サポートされているのは squish、flying、carousel です。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け入れられる表記の列挙はそのオペレーション自身のコンポーネントである `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデルのビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトのコンテンツに基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒はサポートされません) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、入力 + ビデオの合計再生時間と出力ビデオの再生時間の合計が30秒を超えてはなりません。-1 を指定 + するとスマート再生時間モードが有効になり、モデルが適切な再生時間を選択します + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です。 + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが設定されます。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて適切な +アスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P はサポートされません) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution も size も指定しないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを選択するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ 形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832, 832*480, 624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合 (480P なし): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan2.7-r2v/openapi.json` で提供するスキーマから生成されています。これはリクエストがプロバイダーに到達する前に呼び出しを検証する際に使用される同一のドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2VタスクのオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像エラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像エラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクステータス + + 有効な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成済みビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成済みビデオのフレームレート(wan3.0-videoタスク) + + + + 生成済み画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成済みビデオのアスペクト比(例: 16:9)(wan3.0-videoタスク) + + + + 画像解像度(T2IおよびI2Iタスク) + + + + 生成済みビデオの数(T2Vタスク) + + + + 生成済みビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保存しておく必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-7-t2v/code.mdx b/ja/development/comfy-router/models/wan/wan2-7-t2v/code.mdx new file mode 100644 index 000000000..bbc79314d --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-7-t2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router で Wan 2.7 T2V を使用する" +description: "Comfy Router を通じて HTTP で wan/wan2.7-t2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.7 T2V" +translationSourceHash: e920aeea +translationFrom: development/comfy-router/models/wan/wan2-7-t2v/code.mdx +translationBlockHashes: + "_intro": 6f7df68c + "Quick start": e0c4fb4d + "Schema": 380909b6 + "Examples": 12f77722 +--- +{/* 生成済みファイル。このディレクトリの code.yaml を編集して `pnpm code-pages:gen` を実行してください。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.7 T2V の API リファレンス。Wan 2.7 のテキストから動画へは、プロンプトのみから 720P または 1080P、2~15 秒の短いビデオを生成します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `wan/wan2.7-t2v` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.7-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式:mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレームの画像URL、または Base64 エンコードされたデータ。I2V モデルでは必須です。画像形式:JPEG、JPG、PNG、BMP、WEBP。解像度:360~2000 ピクセル。ファイルサイズ:最大 10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ) +を指定します。各要素は type と url フィールドを持ちます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大 1)、last_frame(最大 1)、reference_image(最大 10)、 + reference_video(最大 5 クリップ、合計再生時間 \<= 15 秒)、reference_audio(最大 5 クリップ、 + 合計再生時間 \<= 15 秒)、file(最大 1、link とは併用不可)、link(最大 1、file とは併用不可)。 + reference_*/file/link タイプと first_frame/last_frame タイプは、同一リクエスト内で + 同時に使用できません。配列の順序が、プロンプト内でのアセットの参照順序を定義します + (画像 1、ビデオ 1、オーディオ 1、...)。 + + + + メディアアセットのタイプ + + 指定可能な値:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS 一時 URL) + + + + ネガティブプロンプトワードは、ビデオ画面に表示したくないコンテンツを記述するために使用します + + + + テキストプロンプトワード。中国語と英語に対応し、長さは 800 文字以内です +(wan3.0-video では最大 20,000 文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に従って被写体を +'character1'、'character2' などで参照します。例:「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、media 配列内の対応する順序に従ってメディアアセットを +'Image 1'、'Video 1'、'Audio 1' などで参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3 本のビデオ URL の配列。 +入力制限: +- 形式:mp4、mov +- 数量:1~3 本のビデオ +- 単一ビデオの長さ:2~30 秒 +- 単一ファイルサイズ:最大 30MB +- audio_url とは併用不可 +参照再生時間:単一ビデオは最大 5 秒、2 本の場合は各最大 2.5 秒、3 本の場合は比例的に短くなります。 +課金:実際に使用した参照再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。任意。現在サポートされている値:squish、flying、carousel。使用した場合、prompt パラメータは無視されます。 + + + + 呼び出すモデルの ID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントからこれを設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト):モデルがプロンプトの内容に基づいてインテリジェントに判断します +- origin:入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値:`auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル:5 秒または 10 秒 +- wan2.6-t2v、wan2.6-i2v:5 秒、10 秒、または 15 秒 +- wan2.6-r2v:5 秒または 10 秒のみ(15 秒は非対応) +- wan2.7-i2v、wan2.7-t2v:[2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] の整数 +- wan3.0-video:ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は、 + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が 30 秒を超えてはなりません。-1 を指定すると、 + モデルが適切な再生時間を選択するスマート再生時間モードが有効になります + + 範囲:`-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合、解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非対応) +- wan2.7 モデル(i2v、t2v、r2v、videoedit):720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは 1080P) +このプロキシは、resolution と size のどちらも指定されていないビデオ生成リクエストを拒否します。 +解像度ティアが課金レートを決定するためです。 + + 指定可能な値:`480P`、`720P`、`1080P` + + ランダム数値のシード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ 形式のビデオ解像度。対応する解像度はモデルによって異なります。 +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan2.7-t2v/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するのと同じドキュメントです。### 出力 + + + + + + + インテリジェントなリライト後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴う I2V タスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントなリライト後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成された画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 取りうる値: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比。例: 16:9(wan3.0-video タスク) + + + + 画像の解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオの解像度比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、envelope の ROOT で報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこれを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオ URL の有効期限は 24 時間です。保存が必要な場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx b/ja/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx new file mode 100644 index 000000000..e1d103684 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx @@ -0,0 +1,441 @@ +--- +title: "Comfy Router で Wan 2.7 Video Edit を使用する" +description: "Comfy Router 経由で HTTP を使って wan/wan2.7-videoedit を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 2.7 Video Edit" +translationSourceHash: 93e5669b +translationFrom: development/comfy-router/models/wan/wan2-7-videoedit/code.mdx +translationBlockHashes: + "_intro": 47b7d5e3 + "Quick start": 66b5f72c + "Schema": 515068a3 + "Examples": 622d1416 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 2.7 Video Edit の API リファレンス。Wan 2.7 video edit は、テキスト指示に基づいて既存のクリップを書き換え、必要に応じて参照画像でガイドします。 + +## クイックスタート + +[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `wan/wan2.7-videoedit` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan2.7-videoedit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-videoedit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-videoedit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + audio_setting: "origin", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-videoedit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\",\"audio_setting\":\"origin\"}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式はmp3とwavです。reference_video_urlsとは併用できません。 + + + + 先頭フレーム画像のURLまたはBase64エンコードデータ。I2Vモデルでは必須です。画像形式はJPEG、JPG、PNG、BMP、WEBP。解像度は360~2000ピクセル。ファイルサイズは最大10MBです。 + + + + wan2.7およびwan3.0モデル用のメディアアセットリスト。ビデオ生成に使用する参照素材(画像、オーディオ、ビデオ)を指定します。各要素には type と url フィールドが含まれます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、linkとは併用不可)、link(最大1、fileとは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で相互排他的です。配列の順序が、プロンプト内のアセットの参照順序 + (画像1、ビデオ1、オーディオ1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSS一時URL) + + + + ネガティブプロンプト。ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプト。中国語と英語に対応しており、長さは800文字以内です +(wan3.0-videoでは最大20,000文字。制限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用するwan2.6-r2vでは、'character1'、'character2' などを使って、 +参照ビデオの順序に対応する被写体を参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-videoの参照モードでは、'Image 1'、'Video 1'、'Audio 1' などを使って、 +media配列内の対応する順序のメディアアセットを参照します。 + + + + wan2.6-r2vモデル専用の参照ビデオURL。1~3本のビデオURLの配列です。 +入力の制限: +- 形式: mp4、mov +- 本数: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_urlとは併用不可 +参照時の再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合は比例してさらに短くなります。 +課金: 実際に使用した参照の再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。省略可能です。現在対応しているのは squish、flying、carousel です。使用時はpromptパラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Routerが `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Routerの呼び出し元はこれを省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` を直接v1で呼び出す場合は必須であり、受け入れられる表記のenumはそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoeditモデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断します +- origin: 入力ビデオのオリジナルオーディオを強制的に保持します + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの長さ(秒): +- wan2.5モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒は非対応) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 は + モデルが適切な再生時間を選択するスマート再生時間モードを有効にします + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントなリライトを有効にするかどうか。デフォルトはtrueです + + + + 生成されるビデオのアスペクト比。wan2.7およびwan3.0モデル専用です。 +wan2.7モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-videoでは、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080Pのみ(480Pは非対応) +- wan2.7モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルトは1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルトは1080P) +このプロキシは、解像度もサイズも指定されていないビデオ生成リクエストを拒否します。 +これは、解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: 単一ショットのビデオ (デフォルト) +- multi: マルチショットのビデオ + + 指定可能な値: `multi`、`single` + + + + width*height 形式のビデオ解像度。サポートされる解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合 (480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークのロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +`GET /v2/models/wan/wan2.7-videoedit/openapi.json` で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するのと同じドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2Vタスク用のオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスク実行時間 + + + + タスク送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比。例: 16:9(wan3.0-videoタスク) + + + + 画像解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなくエンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなくエンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin" + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保持する必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx b/ja/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx new file mode 100644 index 000000000..a6f33e409 --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Wan 3.0 Video Prime を Comfy Router で使用する" +description: "Comfy Router を通じて HTTP 経由で wan/wan3.0-video-prime を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 3.0 Video Prime" +translationSourceHash: b3fd2952 +translationFrom: development/comfy-router/models/wan/wan3-0-video-prime/code.mdx +translationBlockHashes: + "_intro": ddcfe1dd + "Quick start": efd176ed + "Schema": 550c6895 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video Prime の API リファレンスです。Wan 3.0 Video Prime は Wan 3.0 Video の高品質ティアであり、同じ Router プロンプトおよびメディアスキーマに対して検証されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `wan/wan3.0-video-prime` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video-prime` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video-prime", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video-prime", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video-prime \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなど、基本的な情報を入力します。 + + + + オーディオファイルのダウンロードURL。サポートされる形式: mp3 および wav。reference_video_urls とは併用できません。 + + + + 最初のフレーム画像のURL、または Base64 エンコードされたデータ。I2V モデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000 ピクセル。ファイルサイズ: 最大 10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材(画像、オーディオ、ビデオ)を指定します。 +各要素には type と url フィールドが含まれます。 +サポートされる type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大 1)、last_frame(最大 1)、reference_image(最大 10)、 + reference_video(最大 5 クリップ、合計再生時間 \<= 15 秒)、reference_audio(最大 5 クリップ、 + 合計再生時間 \<= 15 秒)、file(最大 1、link とは併用不可)、link(最大 1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で相互排他的です。配列の順序が、プロンプト内のアセットの参照順 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開 HTTP/HTTPS URL または OSS の一時 URL) + + + + ネガティブプロンプトワードは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプトワード。中国語と英語をサポートし、長さは 800 文字以内 +(wan3.0-video では最大 20,000 文字。上限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に従って被写体を +'character1'、'character2' などで参照します。例: 「Character1 が道端で歌い、Character2 がその横で踊る」 +wan3.0-video の参照モードでは、media 配列内の対応する順序でメディアアセットを +'Image 1'、'Video 1'、'Audio 1' などで参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3 本のビデオURLの配列。 +入力の制限: +- 形式: mp4、mov +- 本数: 1~3 本 +- 単一ビデオの長さ: 2~30 秒 +- 単一ファイルサイズ: 最大 30MB +- audio_url とは併用できません +参照再生時間: 単一ビデオは最大 5 秒、2 本の場合はそれぞれ最大 2.5 秒、3 本の場合はそれに比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトのテンプレート名。任意。現在サポートされているもの: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルの ID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプトの内容に基づいてインテリジェントに判断 +- origin: 入力ビデオのオリジナルオーディオを強制的に保持 + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5 または 10 秒 +- wan2.6-t2v、wan2.6-i2v: 5、10、または 15 秒 +- wan2.6-r2v: 5 または 10 秒のみ(15 秒は非サポート) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は + 入力ビデオの合計再生時間 + 出力ビデオの再生時間が 30 秒を超えてはなりません。-1 を指定すると + モデルが適切な再生時間を選択するスマート再生時間モードになります + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオの比率。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度の階層に基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切な比率を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。サポートされる値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P は非サポート) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルト 1080P) +このプロキシは resolution も size も指定されていないビデオ生成リクエストを拒否します。 +解像度の階層が課金レートを選択するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: シングルショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + 幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P (480*832, 832*480, 624*624)、720P、1080P サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan3.0-video-prime/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する対象となる同一のドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + オーディオ生成を伴うI2VタスクのオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスク完了時間 + + + + 失敗したリクエストに関する詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成済み画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスクの数 + + + + 成功したタスクの数 + + + + タスクの総数 + + + + タスクのステータス + + 指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオの再生時間(秒)(I2Vおよびwan3.0-videoタスク) + + + + 生成されたビデオのフレームレート(wan3.0-videoタスク) + + + + 生成された画像の数(T2IおよびI2Iタスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は0.0(wan3.0-videoタスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-videoタスク) + + + + 生成されたビデオのアスペクト比。例: 16:9(wan3.0-videoタスク) + + + + 画像の解像度(T2IおよびI2Iタスク) + + + + 生成されたビデオの数(T2Vタスク) + + + + 生成されたビデオの再生時間(秒)(T2Vタスク) + + + + ビデオ解像度の比率(T2Vタスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、envelope のルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストに関する詳細情報。`output` の下ではなく、envelope のルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前にこちらを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +ビデオ URL の有効期限は 24 時間です。保存しておく必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wan/wan3-0-video/code.mdx b/ja/development/comfy-router/models/wan/wan3-0-video/code.mdx new file mode 100644 index 000000000..2aef97e9b --- /dev/null +++ b/ja/development/comfy-router/models/wan/wan3-0-video/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy RouterでWan 3.0 Videoを使用する" +description: "Comfy Router経由でHTTPでwan/wan3.0-videoを呼び出すためのPython、TypeScript、cURLスニペット、およびリクエストフィールドと結果の形状" +sidebarTitle: "Wan 3.0 Video" +translationSourceHash: e9c2144b +translationFrom: development/comfy-router/models/wan/wan3-0-video/code.mdx +translationBlockHashes: + "_intro": e7e79c75 + "Quick start": eecace93 + "Schema": 521b4b8d + "Examples": 5ffd46d7 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video の API リファレンスです。Wan 3.0 Video は、プロンプトのみから、または最初と最後のフレーム、参照画像、ビデオ、オーディオを含むメディアリストから生成します。これらはプロンプト内で Image 1、Video 1、Audio 1 として参照します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `wan/wan3.0-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## スキーマ + +### 入力 + + + プロンプトワードなどの基本情報を入力します。 + + + + オーディオファイルのダウンロードURL。対応形式: mp3、wav。reference_video_urls とは併用できません。 + + + + 先頭フレーム画像のURLまたはBase64エンコードデータ。I2Vモデルでは必須です。画像形式: JPEG、JPG、PNG、BMP、WEBP。解像度: 360~2000ピクセル。ファイルサイズ: 最大10MB。 + + + + wan2.7 および wan3.0 モデル用のメディアアセットリスト。ビデオ生成のための参照素材 +(画像、オーディオ、ビデオ)を指定します。各要素は type フィールドと url フィールドを含みます。 +対応する type の値はモデルによって異なります: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大1)、last_frame(最大1)、reference_image(最大10)、 + reference_video(最大5クリップ、合計再生時間 \<= 15秒)、reference_audio(最大5クリップ、 + 合計再生時間 \<= 15秒)、file(最大1、link とは併用不可)、link(最大1、file とは + 併用不可)。reference_*/file/link タイプと first_frame/last_frame タイプは + 同一リクエスト内で相互排他的です。配列の順序がプロンプト内のアセットの参照順序 + (Image 1、Video 1、Audio 1、...)を定義します。 + + + + メディアアセットのタイプ + + 指定可能な値: `first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + メディアファイルのURL(公開HTTP/HTTPS URLまたはOSS一時URL) + + + + ネガティブプロンプトワードは、ビデオ画面に表示したくない内容を記述するために使用します + + + + テキストプロンプトワード。中国語と英語に対応、長さは800文字以内 +(wan3.0-video では最大20,000文字。上限を超えた内容は切り捨てられます)。 +複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に従って被写体を +'character1'、'character2' などで参照します。例: 「Character1 sings on the roadside, Character2 dances beside it」 +wan3.0-video の参照モードでは、media 配列内の対応する順序でメディアアセットを +'Image 1'、'Video 1'、'Audio 1' などで参照します。 + + + + wan2.6-r2v モデル専用の参照ビデオURL。1~3本のビデオURLの配列です。 +入力制限: +- 形式: mp4、mov +- 本数: 1~3本 +- 単一ビデオの長さ: 2~30秒 +- 単一ファイルサイズ: 最大30MB +- audio_url とは併用不可 +参照再生時間: 単一ビデオは最大5秒、2本の場合は各最大2.5秒、3本の場合は比例して短くなります。 +課金: 実際に使用された参照再生時間に基づきます。 + + + + ビデオエフェクトテンプレート名。任意。現在サポート: squish、flying、carousel。使用時は prompt パラメータは無視されます。 + + + + 呼び出すモデルのID。このコンポーネントでは制約されません: Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し側は省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への v1 直接呼び出しでは必ず指定する必要があり、受け入れられる表記の列挙はそのオペレーション自身のコンポーネント `WanVideoGenerationRequest` にあります。 + + + + ビデオ処理パラメータ + + + + ビデオにオーディオを追加するかどうか + + + + wan2.7-videoedit モデル用のビデオオーディオ設定。 +- auto(デフォルト): モデルがプロンプト内容に基づいてインテリジェントに判断 +- origin: 入力ビデオのオリジナルオーディオを強制的に保持 + + 指定可能な値: `auto`、`origin` + + + + 生成されるビデオの再生時間(秒): +- wan2.5 モデル: 5秒または10秒 +- wan2.6-t2v、wan2.6-i2v: 5秒、10秒、または15秒 +- wan2.6-r2v: 5秒または10秒のみ(15秒はサポートなし) +- wan2.7-i2v、wan2.7-t2v: [2, 15] の整数 +- wan2.7-r2v、wan2.7-videoedit: [2, 10] の整数 +- wan3.0-video: ビデオ入力なしの場合は [2, 30] の整数。ビデオ入力ありの場合は入力 + ビデオの合計再生時間 + 出力ビデオの再生時間が30秒を超えてはなりません。-1 は + モデルが適切な再生時間を選択するスマート再生時間モードを有効にします + + 範囲: `-1` ~ `30` + + + + プロンプトのインテリジェント書き換えを有効にするかどうか。デフォルトは true + + + + 生成されるビデオのアスペクト比率。wan2.7 および wan3.0 モデル専用。 +wan2.7 モデルでは、指定しない場合は解像度ティアに基づいてデフォルトが決まります。 +wan3.0-video では、adaptive(デフォルト)が入力メディアの比率と意図に基づいて +適切なアスペクト比率を自動的に推奨します。 + + 指定可能な値: `adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 解像度レベル。対応する値はモデルによって異なります: +- wan2.5-i2v-preview: 480P、720P、1080P +- wan2.6-i2v: 720P、1080P のみ(480P はサポートなし) +- wan2.7 モデル(i2v、t2v、r2v、videoedit): 720P、1080P(デフォルト 1080P) +- wan3.0-video、wan3.0-video-prime: 480P、720P、1080P(上流のデフォルト 1080P) +このプロキシは resolution と size のどちらも指定しないビデオ生成リクエストを +拒否します。これは解像度ティアが課金レートを決定するためです。 + + 指定可能な値: `480P`、`720P`、`1080P` + + 乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します。 + + 範囲: `0` から `2147483647` + + + + インテリジェントなマルチレンズ制御。prompt_extend が有効な場合にのみ機能します。 +wan2.6 および wan2.7-r2v モデル用。 +- single: 単一ショットビデオ(デフォルト) +- multi: マルチショットビデオ + + 指定可能な値: `multi`, `single` + + + + ビデオの解像度を width*height 形式で指定します。対応する解像度はモデルによって異なります: +wan2.5 T2V の場合: 480P(480*832、832*480、624*624)、720P、1080P の各サイズ +wan2.6 T2V/R2V の場合(480P なし): + 720P: 1280*720、720*1280、960*960、1088*832、832*1088 + 1080P: 1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + ウォーターマークロゴを追加するかどうか。ウォーターマークは右下隅に配置されます + + +Router が `GET /v2/models/wan/wan3.0-video/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用する同一のドキュメントです。### 出力 + + + + + + + インテリジェントな書き換え後の実際のプロンプト(ビデオタスク用) + + + + 音声生成を伴う I2V タスクのオーディオURL + + + + 失敗したリクエストのエラーコード(リクエストが成功した場合は返されません) + + + + タスクの完了時間 + + + + 失敗したリクエストの詳細情報(リクエストが成功した場合は返されません) + + + + オリジナルの入力プロンプト(ビデオタスク用) + + + + 画像生成タスクのタスク結果のリスト + + + + インテリジェントな書き換え後の実際のプロンプト(有効な場合) + + + + 画像のエラーコード(一部のタスクが失敗した場合に返されます) + + + + 画像のエラー情報(一部のタスクが失敗した場合に返されます) + + + + オリジナルの入力プロンプト + + + + 生成された画像のURLアドレス + + + + タスクの実行時間 + + + + タスクの送信時間 + + + + タスクID + + + + 画像生成タスクのタスク結果の統計 + + + + 失敗したタスク数 + + + + 成功したタスク数 + + + + タスクの総数 + + + + タスクステータス + + 取りうる値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間 + + + + 一意のリクエスト識別子 + + + + 出力情報の統計。成功した結果のみがカウントされます + + + + ビデオ解像度レベル(I2V および wan3.0-video タスク) + + + + 生成されたビデオの再生時間(秒)(I2V および wan3.0-video タスク) + + + + 生成されたビデオのフレームレート(wan3.0-video タスク) + + + + 生成された画像の数(T2I および I2I タスク) + + + + 入力ビデオの再生時間(秒)。ビデオ入力がない場合は 0.0(wan3.0-video タスク) + + + + 出力ビデオの再生時間(秒)(wan3.0-video タスク) + + + + 生成されたビデオのアスペクト比(例: 16:9)(wan3.0-video タスク) + + + + 画像解像度(T2I および I2I タスク) + + + + 生成されたビデオの数(T2V タスク) + + + + 生成されたビデオの再生時間(秒)(T2V タスク) + + + + ビデオ解像度の比率(T2V タスク) + + + + 失敗したリクエストのエラーコード。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。 + + + + 失敗したリクエストの詳細情報。`output` の下ではなく、エンベロープのルートで報告されます(リクエストが成功した場合は返されません)。`output.message` にフォールバックする前に、これを確認してください。 + + +## 例 + +### 入力 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 出力 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +ビデオの URL は 24 時間有効です。保持する必要がある場合は、速やかにビデオをダウンロードしてください。 + + diff --git a/ja/development/comfy-router/models/wavespeed/flashvsr/code.mdx b/ja/development/comfy-router/models/wavespeed/flashvsr/code.mdx new file mode 100644 index 000000000..037551282 --- /dev/null +++ b/ja/development/comfy-router/models/wavespeed/flashvsr/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router で Flashvsr を使用する" +description: "Comfy Router 経由で wavespeed/flashvsr を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Flashvsr" +translationSourceHash: 098838c2 +translationFrom: development/comfy-router/models/wavespeed/flashvsr/code.mdx +translationBlockHashes: + "_intro": 9f6b0669 + "Quick start": bf2f0a80 + "Schema": 0dace1f8 + "Examples": f0f03046 +--- +{/* GENERATED FILE. Generated from router-schemas/wavespeed/flashvsr.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`wavespeed/flashvsr` の API Reference。Comfy Router が WaveSpeed から提供します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `wavespeed/flashvsr` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wavespeed/flashvsr` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/flashvsr", + { + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/flashvsr", { + duration: 4, + target_resolution: "1080p", + video: "https://samplelib.com/mp4/sample-30s.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/flashvsr \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"target_resolution\": \"1080p\", \"video\": \"https://samplelib.com/mp4/sample-30s.mp4\"}" +``` + + +## スキーマ + +### 入力 + + + ビデオの再生時間(秒) + + + + アップスケール先の解像度。 + + 指定可能な値: `720p`, `1080p`, `2k`, `4k` + + + + アップスケールするビデオ。ビデオファイルへの URL、または base64 エンコードされたビデオを指定できます。 + + +これは Router が `GET /v2/models/wavespeed/flashvsr/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + WavespeedAI 独自のエンベロープステータスコードで、HTTP ステータスを反映します(このスキーマが記述するドキュメントでは 200)。Wavespeed は一部の失敗をトランスポートステータスではなくここで報告します。 + + + + + + + + Wavespeed が予測を作成した時刻の ISO-8601 タイムスタンプ。 + + + + Wavespeed の自由記述形式の失敗理由。存在しない場合は空文字列。実際に失敗した予測は、このドキュメントではなく Comfy Router エラーとして Router の呼び出し元に届きます。 + + + + Router が送信してポーリングした予測に対する Wavespeed の識別子。 + + + + 予測の実行に使用された Wavespeed モデル ID。 + + + + 完了した生成物。Router が返すドキュメントでは存在し、空ではありません。このリストが結果そのものです。各要素は生成されたコンテンツへの URL(`wavespeed/flashvsr` では MP4、2 つのアップスケーラーでは画像)か、リクエストで `enable_base64_output` を設定した場合の 2 つの画像 ID については base64 エンコードされたバイト列そのものです。リンクは Wavespeed 独自のもので、有効期限があります。 + + + + Wavespeed が表記したとおりの予測のターミナル状態。ここでは enum に限定されていません。Router は値をそのまま転送し、ポーリングの分類器は比較前に小文字化するため、成功は `completed`、`succeeded`、`success`、`done` のいずれの形でも、大文字小文字を問わず正当に到着し得ます。 + + + + Wavespeed 独自のタイミング測定値。 + + + + 推論時間(ミリ秒)。Wavespeed の数値であり、Comfy の課金時間ではありません。 + + + + 予測に対する Wavespeed 独自のリンク。 + + + + Router がポーリングした予測結果の URL。 + + + + エンベロープのステータスメッセージ。例えば `success`。 + + +## 例 + +### 入力 + +```json +{ + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4" +} +``` + +### 出力 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/flashvsr/upscaled.mp4" + ], + "status": "completed", + "timings": { + "inference": 128000 + } + }, + "message": "success" +} +``` + + + diff --git a/ja/development/comfy-router/models/wavespeed/seedvr2/code.mdx b/ja/development/comfy-router/models/wavespeed/seedvr2/code.mdx new file mode 100644 index 000000000..517b4eb8d --- /dev/null +++ b/ja/development/comfy-router/models/wavespeed/seedvr2/code.mdx @@ -0,0 +1,179 @@ +--- +title: "Comfy Router で Seedvr 2 を使用する" +description: "Comfy Router 経由で wavespeed/seedvr2 を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンス。" +sidebarTitle: "Seedvr 2" +translationSourceHash: 3458a74d +translationFrom: development/comfy-router/models/wavespeed/seedvr2/code.mdx +translationBlockHashes: + "_intro": 538f574f + "Quick start": ea636f07 + "Schema": a04647c3 + "Examples": f2be022d +--- +{/* GENERATED FILE. Generated from router-schemas/wavespeed/seedvr2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`wavespeed/seedvr2` の API リファレンスです。Comfy Router が WaveSpeed から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `wavespeed/seedvr2` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wavespeed/seedvr2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/seedvr2", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/seedvr2", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/seedvr2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## スキーマ + +### 入力 + + + 有効にすると、出力は URL ではなく BASE64 文字列にエンコードされます。 + + + + アップスケールする画像の URL。 + + + + 出力画像のフォーマット。 + + 取り得る値: `jpeg`、`png`、`webp` + + + + 出力画像の目標解像度。 + + 取り得る値: `2k`、`4k`、`8k` + + +Router が `GET /v2/models/wavespeed/seedvr2/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に参照するドキュメントと同じものです。 + +### 出力 + + + WavespeedAI 独自のエンベロープステータスコードで、HTTP ステータスを反映します (このスキーマが記述するドキュメントでは 200)。Wavespeed は一部の失敗をトランスポートステータスではなくここで報告します。 + + + + + + + + Wavespeed が予測を作成した日時の ISO-8601 タイムスタンプ。 + + + + Wavespeed の自由記述による失敗理由で、失敗がない場合は空文字列です。実際に失敗した予測は、このドキュメントとしてではなく Comfy Router のエラーとして Router の呼び出し元に届きます。 + + + + Router が送信しポーリングした予測に対する Wavespeed の識別子。 + + + + 予測の実行に使用された Wavespeed のモデル id。 + + + + 生成完了した出力。Router が返すドキュメントでは存在し、空ではありません。このリストが結果そのものです。各要素は生成されたコンテンツへの URL (`wavespeed/flashvsr` では MP4、2 つのアップスケーラーでは画像) です。また、2 つの画像 id でリクエストが `enable_base64_output` を設定した場合は、base64 エンコードされたバイト列そのものになります。リンクは Wavespeed 自身のもので、期限切れになります。 + + + + Wavespeed が表記した予測のターミナル状態。ここでは enum に絞り込まれていません。Router は値をそのまま転送し、ポーリングの分類器は比較前に小文字化するため、成功は `completed`、`succeeded`、`success`、`done` のいずれかで、大文字小文字を問わず届くことがあります。 + + + + Wavespeed 自身による処理時間の測定値。 + + + + 推論時間 (ミリ秒)。Comfy の課金ではなく Wavespeed の数値です。 + + + + Wavespeed 自身の予測へのリンク。 + + + + Router がポーリングした予測結果の URL。 + + + + エンベロープのステータスメッセージ。例えば `success`。 + + +## 例 + +### 入力 + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 出力 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/seedvr2/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 4200 + } + }, + "message": "success" +} +``` + + diff --git a/ja/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx b/ja/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx new file mode 100644 index 000000000..2dfd62965 --- /dev/null +++ b/ja/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx @@ -0,0 +1,181 @@ +--- +title: "Comfy Router で Ultimate Image Upscaler を使用する" +description: "Comfy Router 経由で wavespeed/ultimate-image-upscaler を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Ultimate Image Upscaler" +translationSourceHash: 958a2265 +translationFrom: development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx +translationBlockHashes: + "_intro": 45710ad8 + "Quick start": 0df9b0ec + "Schema": 96a7a47b + "Examples": c8d9b760 +--- + +{/* GENERATED FILE. Generated from router-schemas/wavespeed/ultimate-image-upscaler.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`wavespeed/ultimate-image-upscaler` の API リファレンスです。Comfy Router が WaveSpeed から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `wavespeed/ultimate-image-upscaler` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/ultimate-image-upscaler", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/ultimate-image-upscaler", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## スキーマ + +### 入力 + + + 有効にすると、出力は URL ではなく BASE64 文字列にエンコードされます。 + + + + アップスケールする画像の URL。 + + + + 出力画像のフォーマット。 + + 指定可能な値: `jpeg`、`png`、`webp` + + + + 出力画像の目標解像度。 + + 指定可能な値: `2k`、`4k`、`8k` + + +Router が `GET /v2/models/wavespeed/ultimate-image-upscaler/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + WavespeedAI 独自のエンベロープステータスコードで、HTTP ステータスを反映します(このスキーマが記述するドキュメントでは 200)。Wavespeed は一部の失敗をトランスポートステータスではなくここで報告します。 + + + + + + + + Wavespeed が予測を作成した日時の ISO-8601 タイムスタンプ。 + + + + Wavespeed の自由記述による失敗理由で、存在しない場合は空文字列です。実際に失敗した予測は、このドキュメントとしてではなく Comfy Router のエラーとして Router の呼び出し元に届きます。 + + + + Router が送信してポーリングした予測に対する Wavespeed の識別子。 + + + + 予測の実行に使用された Wavespeed モデル ID。 + + + + 完成した生成物。Router が返すドキュメントでは存在し、空ではありません。このリストが結果そのものです。各要素は生成されたコンテンツへの URL(`wavespeed/flashvsr` では MP4、2 つのアップスケーラーでは画像)です。あるいは、リクエストで `enable_base64_output` を設定した場合、2 つの画像 ID については base64 エンコードされたバイト列そのものになります。これらのリンクは Wavespeed 自身のものであり、有効期限があります。 + + + + Wavespeed が表記したとおりの予測のターミナル状態。ここでは enum に絞り込まれていません。Router は値をそのまま転送し、ポーリングの分類器は比較の前に小文字化するため、成功は `completed`、`succeeded`、`success`、`done` のいずれとしても、大文字小文字を問わず正規に到着し得ます。 + + + + Wavespeed 独自の所要時間測定値。 + + + + ミリ秒単位の推論時間。Comfy の課金ではなく Wavespeed の数値です。 + + + + 予測に対する Wavespeed 独自のリンク。 + + + + Router がポーリングした予測結果の URL。 + + + + エンベロープのステータスメッセージ(例: `success`)。 + + +## 例 + +### 入力 + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 出力 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/ultimate-image-upscaler/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 9100 + } + }, + "message": "success" +} +``` + + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx new file mode 100644 index 000000000..beeb2f323 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router で Grok Imagine Image 2.0 を使用する" +description: "Comfy Router 経由で xai/grok-imagine-image-2.0 を呼び出します: endpoint、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Grok Imagine Image 2.0" +translationSourceHash: 8bcbfc88 +translationFrom: development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx +translationBlockHashes: + "_intro": df08f63e + "Quick start": 99cca79e + "Schema": 9a41423a + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-2.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-2.0` の API リファレンスです。このモデルは xAI から Comfy Router を通じて提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK (`pip install comfy-sdk`、`npm install @comfyorg/sdk`) を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `xai/grok-imagine-image-2.0` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-2.0", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-2.0", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 入力 + + + 生成される画像のアスペクト比。デフォルトは auto で、プロンプトに最適な比率が自動的に選択されます。 + + 指定可能な値: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 使用するモデル。対応: grok-imagine-image(デフォルト)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。非推奨の -beta ID は GA モデルへのエイリアスです。 + + + + 生成する画像の数 + + 範囲: `1` から `10` + + + + 画像生成のためのプロンプト + + + + 出力画像の品質。grok-imagine-image-2.0 では価格ティアを選択します(low/medium。デフォルトは medium)。その他のモデルは現在これを無視します。 + + 指定可能な値: `low`, `medium`, `high` + + + + 生成される画像の解像度。デフォルトは 1k。 + + 指定可能な値: `1k`, `2k` + + + + 画像を返す際のレスポンス形式。url または b64_json を指定できます。Comfy Router(`POST /v2/models/xai/{model}`)は、いずれの場合も画像結果を再ホストされた URL として提供するため、送信リクエストではこれを `url` に強制変換します。この `/proxy/` ルートでは記述どおりに扱われます。 + + 指定可能な値: `url`, `b64_json` + + + + 画像のサイズ(未対応) + + + + 画像のスタイル(未対応) + + + + エンドユーザーを表す一意の識別子。xAI が不正利用の監視と検出に役立てることができます + + +Router が `GET /v2/models/xai/grok-imagine-image-2.0/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しの検証に使用するのと同じドキュメントです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、ブロック理由が含まれます + + + + 生成された画像オブジェクトのリスト + + + + 生成された画像を jpeg エンコーディングで表した base64 エンコード文字列(response_format が b64_json の場合) + + + + 生成された画像の MIME タイプ(例: image/png、image/jpeg、image/webp)。 + + + + 生成された画像への URL(response_format が url の場合) + + + + 画像生成リクエストの使用状況情報 + + + + このリクエストの正確なコスト(USD ティック単位。10,000,000,000 ティック = 1 USD) + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx new file mode 100644 index 000000000..9294529e1 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx @@ -0,0 +1,185 @@ +--- +title: "Grok Imagine Image Pro を Comfy Router で使用する" +description: "Comfy Router 経由で xai/grok-imagine-image-pro を呼び出す: エンドポイント、リクエストの形状、Router が返すレスポンス。" +sidebarTitle: "Grok Imagine Image Pro" +translationSourceHash: c9301ace +translationFrom: development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx +translationBlockHashes: + "_intro": 2d3503a0 + "Quick start": 25496f31 + "Schema": 6f4e60ac + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +xAI から Comfy Router によって提供される `xai/grok-imagine-image-pro` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは同じ呼び出しを raw HTTP で行うものです。 + +**モデル ID:** `xai/grok-imagine-image-pro` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のアスペクト比。デフォルトは auto で、プロンプトに最適な比率が自動的に選択されます。 + + 指定可能な値: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 使用するモデル。対応: grok-imagine-image(デフォルト)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。非推奨の -beta ID は GA モデルへのエイリアスです。 + + + + 生成する画像の数 + + 範囲: `1` から `10` + + + + 画像生成のためのプロンプト + + + + 出力画像の品質。grok-imagine-image-2.0 では価格ティアを選択します(low/medium、デフォルトは medium)。その他のモデルでは現在無視されます。 + + 指定可能な値: `low`, `medium`, `high` + + + + 生成される画像の解像度。デフォルトは 1k。 + + 指定可能な値: `1k`, `2k` + + + + 画像を返す際のレスポンス形式。url または b64_json を指定できます。Comfy Router(`POST /v2/models/xai/{model}`)は、いずれの場合も画像結果を再ホストされた URL として提供するため、送信リクエストではこれを `url` に強制変換します。この `/proxy/` ルートでは記述どおりに扱われます。 + + 指定可能な値: `url`, `b64_json` + + + + 画像のサイズ(未対応) + + + + 画像のスタイル(未対応) + + + + エンドユーザーを表す一意の識別子。xAI が不正利用の監視と検出を行うのに役立ちます + + +Router が `GET /v2/models/xai/grok-imagine-image-pro/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、ブロック理由を含みます + + + + 生成された画像オブジェクトのリスト + + + + 生成された画像を jpeg エンコーディングで表した base64 エンコード文字列(response_format が b64_json の場合) + + + + 生成された画像の MIME タイプ(例: image/png、image/jpeg、image/webp)。 + + + + 生成された画像への URL(response_format が url の場合) + + + + 画像生成リクエストの使用量情報 + + + + このリクエストの正確なコスト(USD ティック単位、10,000,000,000 ティック = 1 USD) + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx new file mode 100644 index 000000000..a178fee33 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router で Grok Imagine Image Quality を使用する" +description: "Comfy Router 経由で xai/grok-imagine-image-quality を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて。" +sidebarTitle: "Grok Imagine Image Quality" +translationSourceHash: a2c395de +translationFrom: development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx +translationBlockHashes: + "_intro": db3b72ef + "Quick start": 43082ab0 + "Schema": ddaa8685 + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-quality.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-quality` の API リファレンス。xAI から Comfy Router によって提供されています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL スニペットは同じ呼び出しを生の HTTP で行うものです。 + +**モデル ID:** `xai/grok-imagine-image-quality` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-quality` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-quality", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-quality", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-quality \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のアスペクト比。デフォルトは auto で、プロンプトに最適な比率が自動的に選択されます。 + + 指定可能な値: `1:1`、`3:4`、`4:3`、`9:16`、`16:9`、`2:3`、`3:2`、`9:19.5`、`19.5:9`、`9:20`、`20:9`、`1:2`、`2:1`、`auto` + + + + 使用するモデル。対応: grok-imagine-image(デフォルト)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。非推奨の -beta ID は GA モデルにエイリアスされます。 + + + + 生成する画像の数 + + 範囲: `1` から `10` + + + + 画像生成のためのプロンプト + + + + 出力画像の品質。grok-imagine-image-2.0 では価格ティア(low/medium。デフォルトは medium)を選択します。その他のモデルは現在この項目を無視します。 + + 指定可能な値: `low`、`medium`、`high` + + + + 生成される画像の解像度。デフォルトは 1k。 + + 指定可能な値: `1k`、`2k` + + + + 画像を返す際のレスポンス形式。url または b64_json を指定できます。Comfy Router(`POST /v2/models/xai/{model}`)は、いずれの場合も画像結果を再ホストされた URL として提供するため、送信リクエストではこれを `url` に強制変換します。この `/proxy/` ルートでは、記述どおりの値が尊重されます。 + + 指定可能な値: `url`、`b64_json` + + + + 画像のサイズ(非対応) + + + + 画像のスタイル(非対応) + + + + エンドユーザーを表す一意の識別子。xAI による監視と不正利用の検出に役立ちます + + +Router が `GET /v2/models/xai/grok-imagine-image-quality/openapi.json` で提供するスキーマから生成されており、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、ブロック理由が含まれます + + + + 生成された画像オブジェクトのリスト + + + + 生成された画像を jpeg エンコーディングで表現した base64 エンコード文字列(response_format が b64_json の場合) + + + + 生成された画像の MIME タイプ(例: image/png、image/jpeg、image/webp)。 + + + + 生成された画像への url(response_format が url の場合) + + + + 画像生成リクエストの使用状況情報 + + + + このリクエストの正確なコスト(USD ticks 単位。10,000,000,000 ticks = 1 USD) + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-image/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-image/code.mdx new file mode 100644 index 000000000..ece66fbb4 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-image/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router で Grok Imagine Image を使う" +description: "Comfy Router 経由で xai/grok-imagine-image を呼び出す: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Grok Imagine Image" +translationSourceHash: dc887d63 +translationFrom: development/comfy-router/models/xai/grok-imagine-image/code.mdx +translationBlockHashes: + "_intro": f267d74f + "Quick start": 564ff767 + "Schema": b3c91ddc + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +xAI が Comfy Router を通じて提供する `xai/grok-imagine-image` の API リファレンスです。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行うものです。 + +**モデル ID:** `xai/grok-imagine-image` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## スキーマ + +### 入力 + + + 生成される画像のアスペクト比。デフォルトは auto で、プロンプトに最適な比率が自動的に選択されます。 + + 取り得る値: `1:1`、`3:4`、`4:3`、`9:16`、`16:9`、`2:3`、`3:2`、`9:19.5`、`19.5:9`、`9:20`、`20:9`、`1:2`、`2:1`、`auto` + + + + 使用するモデル。対応: grok-imagine-image(デフォルト)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。非推奨の -beta ID は、それぞれの GA モデルのエイリアスとして扱われます。 + + + + 生成する画像の数 + + 範囲: `1` から `10` + + + + 画像生成のためのプロンプト + + + + 出力画像の品質。grok-imagine-image-2.0 では、これが価格ティアを選択します(low/medium。デフォルトは medium)。その他のモデルは現在のところこれを無視します。 + + 取り得る値: `low`、`medium`、`high` + + + + 生成される画像の解像度。デフォルトは 1k。 + + 取り得る値: `1k`、`2k` + + + + 画像を返す際のレスポンス形式。url または b64_json を指定できます。Comfy Router(`POST /v2/models/xai/{model}`)は、いずれの場合も画像結果を再ホストされた URL として提供するため、送信リクエストではこれを `url` に強制変換します。この `/proxy/` ルートでは記述されたとおりに扱われます。 + + 取り得る値: `url`、`b64_json` + + + + 画像のサイズ(サポートされていません) + + + + 画像のスタイル(サポートされていません) + + + + エンドユーザーを表す一意の識別子。xAI が監視や不正利用の検出に役立てることができます + + +Router が `GET /v2/models/xai/grok-imagine-image/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、そのブロック理由が含まれます + + + + 生成された画像オブジェクトのリスト + + + + 生成された画像を jpeg エンコーディングで表した base64 エンコード文字列(response_format が b64_json の場合) + + + + 生成された画像の MIME タイプ(例: image/png、image/jpeg、image/webp)。 + + + + 生成された画像への URL(response_format が url の場合) + + + + 画像生成リクエストの使用状況情報 + + + + このリクエストの正確なコストを USD ティックで表したもの(10,000,000,000 ティック = 1 USD) + + +## 例 + +### 入力 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 出力 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx new file mode 100644 index 000000000..7e1746612 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx @@ -0,0 +1,199 @@ +--- +title: "Comfy Router で Grok Imagine Video 1.5 Preview を使う" +description: "Comfy Router 経由で xai/grok-imagine-video-1.5-preview を呼び出します: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Grok Imagine Video 1.5 Preview" +translationSourceHash: 04ff660a +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx +translationBlockHashes: + "_intro": 6ab2a8c5 + "Quick start": 66aa1c97 + "Schema": d4972c90 + "Examples": 53c80746 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/xai/grok-imagine-video-1.5-preview.json から生成されました。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video-1.5-preview` の API リファレンス。Comfy Router が xAI から提供しています。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。 + +**モデル ID:** `xai/grok-imagine-video-1.5-preview` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5-preview", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5-preview", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるビデオのアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + ビデオの再生時間(秒)。範囲 [1, 15]。デフォルトは 8。 + + 範囲: `1` から `15` + + + + xAI エンドポイント用の入力画像オブジェクト + + + + 画像入力のタイプ + + 指定可能な値: `image_url` + + + + 入力画像の URL(公開 URL または base64 エンコードされたデータ URI) + + + + 使用するモデル。対応: grok-imagine-video(デフォルト)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。非推奨の grok-imagine-video-beta ID は grok-imagine-video のエイリアスです。 + + + + 生成されたビデオの任意の出力先 + + + + ビデオ生成用のプロンプト。最大 4,096 文字。 + + + + ビデオ生成を誘導する 1 つ以上の参照画像(参照から動画モード)。image とは同時に指定できません。Router は application/json のみを転送し、このオブジェクトも XAIImageObject も file_id を受け付けないため、このルートではファイルベースの画像入力はサポートされません。 + + + + 参照画像の URL。HTTPS URL(公開)または base64 エンコードされたデータ URL(例: data:image/jpeg;base64,...)をサポートします。 + + + + 出力ビデオの解像度 + + + + 出力ビデオのサイズ + + + + エンドユーザーを表す一意の識別子 + + +これは Router が `GET /v2/models/xai/grok-imagine-video-1.5-preview/openapi.json` で提供するスキーマから生成されたものであり、リクエストがプロバイダーに到達する前に呼び出しの検証に使用されるドキュメントと同じものです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、そのブロック理由が含まれます + + + + ビデオの生成に使用されたモデル + + + + 遅延リクエストのステータス: 「pending」または「done」 + + 指定可能な値: `pending`、`done` + + + + ビデオ生成リクエストの使用情報 + + + + このリクエストのコストを USD ティックで表したもの。1 米セントは 100,000,000 ティックに等しく、1 米ドルは 10,000,000,000 ティックに等しくなります。 + + + + xAI によって生成されたビデオ + + + + 生成されたビデオの再生時間(秒) + + + + モデルによって生成されたビデオがモデレーションルールに準拠しているかどうか + + + + 生成されたビデオのダウンロード URL。Router はビデオを Comfy ストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間の署名が付き、23 時間のメモから再生されるため、後でポーリングすると残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかった場合、このフィールドには代わりに xAI 自身の短命な URL が保持されます。NULLABLE: `url` が空の成功は、生成が完了したことを意味しません。いずれの場合もリンクは失効するため、URL を保存するのではなくビデオをダウンロードしてください。 + + +## 例 + +### 入力 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 出力 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx new file mode 100644 index 000000000..5f334f974 --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx @@ -0,0 +1,199 @@ +--- +title: "Comfy Router で Grok Imagine Video 1.5 を使用する" +description: "Comfy Router 経由で xai/grok-imagine-video-1.5 を呼び出す方法: エンドポイント、リクエストの形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Grok Imagine Video 1.5" +translationSourceHash: 628498a9 +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx +translationBlockHashes: + "_intro": 9cd89e4e + "Quick start": 041f88be + "Schema": 7567f6f2 + "Examples": 53c80746 +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-video-1.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video-1.5` の API リファレンスです。xAI から Comfy Router によって提供されます。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しています。cURL のスニペットは、同じ呼び出しを raw HTTP で実行するものです。 + +**モデル ID:** `xai/grok-imagine-video-1.5` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるビデオのアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + ビデオの再生時間(秒)。範囲 [1, 15]。デフォルト 8。 + + 範囲: `1` ~ `15` + + + + xAI エンドポイント用の入力画像オブジェクト + + + + 画像入力のタイプ + + 指定可能な値: `image_url` + + + + 入力画像の URL(公開 URL または base64 エンコードされた data URI) + + + + 使用するモデル。対応: grok-imagine-video(デフォルト)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。非推奨の grok-imagine-video-beta id は grok-imagine-video にエイリアスされます。 + + + + 生成済みビデオのオプションの出力先 + + + + ビデオ生成のプロンプト。最大 4,096 文字。 + + + + ビデオ生成を導くための 1 つ以上の参照画像(参照から動画モード)。image とは同時に使用できません。Router は application/json のみを転送し、このオブジェクトも XAIImageObject も file_id を受け付けないため、このルートではファイルベースの画像入力はサポートされません。 + + + + 参照画像の URL。HTTPS URL(公開)または base64 エンコードされた data URL(例: data:image/jpeg;base64,...)をサポートします。 + + + + 出力ビデオの解像度 + + + + 出力ビデオのサイズ + + + + エンドユーザーを表す一意の識別子 + + +これは Router が `GET /v2/models/xai/grok-imagine-video-1.5/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、ブロック理由を含みます + + + + ビデオの生成に使用されたモデル + + + + 遅延リクエストのステータス: "pending" または "done" + + 指定可能な値: `pending`、`done` + + + + ビデオ生成リクエストの使用量情報 + + + + USD ticks で表したこのリクエストのコスト。1 米国セントは 100,000,000 ticks、つまり 1 米国ドルは 10,000,000,000 ticks です。 + + + + xAI によって生成されたビデオ + + + + 生成されたビデオの再生時間(秒) + + + + モデルによって生成されたビデオがモデレーションルールを遵守しているかどうか + + + + 生成されたビデオのダウンロード URL。Router はビデオを Comfy ストレージに再ホストし、このフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間で署名され、23 時間のメモから再生されるため、後のポーリングでは残り 1 時間程度の URL が返されることがあります。再ホストを実行できなかった場合、このフィールドには xAI 自身の短命な URL がそのまま残ります。NULLABLE: `url` が空の成功は完了した生成ではありません。いずれの場合もリンクは失効するため、URL を保存するのではなくビデオをダウンロードしてください。 + + +## 例 + +### 入力 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 出力 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + diff --git a/ja/development/comfy-router/models/xai/grok-imagine-video/code.mdx b/ja/development/comfy-router/models/xai/grok-imagine-video/code.mdx new file mode 100644 index 000000000..57d7aa9fb --- /dev/null +++ b/ja/development/comfy-router/models/xai/grok-imagine-video/code.mdx @@ -0,0 +1,199 @@ +--- +title: "Comfy Router で Grok Imagine Video を使用する" +description: "Comfy Router 経由で xai/grok-imagine-video を呼び出します。エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。" +sidebarTitle: "Grok Imagine Video" +translationSourceHash: 81ba818e +translationFrom: development/comfy-router/models/xai/grok-imagine-video/code.mdx +translationBlockHashes: + "_intro": aaeed1e5 + "Quick start": 170d6503 + "Schema": 8371176e + "Examples": 1085f4b8 +--- +{/* 生成済みファイル。`pnpm code-pages:gen` により router-schemas/xai/grok-imagine-video.json から生成されています。 */} + +import RouterCodeFooter from "/snippets/ja/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video` の API リファレンスです。xAI 提供のモデルを Comfy Router が配信します。 + +## クイックスタート + +[Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`)を使用しており、cURL のスニペットは同じ呼び出しを生の HTTP で実行します。 + +**モデル ID:** `xai/grok-imagine-video` + +**エンドポイント:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## スキーマ + +### 入力 + + + 生成されるビデオのアスペクト比 + + 指定可能な値: `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + ビデオの再生時間(秒)。範囲 [1, 15]。デフォルトは 8。 + + 範囲: `1` から `15` + + + + xAI エンドポイント用の入力画像オブジェクト + + + + 画像入力のタイプ + + 指定可能な値: `image_url` + + + + 入力画像の URL(公開 URL または base64 エンコードされたデータ URI) + + + + 使用するモデル。対応: grok-imagine-video(デフォルト)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。非推奨の grok-imagine-video-beta ID は grok-imagine-video のエイリアスです。 + + + + 生成されるビデオの任意の出力先 + + + + ビデオ生成のためのプロンプト。最大 4,096 文字。 + + + + ビデオ生成を導くための 1 つ以上の参照画像(参照から動画モード)。image とは同時に使用できません。Router は application/json のみを転送し、このオブジェクトも XAIImageObject も file_id を受け付けないため、このルートではファイルベースの画像入力はサポートされません。 + + + + 参照画像の URL。HTTPS URL(公開)または base64 エンコードされたデータ URL(例: data:image/jpeg;base64,...)をサポートします。 + + + + 出力ビデオの解像度 + + + + 出力ビデオのサイズ + + + + エンドユーザーを表す一意の識別子 + + +これは Router が `GET /v2/models/xai/grok-imagine-video/openapi.json` で提供するスキーマから生成されたもので、リクエストがプロバイダーに到達する前に呼び出しを検証する際に使用されるドキュメントと同じです。 + +### 出力 + + + リクエストが入力モデレーションによってブロックされた場合、そのブロック理由を含みます + + + + ビデオの生成に使用されたモデル + + + + 遅延リクエストのステータス: "pending" または "done" + + 指定可能な値: `pending`、`done` + + + + ビデオ生成リクエストの使用状況情報 + + + + このリクエストのコストを USD ティックで表したもの。1 USD セントは 100,000,000 ティック、つまり 1 米ドルは 10,000,000,000 ティックです。 + + + + xAI によって生成されたビデオ + + + + 生成されたビデオの再生時間(秒) + + + + モデルが生成したビデオがモデレーションルールに従っているかどうか + + + + 生成されたビデオのダウンロード URL。Router はビデオを Comfy のストレージに再ホストしてこのフィールドを書き換えるため、通常は最大 24 時間有効な Comfy 署名付き URL になります。発行時に 24 時間の署名が付与され、23 時間のメモから再現されるため、後でポーリングすると残り 1 時間しかない URL が返されることがあります。再ホストを実行できなかった場合、このフィールドには xAI 自身の短命な URL がそのまま残ります。NULLABLE: `url` が空の成功は、完了した生成ではありません。いずれの場合もリンクは失効するため、URL を保存するのではなくビデオをダウンロードしてください。 + + +## 例 + +### 入力 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 出力 + +```json +{ + "model": "grok-imagine-video", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + diff --git a/ja/development/comfy-router/quickstart.mdx b/ja/development/comfy-router/quickstart.mdx index 55d15cd10..dec713231 100644 --- a/ja/development/comfy-router/quickstart.mdx +++ b/ja/development/comfy-router/quickstart.mdx @@ -1,335 +1,117 @@ --- title: "Comfy Router クイックスタート" -description: "Comfy Routerに対して、PythonとTypeScriptで、ゼロから約5分で生成済み画像まで到達する手順を説明します。" -translationSourceHash: 50fc5524 +sidebarTitle: "クイックスタート" +description: "Comfy Router に対して、PythonとTypeScriptで、ゼロから約5分で生成済み画像まで到達する手順を説明します。" +translationSourceHash: 77d3b143 translationFrom: development/comfy-router/quickstart.mdx -translationBlockHashes: - "_intro": 46050c92 - "Why this page uses `bfl/flux-2-pro`": 0eaf0bb3 - "Get a key": 843d281f - "cURL": bc3e1e4c - "Python": 059e95b8 - "TypeScript": 1053430f - "Reading the `422`": 602cd505 - "Find a model": 9b7855c1 - "Where the model's fields come from": 7861bd52 - "Next": 6aa641e1 --- - -**Comfy Router はまだ一般提供されていません。** 以下のルート -`POST /v1/models/{provider}/{model}` と、そのカタログおよびスキーマの関連ルートは、 -まだリクエストを処理していません。現在、認証付きの呼び出しは `404` を返します。このページは、 -これらのルートが将来提供する契約を文書化したものであり、ロールアウトに先立って公開されているため、 -統合をその契約に合わせて作成する準備ができます。これは、現在実際に試すことができる動作の説明ではありません。 - -Comfy Router は、パートナーモデルを1つのホスト、1つの資格情報、1つのルート形状の背後で実行します。このページは、生成済み画像への最短の完全なパスです。クライアントをインストールし、キーを設定し、1つのリクエストを送信し、結果を読み取り、そして最初の失敗に遭遇する前に、その失敗がどのようなものかを確認できます。 +
-ベース URL: `https://api.comfy.org`。ルートは `POST /v1/models/{provider}/{model}` です。リクエストボディはモデル独自のネイティブ JSON 入力であり、`200` 応答にはモデル独自のネイティブ JSON 出力が含まれます。Router は入力と出力のどちらもラップしないため、パートナーの API に対して既に作成した呼び出しは、ホストを変更するだけで Router の呼び出しになります。 +Comfy Router を使うと、1つの Comfy APIキーで `https://api.comfy.org` を通じてパートナーモデルを呼び出せます。モデルの入力を `POST /v2/models/{provider}/{model}` に送信し、完了した結果を待ちます。この例では `bfl/flux-2-pro` で画像を生成します。 -## このページで `bfl/flux-2-pro` を使用する理由 + + + [Comfy ワークスペース](https://platform.comfy.org/profile/api-keys)でキーを作成します。Bash 互換のターミナルで、次を設定します: -`bfl/flux-2-pro` は p50 で約 3.1 秒で応答を返します。これは Router 上で測定された中で最速の経路であり、5 分での最初の結果を現実的にするものです。より遅いモデルでは、その予算は読むことではなく待つことに費やされることになるでしょう。 + ```bash + export COMFY_API_KEY="comfyui-..." + ``` -これは便宜上のものであり、必須ではありません。Router 上の他のすべてのモデルもまったく同じ方法で呼び出されます。同じルート、同じ認証情報ヘッダー、同じエラーバケット、同じ `X-Comfy-Request-Id` です。変更されるのは、モデル ID、リクエスト本文内のフィールド、そして読み取る結果の形状だけです。たとえば Gemini は、p95 の 72.8 秒を余裕を持ってクリアします。Router は、ポーリング用のジョブハンドルを返すのではなく、生成全体にわたって接続を保持します。長時間の呼び出しを途中で打ち切るエッジ側の上限はありませんが、Router は呼び出し自体に制限を設けています。Router 自身のサーバーデッドライン(デフォルトで 10 分)が接続を保持する最長の時間であり、それを過ぎると `504` / `deadline_exceeded` を返し、課金は行われません。ID を差し替えて、そのモデルのフィールドを(後述の)モデル自身のスキーマから読み取ってください。 + APIキーはサーバー上またはローカル環境に保管してください。これらの例はターミナルまたはサーバー向けであり、ブラウザの JavaScript 向けではありません。 + -## APIキーを取得する + + この画像に対して、この値を一度だけ生成します。同じリクエストを再試行する場合は、それを再利用してください。 -RouterはComfy APIキーで認証します。[platform.comfy.org/profile/api-keys](https://platform.comfy.org/profile/api-keys) で作成し、環境変数に設定してください。以下の2つのサンプルはどちらも `COMFY_API_KEY` を読み取り、キーをリテラルとして受け取らないため、コピー&ペーストしたスニペットが認証情報をコミットに持ち込むことはありません。 + ```bash + export COMFY_REQUEST_KEY="$(uuidgen)" + ``` -```bash -export COMFY_API_KEY="comfyui-..." -``` + `uuidgen` が利用できない場合は、別の UUID ジェネレーターを使用してください。新しい画像を開始するときは、新しいキーを使用します。 + - -`comfyui-` キーは **`X-API-Key`** ヘッダーと **`Authorization: Bearer`** のどちらでも受け付けられます。サービスが API キーだと判断する手がかりはヘッダーではなく `comfyui-` プレフィックスなので、どちらの形式でも同じように参照されます。以下の例では `X-API-Key` を使用していますが、`Authorization: Bearer $COMFY_API_KEY` でも同等です。両方のヘッダーが送信された場合は、`X-API-Key` のキーが優先されます。`comfyui-` プレフィックスの**ない**値を `Authorization: Bearer` で送ると、Cloud/Firebase の **JWT** として扱われます(生成済みの [APIリファレンス](/ja/development/comfy-router/reference) が「bearer token」という言葉で意味しているのはこれです)。 - + + 言語を選択して例を実行します。画像生成には数分かかることがあります。 -キーはワークスペースごとに作成され、そのワークスペースのモデル利用権限とクレジット残高を保持します。有効な認証情報のないリクエストは `401` と `X-Comfy-Error-Type: unauthorized` を返します。ワークスペースがモデルを実行できないリクエストは、`403` / `forbidden` を返します。 + -## cURL + ```bash cURL + curl --max-time 660 \ + https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $COMFY_REQUEST_KEY" \ + -H "Content-Type: application/json" \ + -d '{"prompt": "a red teapot on a windowsill, morning light"}' + ``` -スクリプト、スモークテスト、ターミナルへのコピー&貼り付けに最適な、最短の呼び出し方法です: + ```python Python + # Python 3.10+ + # Install: python -m pip install "comfy-sdk>=0.1.9" + # Save as quickstart.py, then run: python quickstart.py -```bash -curl https://api.comfy.org/v1/models/bfl/flux-2-pro \ - -H "X-API-Key: $COMFY_API_KEY" \ - -H "Idempotency-Key: $(uuidgen)" \ - -H "Content-Type: application/json" \ - -d '{"prompt": "a red teapot on a windowsill, morning light"}' -``` + import os -レスポンスはモデルのネイティブ出力で、以下のサンプルがそのまま読み取る形式です。失敗時は、ボディにエラーが含まれ、`X-Comfy-Error-Type` ヘッダーがエラーの分類を示します。後で問い合わせる必要があるレスポンスからは、`X-Comfy-Request-Id` ヘッダーを保存しておいてください。macOS と Linux にはどちらも `uuidgen` が同梱されています。Windows では、`New-Guid` または任意の UUID ソースを使用して Idempotency-Key を生成してください。 + from comfy_sdk import Comfy -## Python + # Comfy reads COMFY_API_KEY from the environment. + with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + {"prompt": "a red teapot on a windowsill, morning light"}, + idempotency_key=os.environ["COMFY_REQUEST_KEY"], + timeout=660.0, + ) -Python 3.9+ と `httpx` が必要です: + print("image:", result["result"]["sample"]) + ``` -```bash -pip install httpx -``` + ```typescript TypeScript + // Node.js 22+ + // Install: npm install @comfyorg/sdk@^0.1.9 --save-dev tsx + // Save as quickstart.mts, then run: npx tsx quickstart.mts -`quickstart.py` として保存し、`python quickstart.py` で実行します: + import { comfy } from "@comfyorg/sdk"; -```python -import os -import uuid + // Comfy reads COMFY_API_KEY from the environment. + type FluxResult = { result: { sample: string } }; + const idempotencyKey = process.env.COMFY_REQUEST_KEY; + if (!idempotencyKey) throw new Error("Set COMFY_REQUEST_KEY first."); -import httpx + const { data } = await comfy.models.run( + "bfl/flux-2-pro", + { prompt: "a red teapot on a windowsill, morning light" }, + { idempotencyKey, timeoutMs: 660_000 }, + ); -BASE_URL = os.environ.get("COMFY_ROUTER_BASE_URL", "https://api.comfy.org") -MODEL = "bfl/flux-2-pro" + console.log("image:", data.result.sample); + ``` -# Give the client headroom ABOVE Router's own server deadline (10 minutes by -# default) so a call that reaches the server bound comes back as a typed 504 -# with a request id rather than as an opaque client abort. The deadline bounds -# how long Router holds the connection, not whether the call is billed: if the -# provider completed the generation, it is billed either way. -READ_TIMEOUT_SECONDS = 660.0 + + どちらの SDK も環境から `COMFY_API_KEY` を読み取ります。 + -class RouterError(Exception): - """A Comfy Router failure, typed by its X-Comfy-Error-Type bucket.""" + + このモデルでは、画像URL はレスポンスボディの `result.sample` にあります。省略したレスポンスは次のようになります。以下の URL は例示用です: - def __init__(self, response: httpx.Response) -> None: - self.error_type = response.headers.get("X-Comfy-Error-Type", "internal_error") - self.request_id = response.headers.get("X-Comfy-Request-Id") - self.status_code = response.status_code - # Parse defensively: an error can arrive as an HTML 502 from a load - # balancer, a plain-text 429, an empty body or a truncated JSON one. The - # status, the bucket and the request id above are the parts worth - # keeping, so a body that will not parse must not replace this exception - # with a JSONDecodeError and lose them. - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - detail = body.get("detail") if isinstance(body, dict) else None - # A 422 carries a detail[] array - one entry per rejected field, each - # keeping its own `loc`, `msg` and `type`. Every other bucket carries a - # plain `detail` string. - self.errors = detail if isinstance(detail, list) else [] - self.detail = detail if isinstance(detail, str) else f"HTTP {response.status_code}" - super().__init__(self.detail) + ```json + { + "status": "Ready", + "result": { "sample": "https://example.com/generated-image.jpeg" } + } + ``` + 返された URL を開くか、ダウンロードします: -def run(model: str, arguments: dict, idempotency_key: str) -> dict: - # Idempotency-Key makes a retry safe on a PAID call: Router replays the - # original response for 24h instead of dispatching (and billing) the - # provider a second time. Reuse the SAME key when retrying one logical - # call; generate a new one for a new call. - response = httpx.post( - f"{BASE_URL}/v1/models/{model}", - headers={ - "X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": idempotency_key, - }, - json=arguments, - timeout=httpx.Timeout(READ_TIMEOUT_SECONDS, connect=10.0), - ) - if response.is_error: - raise RouterError(response) - return response.json() + ```bash + curl --fail --location "PASTE_IMAGE_URL_HERE" --output teapot.jpg + ``` + 速やかにダウンロードしてください。Router は BFL のアセットを Comfy のストレージに再ホストできますが、URL は期限切れになり、リプレイしても更新されません。再ホストが失敗すると、より短命なプロバイダー URL が残ることがあります。詳しくは[結果アセット](/ja/development/comfy-router/reference#結果アセット)を参照してください。 + + -result = run( - MODEL, - {"prompt": "a red teapot on a windowsill, morning light"}, - idempotency_key=str(uuid.uuid4()), -) -# Router forwards each provider's native output unchanged, so this path is -# BFL's, not a Router envelope. Reading a different model means reading its own -# output shape. -print("image:", result["result"]["sample"]) +## モデルを選択する -# The first failure most callers hit: a field the model's input schema requires -# is missing, so Router rejects the request BEFORE any provider call - which is -# why a 422 is never billed. -try: - run(MODEL, {"width": 1024}, idempotency_key=str(uuid.uuid4())) -except RouterError as exc: - print(f"{exc.error_type} (HTTP {exc.status_code}), request id {exc.request_id}") - for entry in exc.errors: - print(" ", ".".join(str(p) for p in entry["loc"]), "->", entry["msg"]) -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## TypeScript - -Node 18+(組み込みの `fetch`、`AbortSignal.timeout`、`crypto.randomUUID` を使用)と、TypeScript を直接実行するための `tsx` が必要です: - -```bash -npm install --save-dev tsx -``` - -`quickstart.mts` として保存します。`.mts` 拡張子は重要です。このファイルはトップレベルの `await` を使用するため ES モジュールが必要だからです。`npx tsx quickstart.mts` で実行します: - -```typescript -const API_KEY = process.env.COMFY_API_KEY; -if (!API_KEY) throw new Error("Set COMFY_API_KEY before running this sample."); - -const BASE_URL = process.env.COMFY_ROUTER_BASE_URL ?? "https://api.comfy.org"; -const MODEL = "bfl/flux-2-pro"; - -// Headroom ABOVE Router's own server deadline (10 minutes by default), so a -// call that reaches the server bound returns a typed 504 with a request id -// rather than aborting locally at the same moment. The deadline bounds how -// long Router holds the connection, not whether the call is billed: if the -// provider completed the generation, it is billed either way. -const CLIENT_TIMEOUT_MS = 660_000; - -interface ValidationEntry { - loc: (string | number)[]; - msg: string; - type: string; -} - -/** A Comfy Router failure, typed by its `X-Comfy-Error-Type` bucket. */ -class RouterError extends Error { - readonly errorType: string; - readonly requestId: string | null; - readonly status: number; - /** A 422 carries a `detail[]` array — one entry per rejected field, each - * keeping its own `loc`, `msg` and `type`. Every other bucket carries a - * plain `detail` string. */ - readonly errors: ValidationEntry[]; - - constructor(response: Response, body: unknown) { - const detail = - typeof body === "object" && body !== null - ? (body as { detail?: unknown }).detail - : undefined; - super(typeof detail === "string" ? detail : `HTTP ${String(response.status)}`); - this.name = "RouterError"; - this.errorType = response.headers.get("X-Comfy-Error-Type") ?? "internal_error"; - this.requestId = response.headers.get("X-Comfy-Request-Id"); - this.status = response.status; - this.errors = Array.isArray(detail) ? (detail as ValidationEntry[]) : []; - } -} - -/** Read a body without letting a non-JSON error page mask the real failure. */ -async function parseBody(response: Response): Promise { - const text = await response.text(); - try { - return JSON.parse(text) as unknown; - } catch { - return undefined; - } -} - -async function run( - model: string, - args: Record, - idempotencyKey: string, -): Promise { - // Idempotency-Key makes a retry safe on a PAID call: Router replays the - // original response for 24h instead of dispatching (and billing) the provider - // a second time. Reuse the SAME key when retrying one logical call. - const response = await fetch(`${BASE_URL}/v1/models/${model}`, { - method: "POST", - headers: { - "X-API-Key": API_KEY, - "Idempotency-Key": idempotencyKey, - "Content-Type": "application/json", - }, - body: JSON.stringify(args), - signal: AbortSignal.timeout(CLIENT_TIMEOUT_MS), - }); - // Read the body without letting it decide the outcome: an HTML 502, a - // plain-text 429 or an empty body still yields the status, the bucket and - // the request id, because `parseBody` returns `undefined` on a parse failure. - const body = await parseBody(response); - if (!response.ok) throw new RouterError(response, body); - return body as T; -} - -const result = await run<{ result: { sample: string } }>( - MODEL, - { prompt: "a red teapot on a windowsill, morning light" }, - crypto.randomUUID(), -); -// Router forwards each provider's native output unchanged, so this path is -// BFL's, not a Router envelope. Reading a different model means reading its own -// output shape. -console.log("image:", result.result.sample); - -// The first failure most callers hit: a field the model's input schema requires -// is missing, so Router rejects the request BEFORE any provider call - which is -// why a 422 is never billed. -try { - await run(MODEL, { width: 1024 }, crypto.randomUUID()); -} catch (exc) { - if (!(exc instanceof RouterError)) throw exc; - console.log(`${exc.errorType} (HTTP ${String(exc.status)}), request id ${String(exc.requestId)}`); - for (const entry of exc.errors) console.log(" ", entry.loc.join("."), "->", entry.msg); -} -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## `422` の読み方 - -`422` は、最初の実呼び出しの前に理解しておく価値がある唯一のエラーです。なぜなら、それは自分自身が引き起こすエラーだからです。これは、Router がボディをモデル自身の入力スキーマに対して検証し、拒否したことを意味します。つまり、必須フィールドが不足している、値が範囲外、画像が小さすぎる、といったケースです。このチェックはプロバイダー呼び出しの前に実行されるため、`422` はコストがかかりません。パートナーの支出もなく、後で請求に関する質問に答える必要もありません。これは `400` とは異なります。`400` はリクエストレベルの失敗(不正なカーソル、読み取れないエンベロープ)であり、フィールド単位の失敗ではありません。 - -そのボディは FastAPI の `detail[]` 形状です。問題のあるフィールドごとに1つのエントリを持つ配列で、各エントリは独自の `loc`(フィールドへのパス)、`msg`、`type`(プロバイダーレベルの具体的な理由: `missing`、`value_error`、`image_too_small`)、および理由に境界が含まれる場合は `ctx` を保持します。このフィールド単位の粒度こそが、上記のサンプルが配列を例外メッセージにフラット化せずにデータとして保持する理由です。 - - -入力スキーマがまだ作成されていないモデルは、任意の JSON オブジェクトを受け入れる文書化された -寛容なフォールバックとして解決されるため、`422` を返す代わりにボディを転送します。 -上記のサンプルは、スキーマが存在する場合に処理する形状を示しています。`422` ブロックは、 -その特定のボディに対する保証された応答ではなく、エラーパスとして扱ってください。 - - -このボディには独自の `error_type` フィールドがないため、`422` では `X-Comfy-Error-Type` ヘッダーが*唯一の*機械可読なバケットになります。両方のサンプルはまさにその理由から、ヘッダーからバケットを最初に読み取ります。これにより、Router が返すすべての失敗を1つのエラークラスでカバーできます。 - -`X-Comfy-Request-Id` は、成功、`4xx`、`5xx` を問わずすべてのレスポンスに含まれており、サポートリクエストで引用する ID です。両方のサンプルは、ヘッダーロギングを有効にして再実行する代わりに、例外に ID を添付します。 - -## モデルを探す - -`bfl/flux-2-pro` は 1 つの ID にすぎず、残りはカタログにあります。`GET /v1/models` は Router が実行できるすべてのモデルを 1 ページずつ一覧表示し、各エントリには呼び出しに必要な情報がそのまま含まれています。パスに入れる `id`、個別に保持される `provider` と `model` のセグメント、そして何かを消費する前に分岐判断に使える `billing` ブロックです。 - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v1/models?limit=50" -``` - -```json -{ - "data": [ - { "id": "bfl/flux-2-pro", "provider": "bfl", "model": "flux-2-pro", "billing": { "charges_on_policy_rejection": "no" } } - ], - "has_more": true, - "next_cursor": "q7Fm2xTn9pLd4RsV", - "limit": 50 -} -``` - -オフセットではなくカーソルで走査してください。`next_cursor` を `?cursor=` としてそのまま送り返し、ページが短く返ってきたときではなく、`has_more` が `false` になったときに停止します。カーソルは不透明な値で、往復させるだけのものです。Router が受け付けないカーソルは `400` / `invalid_input` になり、黙って 1 ページ目からやり直されることはありません。カーソルはカタログのソート順における位置なので、モデルを追加または削除するデプロイをまたいでも有効です。すでに通過した位置に追加されたモデルは、その走査では単に訪問されないだけです。一覧に対する `503` / `service_unavailable` は、Router がまだ応答できない(Pod がリリース状態をまだ読み込み中である)ことを意味します。再試行してください。空のカタログと解釈してはいけません。レスポンスの `limit` は実際に提供されたページサイズです。上限を超えるリクエストは拒否されるのではなく上限に丸められるため、返ってきた数値でページングしてください。デプロイ済みでも未リリースのモデルは、どのページにも単に現れません。 - -## モデルのフィールドの由来 - -`prompt` は `bfl/flux-2-pro` が必須とする唯一のフィールドです。次に必要になるのは `width`、`height`、`seed`、`output_format` です。時間とともにずれる可能性のあるフィールド一覧を再掲する代わりに、モデルのスキーマをライブで確認してください: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v1/models/bfl/flux-2-pro/openapi.json -``` - -これは、サーバーがあなたの呼び出しの検証に使用するものと同じドキュメントで、スタンドアロンのOpenAPIドキュメントとして提供されます。そのため、公開されている仕様と実際に強制される仕様が食い違うことはありません。上のカタログから任意の `id` を選び、その呼び出しパスに `/openapi.json` を追加すれば、返ってきた内容に基づいて生成できます。 - -## 次のステップ - -- [Comfy Router API リファレンス](/ja/development/comfy-router/reference): すべてのエンドポイント、すべてのパラメータ、そして 15 種類すべてのエラー分類を網羅しています。 -- [Comfy Router の制限事項](/ja/development/comfy-router/limitations): 現在 Router が対応していない機能と、その代わりに使用すべきものを説明しています。 +[Comfy Router で利用可能なモデルをブラウズ](/ja/development/comfy-router/models)して、その入力を確認し、この例のモデル ID を置き換えてください。 \ No newline at end of file diff --git a/ja/development/comfy-router/reference.mdx b/ja/development/comfy-router/reference.mdx index 312d8bba2..5a2a217cb 100644 --- a/ja/development/comfy-router/reference.mdx +++ b/ja/development/comfy-router/reference.mdx @@ -1,17 +1,19 @@ --- title: "Comfy Router API リファレンス" description: "Comfy API 契約から生成済みの、Comfy Router のすべてのエンドポイント、パラメータ、レスポンスボディ、エラーバケット。" -translationSourceHash: 5b914bce +translationSourceHash: 70ca7dac translationFrom: development/comfy-router/reference.mdx translationBlockHashes: - "_intro": 0114a881 - "Endpoints": 93fdf96a - "Error buckets": bfbc4524 - "Response headers": 8f8b3475 - "Per-model input schemas": ae73e63b - "Schemas": 8ce93415 + "_intro": 3f6e5d23 + "Endpoints": f86ab166 + "Error buckets": 3c6deea9 + "Response headers": 10172430 + "Result assets": 30d46145 + "Per-model input and output schemas": c894d16d + "Schemas": 613fffa2 --- + {/* 生成済みファイル: 手動で編集しないでください。 @@ -20,75 +22,81 @@ translationBlockHashes: それまでの間はドリフトゲートによって拒否されます。 */} +
+ モデル ID でアドレス指定される Comfy Router の正規ルート。 ベース URL: `https://api.comfy.org` -以下のすべてのエンドポイントは認証が必要です。`Authorization: Bearer ` を送信してください。 +以下のすべてのエンドポイントは認証が必要です。`X-API-Key: ` または `Authorization: Bearer ` を送信してください。 + +Comfy API キーは Bearer トークンとして送信することもできます。両方の認証ヘッダーが指定された場合、`X-API-Key` が優先されます。キーと JWT の違いについては[認証ヘッダー](/ja/development/comfy-router/quickstart)を、アクセス要件については[クイックスタート](/ja/development/comfy-router/quickstart)を参照してください。 ## エンドポイント -### `GET /v1/models` +### `GET /v2/models` **Comfy Router が実行できるモデルを一覧表示します。** -Comfy Router のモデルカタログ。`POST /v1/models/{provider}/{model}` が受け付ける正規モデル ID の 1 ページ分です。SDK はコールドスタート時にこの API を呼び出して実行可能なモデルを検出し、`model_not_found` の提案も同じカタログから取得されます。したがって、ここに掲載されている ID が呼び出し時に 404 になる場合は、どちらか一方の失敗だけよりも悪い結果になります。この一致は約束ではなく構造上のものです。エントリの `provider` と `model` は、呼び出しルートの2つのパスセグメントであり、そのルートのパスパラメータと同じスキーマコンポーネントを参照します。また、`id` はそれらの2つのセグメントを `/` で連結したものです。 +利用可能なモデル ID と課金情報を一覧表示します。`has_more` が true の間は `next_cursor` を使用してください。 **パラメータ** | 名前 | 場所 | 必須 | 型 | 制約 | 説明 | | --- | --- | --- | --- | --- | --- | -| `cursor` | クエリ | いいえ | [`RouterPageCursor`](#routerpagecursor) | `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` | 不透明なページネーションカーソル。前のページの `next_cursor` を渡すと次のページを取得できます。最初のページでは省略します。値が不透明である理由と、このルートがオフセットではなくカーソルでページネーションする理由については、`RouterPageCursor` を参照してください。 | -| `limit` | クエリ | いいえ | integer | `maximum: 100`, `default: 20` | 1 ページで返すモデル数。宣言された最大値を超える値は契約外ですが、このルートはそれらを拒否しません。代わりに最大値を返し、実際に返されるページサイズはレスポンスの `limit` としてエコーバックされるため、クランプは常に呼び出し側が検出できます。最大値を実際のページストライドとして扱ってください。より多くを要求し、より多くを受け取ったと想定するクライアントは行を失います。0 と負の値も受け入れられ、デフォルトを選択します。そのため `minimum` は宣言されていません。1 未満はここでは意味があり、無効ではありません。 | +| `cursor` | クエリ | いいえ | [`RouterPageCursor`](#routerpagecursor) | `next_cursor` として返される不透明なカーソル、1~512文字 | 不透明なページネーションカーソル。 | +| `limit` | クエリ | いいえ | integer | 最大 100、デフォルト: 20 | 1 ページで返すモデル数。 | **レスポンス** | ステータス | ボディ | ヘッダー | 説明 | | --- | --- | --- | --- | | `200` | [`RouterModelListResponse`](#routermodellistresponse) | `X-Comfy-Request-Id` | OK: モデルカタログの 1 ページ分。 | -| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 無効なリクエストです。エラータイプとリクエストボディを確認してください。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 認証情報が不足しているか無効です。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | この呼び出し元またはモデルに対して、このリクエストは許可されていません。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router が一時的に利用できません。バックオフして再試行してください。 | -### `GET /v1/models/{provider}/{model}` +### `GET /v2/models/{provider}/{model}` **正規のモデル ID で、パートナーモデルのカタログエントリを 1 件読み取ります。** -単一の Comfy Router モデルに対するモデル単位の詳細です。呼び出し元は、ページ分割されたカタログ全体を走査しなくても、1 つのモデルを確認できます。SDK はモデルを呼び出す直前に、このエンドポイントを使用してモデルを検索します。 +カタログ全体を一覧表示せずに、1 つのモデルの詳細を読み取ります。 **パラメータ** | 名前 | 場所 | 必須 | 型 | 制約 | 説明 | | --- | --- | --- | --- | --- | --- | -| `provider` | パス | はい | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 正規の `{provider}/{model}[/{variant}]` モデル ID における小文字のプロバイダーセグメントです。実行されるモデルのパートナーを示します。 | -| `model` | パス | はい | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 正規の `{provider}/{model}[/{variant}]` モデル ID における小文字のモデルセグメントです。そのプロバイダー内で実行するモデルを示します。 | +| `provider` | パス | はい | [`RouterProviderSegment`](#routerprovidersegment) | 英数字のスラッグ(例: `anthropic`)、最大 64 文字 | 正規の `{provider}/{model}` モデル ID のプロバイダー部分です。 | +| `model` | パス | はい | [`RouterModelSegment`](#routermodelsegment) | 英数字のスラッグ(例: `claude-opus-4-6`)、最大 128 文字 | 正規の `{provider}/{model}` モデル ID のモデル部分です。 | **レスポンス** | ステータス | ボディ | ヘッダー | 説明 | | --- | --- | --- | --- | | `200` | [`RouterModelDetail`](#routermodeldetail) | `X-Comfy-Request-Id` | OK: モデルのカタログエントリです。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルでの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗したことを示します。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` ヘッダーにも繰り返し含まれます。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルでの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗したことを示します。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` ヘッダーにも繰り返し含まれます。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router のリクエストレベルでの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗したことを示します。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` ヘッダーにも繰り返し含まれます。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 認証情報が不足しているか無効です。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | この呼び出し元またはモデルに対して、リクエストは許可されていません。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | モデル ID が見つかりませんでした。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router は一時的に利用できません。バックオフして再試行してください。 | -### `POST /v1/models/{provider}/{model}` +### `POST /v2/models/{provider}/{model}` **正規モデルIDでパートナーモデルを同期的に実行します。** -Comfy Routerの正規のエントリポイントであり、モデルIDでアドレス指定されます。リクエストボディはパートナーモデル自身のネイティブなJSON入力であり、成功レスポンスはそのモデル自身のネイティブなJSON出力です。RouterはComfy形式のエンベロープを押し付けるのではなく、両方をそのまま転送するため、呼び出し元はホストを変更するだけでパートナーのAPIとRouterを切り替えることができます。これは同期パスです。レスポンスには完了した結果が含まれます。 +モデルを実行し、完了した結果を同じレスポンスで受け取ります。 **パラメータ** | 名前 | 場所 | 必須 | 型 | 制約 | 説明 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 正規の `{provider}/{model}[/{variant}]` モデルIDの小文字のプロバイダーセグメント。モデルが実行されるパートナーを示します。 | -| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 正規の `{provider}/{model}[/{variant}]` モデルIDの小文字のモデルセグメント。そのプロバイダー内で実行するモデルを示します。 | +| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | 英数字スラッグ(例: `anthropic`)、最大64文字 | 正規の `{provider}/{model}` モデルIDのプロバイダー部分。 | +| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | 英数字スラッグ(例: `claude-opus-4-6`)、最大128文字 | 正規の `{provider}/{model}` モデルIDのモデル部分。 | +| `Idempotency-Key` | header | no | string | 1〜255文字 | 1つの論理的な呼び出しを安全に再試行できるようにする、呼び出し元が生成するキー。 | **リクエストボディ** -`application/json` - [`RouterModelInput`](#routermodelinput)(必須) +`application/json` -- [`RouterModelInput`](#routermodelinput)(必須) パートナーモデルのネイティブなJSON入力で、プロバイダーにそのまま転送されます。 @@ -96,56 +104,62 @@ Comfy Routerの正規のエントリポイントであり、モデルIDでアド | ステータス | ボディ | ヘッダー | 説明 | | --- | --- | --- | --- | -| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id` | OK。パートナーモデルのネイティブなJSON出力がそのまま返されます。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` であり、そのバケットは `X-Comfy-Error-Type` にも繰り返し記載されます。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` であり、そのバケットは `X-Comfy-Error-Type` にも繰り返し記載されます。 | -| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | リクエストはモデルに到達しましたが、モデルはその内容を拒否しました。ボディは `RouterValidationErrorResponse` であり、FastAPIの `detail[]` 形状です。そのため、各問題のあるフィールドは独自の `type` と `ctx` を保持します。`X-Comfy-Error-Type` はレスポンス全体の大まかなバケットを伝えます。 | -| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | 呼び出し元が許可された上限いっぱいの実行中キャパシティを保持しており、リクエストはモデルに到達する前に拒否されました。どちらの場合もバケットは `concurrency_limit_exceeded` で、`detail` がどの上限に達したかを示します。同時呼び出し数か、実行中の呼び出しのコミット済み支出かのいずれかで、後者による拒否には `X-Committed-Spend-Limit`、`X-Committed-Spend-Current`、`X-Committed-Spend-Remaining` ヘッダー(米ドルのセント単位)も付きます。呼び出し元自身の実行中の呼び出しのいずれかが完了したら再試行してください。ボディは `RouterErrorResponse` であり、そのバケットは `X-Comfy-Error-Type` にも繰り返し記載されます。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しない理由で失敗しました。ボディは `RouterErrorResponse` であり、そのバケットは `X-Comfy-Error-Type` にも繰り返し記載されます。 | -| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | Comfy が自身の設定済みの上限で接続の維持を停止しました(`deadline_exceeded`)。ボディと 2 つのヘッダーは `RouterRequestError` のものとまったく同じで、これに加わるのがオプションの `Retry-After` です。同じ `Idempotency-Key` での再試行が、新たな生成をディスパッチするのではなく、まだ実行中の生成を回収する場合に付与されます。`POST /v1/models/{provider}/{model}` の `504` を参照してください。 | +| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id`, `X-Content-Type-Options`, `Idempotent-Replayed`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | OK。パートナーモデルのネイティブな出力が、パートナー自身のメディアタイプでそのまま返されます。 | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | 無効なリクエストです。エラータイプとリクエストボディを確認してください。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 認証情報が不足しているか無効です。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | この呼び出し元またはモデルでは、このリクエストは許可されていません。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | モデルIDが見つかりませんでした。 | +| `409` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After`(`concurrency_limit_exceeded` の場合) | `X-Comfy-Error-Type` を確認してください。`concurrency_limit_exceeded` はオリジナルの呼び出しがまだ実行中であることを意味するため、`Retry-After` を待って同じキーを再利用してください。`invalid_input` は新しいキーが必要です。 | +| `413` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | リクエストボディが大きすぎます。 | +| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | リクエストの内容がモデルのスキーマに対して拒否されました。 | +| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | `X-Comfy-Error-Type` を確認してください。`concurrency_limit_exceeded` は実行中の呼び出しを減らすことを意味し、`rate_limited` は許可ウィンドウを待つことを意味します。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerが一時的に利用できません。バックオフして再試行してください。 | +| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | リクエストが期限を超過しました。再試行する前にエラータイプを確認してください。 | -### `GET /v1/models/{provider}/{model}/openapi.json` +### `GET /v2/models/{provider}/{model}/openapi.json` -**1つのパートナーモデルの入力スキーマをOpenAPIドキュメントとして読み取ります。** +**1つのパートナーモデルの入力スキーマと出力スキーマをOpenAPIドキュメントとして読み取ります。** -単一のComfy Routerモデルのモデルごとの入力スキーマは、スタンドアロンのOpenAPIドキュメントとして提供されます。これにより、呼び出し側(SDK、コード生成ツール、またはエージェント)は、Comfyの解説ドキュメントを読まなくてもモデルの引数を発見できます。これはSDKクイックスタートが依存する発見メカニズムです。 +1つのモデルの入力スキーマと出力スキーマを、スタンドアロンのOpenAPIドキュメントとして読み取ります。 **パラメータ** | 名前 | 場所 | 必須 | 型 | 制約 | 説明 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 正規の `{provider}/{model}[/{variant}]` モデルIDの小文字のプロバイダーセグメント。実行されるモデルのパートナーです。 | -| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 正規の `{provider}/{model}[/{variant}]` モデルIDの小文字のモデルセグメント。そのプロバイダー内で実行するモデルです。 | -| `If-None-Match` | header | no | string | - | 呼び出し元が以前の `200` から保持している `ETag`。現在のドキュメントと一致する場合(RFC 9110 の弱い比較。`*` は現在のどのドキュメントにも一致します)、応答は同じ `ETag` を持つボディなしの `304` となり、一致しない場合は完全なドキュメントが返されます。 | +| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | 英数字のスラグ(例: `anthropic`)、最大64文字 | 正規の `{provider}/{model}` モデルIDのプロバイダー部分。 | +| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | 英数字のスラグ(例: `claude-opus-4-6`)、最大128文字 | 正規の `{provider}/{model}` モデルIDのモデル部分。 | +| `If-None-Match` | header | no | string | - | 呼び出し元が以前の `200` から保持している `ETag`。 | **レスポンス** | ステータス | ボディ | ヘッダー | 説明 | | --- | --- | --- | --- | -| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | OK: モデルの入力スキーマをスタンドアロンのOpenAPIドキュメントとして返します。 | -| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | Not Modified: 呼び出し側が `If-None-Match` で送信した `ETag` 以降、ドキュメントは変更されていません。ボディは返されません。 | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗: リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗: リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗: リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗: リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerのリクエストレベルの失敗: リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディは `RouterErrorResponse` で、バケットは `X-Comfy-Error-Type` に繰り返されます。 | +| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | OK: モデルの入力スキーマと出力スキーマを、スタンドアロンのOpenAPIドキュメントとして返します。 | +| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | Not Modified: 呼び出し側が `If-None-Match` で送信した `ETag` 以降、ドキュメントは変更されていません。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 認証情報が不足しているか無効です。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | この呼び出し元またはモデルに対して、リクエストは許可されていません。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | モデルIDが見つかりませんでした。 | +| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerがリクエストを完了できませんでした。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Routerは一時的に利用できません。バックオフして再試行してください。 | + +表の説明は簡潔です。モデルの選択、検証、再試行、課金については[Using the Comfy Router API](/ja/development/comfy-router/quickstart)を、ヘッダーの動作についてはHeadersを参照してください。 ## エラーバケット -Router の失敗を示す、粗い粒度の機械可読バケットです。`X-Comfy-Error-Type` レスポンスヘッダーにもミラーリングされるため、呼び出し側はボディを解析せずに分岐できます。セットは15個の値で固定されています。リクエストレベルの6つのバケット `invalid_input`、`content_policy_violation`、`provider_error`、`provider_timeout`、`insufficient_credits`、`model_not_found` に加え、トランスポートレベルの `unauthorized`、`forbidden`、`concurrency_limit_exceeded`、`client_disconnected`、`internal_error`、`deadline_exceeded`、`not_enabled`、`service_unavailable`、`rate_limited` です。 +Router の機械可読なエラーカテゴリで、`X-Comfy-Error-Type` ヘッダーでも送信されます。 ### リクエストレベルバケット -Router が受け付けたものの完了できなかったリクエストに対して発生します。 +Router が受け付けたものの、完了できなかったリクエストに対して発生します。 | `error_type` | 意味 | | --- | --- | -| `invalid_input` | リクエストがモデルに到達する前に拒否されました。不正な形式のボディ、不正または期限切れのページネーションカーソル、またはモデル自身のスキーマが受け付けない入力が原因です。 | -| `content_policy_violation` | プロバイダーがコンテンツポリシーを理由にリクエストを拒否しました。この拒否は決定的です。同じ入力を再送信しても再び拒否されます。 | +| `invalid_input` | リクエストがモデルに到達する前に拒否されました。ボディの形式が不正、ページネーションカーソルが不正または期限切れ、モデル自身のスキーマが受け付けない入力、またはこのリクエストに使用できない `Idempotency-Key`(別のリクエストで既に使用済み。方法、パスとクエリ、またはボディが異なる。もしくは、レスポンスを再生できない呼び出しによって既に消費済み)です。 | +| `content_policy_violation` | プロバイダーがコンテンツポリシーを理由にリクエストを拒否しました。 | | `provider_error` | パートナープロバイダーが自身の障害を報告したか、Router が結果として解釈できないレスポンスを返しました。 | -| `provider_timeout` | パートナープロバイダーが期限までに応答しませんでした。このバケットはプロバイダーのタイムアウトであり、Router 自身のサーバー側の期限ではありません。サーバー側の期限は `deadline_exceeded` として報告されます。両者は `504` を共有しますが、原因が異なるため区別されます。こちらはパートナーが失敗したことを示し、あちらは Comfy が接続の維持を停止したことを示します。 | +| `provider_timeout` | パートナープロバイダーが期限までに応答しませんでした。 | | `insufficient_credits` | 呼び出し元のワークスペースに、モデルを実行するための十分なクレジットがありません。 | -| `model_not_found` | `{provider}/{model}` という ID が、Router で実行できるモデルを指していません。不明なプロバイダーもここに分類されます。`detail` には、呼び出し側が閲覧を許可されているモデルから抽出された最大3件の提案が含まれます。 | +| `model_not_found` | `{provider}/{model}` という ID が、Router で実行できるモデルを指していません。不明なプロバイダーもここに分類されます。 | ### トランスポートレベルバケット @@ -156,41 +170,66 @@ Router が受け付けたものの完了できなかったリクエストに対 | `unauthorized` | リクエストに利用可能な認証情報が含まれていませんでした。 | | `forbidden` | 認証情報は有効ですが、このモデルまたはこの操作に対する権限がありません。 | | `concurrency_limit_exceeded` | ワークスペースはすでに許可された数の呼び出しを実行中です。いずれかが完了したら再試行してください。 | -| `client_disconnected` | 呼び出し側が、Router が結果を返す前に接続を閉じました。これは配信ではなくログに記録されます。書き込むソケットが残っていないためです。また、これは課金結果ではなく原因の帰属を示すものです。完了したプロバイダーによる生成は、呼び出し側がレスポンスを受信したかどうかに関係なく請求されます。 | -| `internal_error` | Router 自体が失敗しました。これは、クライアントが認識できないバケットを扱う際の値でもあります。これにより、後でセットに追加が行われても、それ以前に生成されたクライアントが壊れることはありません。 | -| `deadline_exceeded` | 回答が到着する前に、Comfy が自身の設定済みの上限で接続の維持を停止しました。`provider_timeout` と `504` を共有し、このペアはどちらの側が時間切れになったかを示します。こちらは Comfy 自身の上限であるため、リクエストのいかなる部分も拒否されておらず、同じリクエストを再試行できます。課金については何も示しません。完了したプロバイダーによる生成は、呼び出し側がレスポンスを受信したかどうかに関係なく請求されます。同じ `Idempotency-Key` で再試行してください。プロバイダーがすでに生成を受け付けていた場合、再試行は新たな生成をディスパッチするのではなくその生成を回収し、`504` の `Retry-After` がいつ問い合わせるべきかを示します。 | -| `not_enabled` | この呼び出し側に対して Comfy Router がまだ有効になっていません。リクエストに問題はなく、モデルも存在するため、`model_not_found` ではありません。`forbidden` と `403` を共有しますが、同じものではありません。`forbidden` は呼び出し側に関する権限の判断であるのに対し、こちらはロールアウトの状態だからです。これは終端状態です。再試行せず、また障害として扱わないでください。 | -| `service_unavailable` | Comfy Router が依存するサービスが一時的に利用できず、呼び出し側に問題はありません。バックオフを伴って再試行してください。これは、呼び出し側がリクエストを変更することなく、また並行処理スロットが解放されることもなく、条件が自動的に解消される唯一のバケットです。これが他の再試行可能な応答 (`concurrency_limit_exceeded`、`deadline_exceeded`) との違いです。また、`internal_error` とは区別されます。`internal_error` は `500` で、Router 自体が失敗したことを意味します。これにより、クライアントは「すぐに再試行してください」と「この呼び出しは成功しない」を区別できます。 | -| `rate_limited` | 呼び出し側がウィンドウ単位で測定される割り当てを消費し、そのウィンドウが経過するのを待つ必要があります。`concurrency_limit_exceeded` と `429` を共有しますが、同じものではありません。`concurrency_limit_exceeded` は、呼び出し側自身の実行中の呼び出しが1つ完了した時点で解消されるため、数秒以内の再試行が適切です。一方、こちらは呼び出し側が何をしても早く解消されません。`detail` はウィンドウを示します。 | +| `client_disconnected` | 呼び出し側が、Router が結果を返す前に接続を閉じました。 | +| `internal_error` | Router 自体が失敗しました。 | +| `deadline_exceeded` | 回答が到着する前に、Comfy が自身の設定済みの上限で接続の維持を停止しました。 | +| `not_enabled` | この呼び出し側に対して Comfy Router がまだ有効になっていません。 | +| `service_unavailable` | Comfy Router が依存するサービスが一時的に利用できず、呼び出し側に問題はありません。 | +| `rate_limited` | 呼び出し側がウィンドウ単位で測定される割り当てを消費し、そのウィンドウが経過するのを待つ必要があります。 | ## レスポンスヘッダー | ヘッダー | 型 | 説明 | | --- | --- | --- | -| `Cache-Control` | `string` | 提供されるスキーマドキュメントの鮮度ディレクティブ。ルートが認証済みのため `private` です。ドキュメント自体は呼び出し元固有ではありませんが、共有キャッシュは認証済みリクエストへのレスポンスを保持してはなりません。また、`must-revalidate` により、古いコピーはそのまま提供されるのではなく `ETag` に対して再検証されます。 | -| `ETag` | `string` | `GET /v1/models/{provider}/{model}/openapi.json` で提供されるドキュメントのバイト列に対する強力なエンティティタグ。モデルごとのスキーマはほとんど変更されず、SDK が頻繁に再取得するため、呼び出し元はこの値を保存し、`If-None-Match` として送り返すことで、ドキュメントの代わりに `304` を受け取るべきです。 | -| `Retry-After` | `integer` | 同じ `Idempotency-Key` で同じリクエストを再試行するまでに待つべき秒数。`deadline_exceeded` の `504` において、プロバイダーがまだ実行中の生成へのハンドルを Comfy が保持している場合にのみ存在します。値は Router 自身のポーリング間隔で、このルートが「後でもう一度問い合わせる」ために示せる唯一の正直な数値です。回収できるものがない場合、つまりキーなしの呼び出しや、プロバイダーが何かを受け付ける前に上限が切れた場合には存在しません。 | -| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | 障害の大まかな機械可読バケットで、Router がすべてのエラーレスポンスに設定します。`RouterErrorResponse.error_type` と同じ値を保持し、`422` では唯一の機械可読バケットです。これは、そのボディが FastAPI の `detail[]` 形状であり、独自の `error_type` フィールドを持たないためです。したがって、クライアントは、受信した 2 つの Router エラーボディのどちらであるかを判断する前に、このヘッダーだけで分岐できます。 | -| `X-Comfy-Request-Id` | `string` | この呼び出しのサーバー生成識別子で、成功、4xx、5xx を問わず、すべての Router レスポンスに存在します。エラーレスポンスこそ、ユーザーがサポートリクエストで引用する ID を必要とするタイミングだからです。同じ値が呼び出しの使用状況/監査イベントにも書き込まれるため、課金に関する苦情をタイムスタンプで検索する代わりに、課金自体に結び付けることができます。 | -| `X-Committed-Spend-Current` | `integer` | 呼び出し元が現在、実行中の呼び出しにコミットしている米ドルのセント数。拒否された呼び出しは含みません。`X-Committed-Spend-Limit` と併せて存在します。 | -| `X-Committed-Spend-Limit` | `integer` | 呼び出し元が実行中の呼び出しにコミットできるパートナー支出の上限(米ドルのセント単位)。拒否の理由が同時呼び出しプールではなくコミット済み支出の上限であった場合に存在します。 | -| `X-Committed-Spend-Remaining` | `integer` | 上限までの残り余裕(米ドルのセント単位)。下限は 0 です。拒否時でも正の値になることがあります。拒否された呼び出しのコストが残りを超えていただけで、より安価な呼び出しであれば受け付けられます。`X-Committed-Spend-Limit` と併せて存在します。 | +| `Cache-Control` | `string` | 提供されるスキーマドキュメントの鮮度ディレクティブ。 | +| `ETag` | `string` | `GET /v2/models/{provider}/{model}/openapi.json` で提供されるドキュメントのバイト列に対する強力なエンティティタグ。 | +| `Idempotent-Replayed` | `boolean` | このレスポンスがモデルを再度実行したのではなく、`Idempotency-Key` の記録から提供された場合に存在し、`true` になります。 | +| `Retry-After` | `integer` | 同じ `Idempotency-Key` で同じリクエストを再試行するまでに待つべき秒数。 | +| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | 障害の大まかな機械可読バケットで、Router がすべてのエラーレスポンスに設定します。 | +| `X-Comfy-Request-Id` | `string` | この呼び出しのサーバー生成識別子で、成功、4xx、5xx を問わず、すべての Router レスポンスに存在します。エラーレスポンスこそ、ユーザーがサポートリクエストで引用する ID を必要とするタイミングだからです。 | +| `X-Committed-Spend-Current` | `integer` | 呼び出し元が現在、まだ実行中の呼び出しにコミットしている米ドルのセント数。 | +| `X-Committed-Spend-Limit` | `integer` | 呼び出し元がまだ実行中の呼び出しにコミットできるパートナー支出の上限(米ドルのセント単位)。この金額は呼び出しが受け付けられた時点で確保され、その呼び出しが完了した時点で解放されます。 | +| `X-Committed-Spend-Remaining` | `integer` | 上限までの残り余裕(米ドルのセント単位)。下限は 0 です。 | +| `X-Content-Type-Options` | `string` | Router モデルのすべての成功した実行において、常に `nosniff` です。 | + +## 結果アセット + +モデルは、アセット URL、インラインバイト、またはその両方を返すことができます。以下のプロバイダーは、選択済みのアセットを Comfy ストレージにコピーし、その URL を置き換えます。この動作はモデルによって異なります。これを選択するリクエストヘッダーはありません。 + +| モデル | Comfy ストレージにコピーされるもの | Comfy ホスト URL の最大有効期間 | +| --- | --- | --- | +| `bfl/*` | 完了したアセット、および結果に含まれている場合はドラフトキャッシュのアセット | 24 時間 | +| `byteplus/*` ビデオモデル (`seedance`、`dreamina-seedance`) | 完了したビデオ、および結果に含まれている場合はラストフレーム画像 | 24 時間 | +| `minimax/*` | 完了したビデオ | 12 時間 | +| `xai/*` | 生成されたすべての画像、および完了したビデオ | 24 時間 | + +これらの有効期間は、URL を開いたときではなく、URL が署名されたときに開始されます。キャッシュされた URL や再生された URL は残り時間が短い場合があります。再生しても有効期間は更新されません。アセットは速やかにダウンロードしてください。コピーされるのは各行に記載されたアセットのみです。`byteplus/seedream-*` と `byteplus/seededit-*` の画像は BytePlus ビデオの行には含まれません。 -## モデルごとの入力スキーマ +**Veo (`veo/*`) には別のストレージパスがあります。** `response.videos[]` では、存在する方のメンバーを読み取ってください。`bytesBase64Encoded` はクリップをインラインで含み、`gcsUri` は、プロバイダーから Comfy ストレージへの直接書き込みが環境で構成されている場合に、Comfy が署名した HTTPS リンクを含みます。そのリンクはレスポンスから 24 時間有効です。後者の場合はアセットをコピーするのではなく直接書き込むため、Veo は再ホスティングの表には含まれていません。 -モデル独自の入力フィールドはここでは再掲しません。それらは `GET /v1/models/{provider}/{model}/openapi.json` から直接取得できます。このエンドポイントは、サーバーが呼び出しの検証に使用するのと同じドキュメントを提供するため、公開されている内容と実際に適用される内容が乖離することはありません。`GET /v1/models` からモデルIDを取得し、その呼び出しパスに `/openapi.json` を追加して、返されたドキュメントに基づいて生成します。 +その他のモデルは、プロバイダーのアセット参照またはインラインバイトを返します。プロバイダーの URL はプロバイダーの有効期限に従います。これは上記の有効期間よりはるかに短い場合があり、Router の契約では規定されていません。 + +コピーはアセットごとのベストエフォートです。1 つのコピーが失敗した場合、そのエントリはプロバイダーの参照を保持します。レスポンスには Comfy とプロバイダーの両方の URL が含まれる可能性があり、アセットごとの明示的なコピーステータスフィールドはありません。生成は引き続き成功し、課金されます。1 つの正常に再ホストされたアセットから、すべての URL の有効期間を推測しないでください。 + +結果が Comfy ホストかどうかは、完了した呼び出しが後でその `Idempotency-Key` レコードから再生できるかどうかも決定します。上記の `Idempotency-Key` パラメーターは、再生できない場合に再試行が何で応答されるかを説明しています。 + + + +## モデルごとの入力および出力スキーマ + +各モデルのフィールドは `GET /v2/models/{provider}/{model}/openapi.json` から読み取ります。オペレーションの `requestBody` は入力の検証を記述しており、その `200` レスポンスは、スキーマが作成されている場合に出力の形状とメディアタイプを記述しています。`x-comfy-input-schema-authored` が false の場合、Router はモデル固有の事前検証なしで任意の JSON オブジェクトを受け入れます。プロバイダーの要件は引き続き適用されます。出力スキーマは結果を記述するものであり、Router は返されたプロバイダーのペイロードをそれらに対して検証しません。スキーマが作成されていない出力では、`application/json` ではなく `*/*` が使用される場合があります。デコードする前にレスポンスのコンテンツタイプを確認してください。 ## スキーマ ### RouterChargesOnPolicyRejection -このモデルがコンテンツポリシー上の理由で拒否する呼び出しが、それでも呼び出し元に課金されるかどうか。プロバイダーによって異なり、その違いは呼び出し時に判別できません。同じ呼び出しでエラーと課金の両方を目にしたユーザーには、事前にそれを知る手段がありません。そのため、プロバイダーごとの暗黙の了解に委ねるのではなく、呼び出しの前にモデルごとに明記されています。 +このモデルでコンテンツポリシーによる拒否が課金されるかどうか。不明な値は課金される可能性があるものとして扱います。 型: `string` ### RouterErrorResponse -Routerのリクエストレベルのエラーボディ: リクエストがモデルに到達しなかった場合、またはモデル自身が報告しなかった理由(認証、クォータ、不明なモデルID、プロバイダーのトランスポート)で失敗した場合に返されるものです。モデルレベルの検証失敗には独自の形状`RouterValidationErrorResponse`があります。FastAPIの`detail[]`配列をこの`detail`文字列に平坦化すると、SDKが分岐の判断に使用するフィールド単位の粒度が失われるためです。 +認証、アクセス、モデル検索、クォータ、プロバイダーのトランスポート失敗に対するエラーボディです。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | @@ -199,62 +238,62 @@ Routerのリクエストレベルのエラーボディ: リクエストがモデ ### RouterErrorType -Router障害の大まかで機械可読なバケットであり、`X-Comfy-Error-Type` レスポンスヘッダーにもミラーリングされるため、呼び出し元はボディを解析せずに分岐できます。このセットは15個の値に限定されており、リクエストレベルの6つのバケット(`invalid_input`、`content_policy_violation`、`provider_error`、`provider_timeout`、`insufficient_credits`、`model_not_found`)と、トランスポートレベルの`unauthorized`、`forbidden`、`concurrency_limit_exceeded`、`client_disconnected`、`internal_error`、`deadline_exceeded`、`not_enabled`、`service_unavailable`、`rate_limited`です。 +機械可読な Router エラーカテゴリ。`X-Comfy-Error-Type` ヘッダーでも送信されます。 型: `string` ### RouterModelBilling -呼び出し前に呼び出し元が把握しておくべき、価格ではなくモデル単位の課金に関する事実です。利用量やコストの数値がここに記載されることはありません。 +モデルを呼び出す前に確認すべき課金の挙動です。価格や利用量は含まれません。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | -| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | yes | - | このモデルがコンテンツポリシーに基づいて拒否した呼び出しが、それでも呼び出し元に課金されるかどうか。プロバイダーによって対応は異なり、その違いは呼び出し時には見えません。同じ呼び出しに対してエラーと課金の両方を確認したユーザーには、事前にそれを知る手段はありません。そのため、この情報はプロバイダーごとの慣習に委ねられるのではなく、呼び出し前にモデル単位で明記されます。 | +| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | はい | - | コンテンツポリシーを理由にこのモデルが拒否した呼び出しでも、呼び出し元に課金されるかどうか。プロバイダーによって扱いは異なり、その違いは呼び出し時には分かりません。同じ呼び出しについてエラーと課金の両方を目にしたユーザーは、事前にそれを知るすべがありません。そのため、プロバイダーごとの慣習に任せるのではなく、呼び出し前にモデル単位で明記されています。 | ### RouterModelDetail -1つのComfy Routerモデルに関するモデルごとの詳細。カタログ一覧で示されるすべての情報に加え、単一モデルルートのみが保持するモデルごとのフィールドを含みます。 +1つの Comfy Router モデルに関するモデル単位の詳細です。カタログ一覧で報告されるすべての情報に加え、単一モデルルートのみが保持するモデル単位のフィールドを含みます。 -[`RouterModelListEntry`](#routermodellistentry) と [`RouterModelDetailFields`](#routermodeldetailfields) で構成されます。 +[`RouterModelListEntry`](#routermodellistentry) と [`RouterModelDetailFields`](#routermodeldetailfields) を構成要素とします。 -型:`object` +型: `object` ### RouterModelDetailFields -カタログ一覧が保持しない `RouterModelDetail` の半分: モデルごとのフィールドで、1回の参照には値するものの、ページ分割されたカタログページのすべてのエントリで繰り返すほどではないものです。 +モデル詳細エンドポイントが返す任意フィールド。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | -| `input_schema_url` | 文字列 | いいえ | `format: uri`, `pattern: ^https://`, `maxLength: 2048` | このモデルの入力スキーマドキュメントへのポインタ: このモデルに対して `POST /v1/models/{provider}/{model}` が受け付けるボディの説明です。この契約の一部となるのはポインタのみです。ポインタが指すドキュメントは別途作成されます。モデル用のスキーマが作成されていない場合は存在しません。 | +| `input_schema_url` | 文字列 | いいえ | HTTPS URL、例: `https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json`、最大2048文字 | このモデルのOpenAPIドキュメントのURL。入力スキーマと出力スキーマを含みます。 | ### RouterModelId -正規の Comfy Router モデル ID です。`{provider}/{model}` は、`POST /v1/models/{provider}/{model}` でモデルを指定する際に使用する正確な値です。そのため、呼び出し元はこの値をそのままパスに埋め込むことができ、他の情報から再導出する必要はありません。`pattern` は `RouterProviderSegment` と `RouterModelSegment` を単一の `/` で連結したもので、`maxLength` はそれらの合計にそのセパレータを加えた長さです。 +`POST /v2/models/{provider}/{model}` で使用されるモデル ID です。 -型: `string`、`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`、`maxLength: 193` +型: `string`、モデル ID(例: `anthropic/claude-opus-4-6`)、最大 193 文字 ### RouterModelInput -パートナーモデルのネイティブな JSON 入力ドキュメントで、プロバイダーにそのまま転送されます。具体的な形状は Comfy ではなくパートナーが所有するため、これはオープンオブジェクトです。Router はフィールドを絞り込んだり、名前を変更したり、再ラップしたりしません。これは名前付きコンポーネントです(インラインの無名オブジェクトにはなりません)。ComfyUI の仕様駆動のコード生成では、生成対象のクラスが必要だからです。 +モデル入力オブジェクトです。フィールドと検証については、選択済みのモデルの OpenAPI ドキュメントを参照してください。 型: `object` ### RouterModelInputSchemaDocument -単一の Comfy Router モデルの入力を説明するスタンドアロンの OpenAPI ドキュメントです。これは、そのモデルに対して `POST /v1/models/{provider}/{model}` が受け付けるボディです。`GET /v1/models/{provider}/{model}/openapi.json` が返すのはこのドキュメントです。 +単一モデルの入力と出力のためのスタンドアロン OpenAPI ドキュメントです。 型: `object` ### RouterModelListEntry -Routerモデルカタログの1エントリです。実行可能なモデルの識別情報であり、それ以外の何ものでもありません。モデルごとの詳細ルートは、この同じエントリを再掲するのではなく合成するため、名前は`...Summary`ではなく`...ListEntry`となっています。カタログエントリの定義は正確に1つだけ存在する必要があります。モデルごとの詳細と、モデルごとの入出力スキーマはそれぞれ独自のルートであるため、この形状は、呼び出し元がモデルを呼び出すために必要な最小限のものに留まっています。これは意図的なものであり、SDKがコールドスタート時に取得するペイロードだからです。`id`は`provider`と`model`を`/`で連結したものです。この2つのフィールドは個別にも保持されるため、呼び出し元は文字列を分割することなく呼び出しパスを構成できます。 +モデルのIDと請求に関する事実です。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | -| `id` | [`RouterModelId`](#routermodelid) | はい | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 193` | 正規のComfy RouterモデルID、`{provider}/{model}`です。`POST /v1/models/{provider}/{model}`でモデルを指定する正確な値であり、呼び出し元は何かから再導出することなく、この値をそのパスに挿入できます。その`pattern`は`RouterProviderSegment`と`RouterModelSegment`を単一の`/`で連結したものであり、`maxLength`はそれらの合計にその区切り文字を加えたものです。 | -| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | はい | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 正規の`{provider}/{model}[/{variant}]`モデルIDの小文字の`provider`セグメントです。つまり、モデルが指定されているパートナーです。呼び出しルートの`provider`パスパラメータとカタログエントリの`provider`フィールドは、どちらもこの1つのスキーマを参照しており、これにより、リストされたIDと受け入れられるIDが乖離しないようになっています。 | -| `model` | [`RouterModelSegment`](#routermodelsegment) | はい | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 正規の`{provider}/{model}[/{variant}]`モデルIDの小文字の`model`セグメントです。つまり、そのプロバイダー内で実行するモデルです。`RouterProviderSegment`と同じ乖離防止の理由により、呼び出しルートの`model`パスパラメータとカタログエントリの`model`フィールドで共有されています。 | -| `billing` | [`RouterModelBilling`](#routermodelbilling) | はい | - | 呼び出し元が呼び出し前に必要とするモデルごとの請求の事実です。価格ではありません。使用量やコストの数値がここに現れることはありません。 | +| `id` | [`RouterModelId`](#routermodelid) | はい | モデルID(例: `anthropic/claude-opus-4-6`)、最大193文字 | 正規のComfy RouterモデルID、`{provider}/{model}`です。`POST /v2/models/{provider}/{model}`でモデルを指定する正確な値であり、呼び出し元は何かから再導出することなく、この値をそのパスに挿入できます。その`pattern`は`RouterProviderSegment`と`RouterModelSegment`を単一の`/`で連結したものであり、`maxLength`はそれらの合計にその区切り文字を加えたものです。 | +| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | はい | 英数字のスラッグ(例: `anthropic`)、最大64文字 | 正規の`{provider}/{model}[/{variant}]`モデルIDの小文字の`provider`セグメントです。つまり、モデルが指定されているパートナーです。呼び出しルートの`provider`パスパラメータとカタログエントリの`provider`フィールドは、どちらもこの1つのスキーマを参照しており、これにより、リストされたIDと受け入れられるIDが乖離しないようになっています。 | +| `model` | [`RouterModelSegment`](#routermodelsegment) | はい | 英数字のスラッグ(例: `claude-opus-4-6`)、最大128文字 | 正規の`{provider}/{model}[/{variant}]`モデルIDの小文字の`model`セグメントです。つまり、そのプロバイダー内で実行するモデルです。`RouterProviderSegment`と同じ乖離防止の理由により、呼び出しルートの`model`パスパラメータとカタログエントリの`model`フィールドで共有されています。 | +| `billing` | [`RouterModelBilling`](#routermodelbilling) | はい | - | 呼び出し元が呼び出し前に必要とするモデルごとの請求に関する事実です。価格ではありません。使用量やコストの数値がここに現れることはありません。 | ### RouterModelListResponse @@ -264,42 +303,42 @@ Routerモデルカタログの1ページ。 | --- | --- | --- | --- | --- | | `data` | [`RouterModelListEntry`](#routermodellistentry) の配列 | 必須 | - | このページに含まれるモデル。最大で `limit` 個。 | | `has_more` | ブール | 必須 | - | このページの先に別のページが存在するかどうか。これが true の間はウォークを続けてください。`data` が短い、または空だからといって、カタログの終端を推測しないでください。 | -| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 任意 | `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` | Routerリストへの不透明カーソル。サーバーによって生成され、ラウンドトリップされるだけです。オフセットでもモデルIDでもなく、順序付けもされておらず、カタログの再構築をまたいで安定することもありません。そのため、カーソルを解析したり、インクリメントしたり、取得元のウォークを超えて永続化したりすることは、すべて契約の範囲外です。カーソルがオフセットではなく使用されるのは、カタログが移動するリストだからです。オフセットによるウォークでは、ウォークの途中でエントリが追加または削除されると、エントリが暗黙的にスキップまたは繰り返され、呼び出し元はそれが発生したことを認識できません。 | -| `limit` | 整数 | 必須 | `minimum: 1`, `maximum: 100` | 実際に提供されたページサイズ。最大値を超える `limit` のリクエストは拒否されず、最大値にクランプされます。そのため、この値はリクエストされた値より小さくなることがあります。ページングには送信した値ではなくこの値を使用してください。そうしないと、実際には受信していない行があると想定してしまうことになります。 | +| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 任意 | `next_cursor` として返される不透明カーソル、1~512文字 | Routerリストへの不透明カーソル。サーバーによって生成され、ラウンドトリップされるだけです。オフセットでもモデルIDでもなく、順序付けもされておらず、カタログの再構築をまたいで安定することもありません。そのため、カーソルを解析したり、インクリメントしたり、取得元のウォークを超えて永続化したりすることは、すべて契約の範囲外です。カーソルがオフセットではなく使用されるのは、カタログが移動するリストだからです。オフセットによるウォークでは、ウォークの途中でエントリが追加または削除されると、エントリが暗黙的にスキップまたは繰り返され、呼び出し元はそれが発生したことを認識できません。 | +| `limit` | 整数 | 必須 | 1~100 | 実際に提供されたページサイズ。最大値を超える `limit` のリクエストは拒否されず、最大値にクランプされます。そのため、この値はリクエストされた値より小さくなることがあります。ページングには送信した値ではなくこの値を使用してください。そうしないと、実際には受信していない行があると想定してしまうことになります。 | ### RouterModelOutput -パートナーモデルのネイティブなJSON出力ドキュメントであり、呼び出し元にそのまま返されます。その具体的な形状はComfyではなくパートナーが所有しているため、これはオープンなオブジェクトです。Routerはフィールドの絞り込み、名前の変更、再ラップを行いません。これは名前付きコンポーネントです(インラインの匿名オブジェクトではありません)。ComfyUIのスペック駆動のコード生成では、生成対象のクラスが必要になるためです。 +モデルの結果オブジェクトです。正確な形状については、選択済みモデルの出力スキーマを参照してください。 型: `object` ### RouterModelSegment -正規の `{provider}/{model}[/{variant}]` モデル ID の小文字の `model` セグメント。そのプロバイダー内で実行するモデルを指します。`RouterProviderSegment` と同じくドリフトを防ぐため、呼び出しルートの `model` パスパラメータとカタログエントリの `model` フィールドで共有されます。 +`{provider}/{model}` モデル ID のモデル部分です。 -型: `文字列`。`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`、`maxLength: 128` +型: `文字列`。英数字のスラッグ(例: `claude-opus-4-6`)、最大 128 文字 ### RouterPageCursor -Router リストに対する**不透明**なカーソルです。これはサーバーによって生成され、常にラウンドトリップされるだけです。オフセットでもなく、モデルIDでもなく、順序付けもされておらず、カタログの再構築をまたいでも安定しません。そのため、カーソルを解析したり、インクリメントしたり、導出元となった走査を超えて永続化したりすることは、すべて契約の範囲外です。カタログが変動するリストであるため、オフセットではなくカーソルが採用されています。オフセットによる走査では、走査の途中でエントリが追加または削除されると、エントリが暗黙的にスキップまたは繰り返され、呼び出し側はその発生を検知できません。 +不透明なカタログカーソルです。変更を加えず、そのまま `cursor` として渡し直してください。 -型: `string` -- `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` +型: `string` -- `next_cursor` として返される不透明なカーソル、1~512文字 ### RouterProviderSegment -標準の `{provider}/{model}[/{variant}]` モデルIDの小文字の `provider` セグメント。これは、モデルがアドレス指定されるパートナーを示します。呼び出しルートの `provider` パスパラメータとカタログエントリの `provider` フィールドは、どちらもこの単一のスキーマを参照します。これにより、リストされたIDと受け入れられるIDが乖離するのを防ぎます。 +`{provider}/{model}` モデルIDのプロバイダー部分。 -型: `string`。`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`、`maxLength: 64` +型: `string`。英数字のスラッグ(例: `anthropic`)、最大64文字 ### RouterValidationErrorContext -1つの `RouterValidationErrorDetail` に対する違反されたバウンドで、プロバイダーからそのまま引き継がれます。例えば、`greater_than` に付随する `{"limit_value": 8}`、`image_too_small` に付随する `{"min_width": 512}`、`file_too_large` に付随する `{"max_size_bytes": 10485760}` などです。キーのセットはプロバイダーとエラータイプに固有であるため、これは意図的にオープンなオブジェクトです。固定のフィールドリストに絞り込んだり、`msg` 文字列に折り込んだりすることは、移植されたインテグレーションがコンパイルされ、バウンドを読み取るブランチを静かに失う、まさにその方法です。エラータイプがバウンドを持たない場合は存在しません。 +失敗した検証ルールに関する、プロバイダー提供の詳細。 型: `object` ### RouterValidationErrorDetail -FastAPI 形式のモデルレベルの検証エラー 1 件分です。`type` は、`RouterErrorType` の粗いバケットでは表現できない粒度である、プロバイダー固有の具体的な理由(`value_error`、`missing`、`image_too_small`、`unsupported_audio_format`、`greater_than`、`file_too_large` など)を保持します。同じ理由で、これはオープンな文字列であり、`enum` ではありません。プロバイダーの語彙は 2 つの層にわたって約 48 の値に上り、当社ではなくプロバイダーのリリースサイクルに応じて増えていきます。モデル化されていない値は、デシリアライゼーションに失敗するのではなく、呼び出し元に届かなければなりません。 +フィールドレベルの検証失敗 1 件分です。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | @@ -311,12 +350,12 @@ FastAPI 形式のモデルレベルの検証エラー 1 件分です。`type` ### RouterValidationErrorInput -拒否された入力値をそのままエコーバックしたものです。呼び出し元は `loc` から値を再導出しなくても、何が拒否されたかを確認できます。値はあらゆるJSON型(文字列、数値、ブール、配列、オブジェクト、null)を取り得るため、このスキーマはオブジェクトに限定せず、意図的に型指定なしとしています。プロバイダーが入力をエコーバックしない場合、このフィールドは存在しません。 +プロバイダーがそれを含める場合の、拒否された入力値です。 ### RouterValidationErrorResponse -Routerのモデルレベルの`422`ボディ(FastAPI形式):リクエストはモデルに到達するのに十分な形式であり、モデルがその内容を拒否したことを示します。これ自体には`error_type`が含まれないことに注意してください。その役割はレスポンスの`X-Comfy-Error-Type`ヘッダーが担うため、クライアントは2種類のRouterエラーボディのどちらを受信したかを先に判断することなく、ヘッダーから大まかな分類を読み取ることができます。 +`422` 検証エラーボディ。カテゴリは `X-Comfy-Error-Type` を参照してください。 | フィールド | 型 | 必須 | 制約 | 説明 | | --- | --- | --- | --- | --- | -| `detail` | [`RouterValidationErrorDetail`](#routervalidationerrordetail)の配列 | はい | - | リクエストで見つかったすべての検証エラー。問題のあるフィールドごとに1つのエントリ。 | +| `detail` | [`RouterValidationErrorDetail`](#routervalidationerrordetail) の配列 | はい | - | リクエストで見つかったすべての検証エラー。問題のあるフィールドごとに1つのエントリ。 | diff --git a/ko/development/comfy-router/api.mdx b/ko/development/comfy-router/api.mdx new file mode 100644 index 000000000..4dd57c339 --- /dev/null +++ b/ko/development/comfy-router/api.mdx @@ -0,0 +1,278 @@ +--- +title: "Comfy Router API 사용하기" +sidebarTitle: "Router API 사용하기" +description: "모델을 선택하고, 스키마를 검사하고, Router를 안전하게 호출하며, 결과, 오류, 재시도, 결제를 처리합니다." +translationSourceHash: cd661025 +translationFrom: development/comfy-router/api.mdx +translationBlockHashes: + "_intro": 1b554933 + "Discover the catalog": f4cd9b87 + "Read one model": 6d96021f + "Read input and output schemas": 0b7e6eaa + "Validation and fallback schemas": 0f3cb67c + "Read the result": fab75186 + "Handle errors, retries, and billing": 41a1e0ab + "Per-model examples": ed06edba + "Next": 30e39619 +--- +모델을 선택하고, 해당 스키마를 확인한 뒤 `POST /v2/models/{provider}/{model}` 엔드포인트를 호출하세요. 라우트와 인증은 모든 모델에서 동일하게 유지됩니다. + +## 카탈로그 살펴보기 + +생성에 사용한 것과 동일한 API 키로 모델을 나열합니다: + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + "https://api.comfy.org/v2/models?limit=50" +``` + +축약된 카탈로그 응답: + +### 모델 과금 정보 {#model-billing-facts} + +```json +{ + "data": [ + { + "id": "bfl/flux-2-pro", + "provider": "bfl", + "model": "flux-2-pro", + "billing": { "charges_on_policy_rejection": "no" } + } + ], + "has_more": true, + "next_cursor": "example-cursor", + "limit": 50 +} +``` + +호출 경로에는 `id`를 사용합니다. `billing` 객체에는 가격이 아니라 청구 관련 사실 정보가 담깁니다. 이 정보에 의존하기 전에 [정책 거부 billing](/ko/development/comfy-router/api#model-billing-facts)을 읽어 보세요. + +### 페이지네이션 + +- `has_more`가 `true`이면 반환된 `next_cursor`를 `cursor`로 전달합니다. 이전 페이지가 요청한 것보다 짧았더라도 `has_more`가 `false`이면 중단합니다. +- 커서는 불투명한 값으로 취급합니다. 값을 URL 인코딩하세요. 예를 들어 cURL에서는 `--get --data-urlencode "cursor=$NEXT_CURSOR"`를 사용합니다. 오프셋을 계산하거나 커서를 수정하지 마세요. +- `limit`의 기본값은 20이며 최대 100으로 제한됩니다. 상한을 초과하는 값은 상한으로 잘리고, 0과 음수 값은 기본값을 선택합니다. 응답에는 실제로 사용된 limit이 보고됩니다. +- 유효하지 않은 커서는 `400` / `invalid_input`을 반환합니다. 목록을 조용히 재시작하지 않습니다. +- 커서는 카탈로그가 업데이트되어도 유효하게 남을 수 있지만, 순회는 스냅샷이 아닙니다. 현재 위치 이전에 추가된 모델은 해당 순회에 나타나지 않을 수 있습니다. + +`503` / `service_unavailable`은 일시적입니다. 백오프를 두고 재시도하세요. 빈 카탈로그로 취급하지 마세요. SDK run 메서드는 선택된 모델을 직접 호출합니다. + +## 모델 하나 읽기 {#read-one-model} + +모델 ID를 알고 있다면 카탈로그 항목을 직접 가져오세요: + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro +``` + +모델 상세 엔드포인트를 사용하면 전체 카탈로그를 순회할 필요가 없습니다. 전체 항목 필드는 [API reference](/ko/development/comfy-router/reference)를 참고하세요. + +## 입력 및 출력 스키마 읽기 + +각 모델은 독립적인 OpenAPI 문서를 제공합니다: + +```bash +curl --dump-header schema-headers.txt \ + -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +모델 operation 내에서 `requestBody`는 입력을 설명하고, 출력 스키마가 작성된 경우 `200` 응답이 출력을 설명합니다. 입력 검증과 출력 문서화는 서로 다릅니다. Router는 입력 스키마에 대해서는 검증하지만, 반환된 공급자 결과를 출력 스키마에 대해서는 검증하지 않습니다. + +출력의 필드뿐 아니라 미디어 타입도 확인하세요. 작성되지 않은 출력은 `*/*`를 사용할 수 있으며, 일부 모델은 JSON 대신 바이너리 데이터를 반환합니다. + +### 스키마 캐시하기 + +스키마와 해당 `ETag`를 저장하세요. 나중에 스키마를 가져올 때 해당 ETag를 `If-None-Match`에 전달하세요. `304`에는 본문이 없으므로 캐시된 문서를 유지하세요. `200`은 대체 문서와 ETag를 제공합니다. + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + -H 'If-None-Match: "previous-etag-value"' \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +스키마 라우트는 `Cache-Control: private, must-revalidate`를 사용합니다. 인증된 응답은 공유 캐시에 저장하지 마세요. 이 ETag/304 동작은 스키마 엔드포인트에만 적용됩니다. + +## 검증 및 대체 스키마 + +### 유효성 검사 오류 {#validation-errors} + +작성된 입력 스키마는 공급자 호출 이전에 `422`와 `detail[]` 배열로 잘못된 필드를 거부합니다. `loc`에서 필드 경로를 확인하세요. 자세한 내용은 [검증 오류](/ko/development/comfy-router/api#validation-errors)를 참조하세요. + +일부 스키마는 모든 JSON 객체를 허용하며 `x-comfy-input-schema-authored: false`를 설정합니다. Router는 모델별 검증 없이 이러한 요청을 전달하므로, 공급자가 여전히 이를 거부할 수 있습니다. + +`bfl/flux-2-pro`는 현재 이 대체 방식을 사용합니다. 필수 필드는 공급자 문서나 해당 모델 페이지를 확인하세요. + +## 결과 읽기 + +Router는 각 모델의 터미널 결과 형태를 반환합니다. 공통된 이미지, 비디오, 텍스트 엔벨로프는 없습니다: BFL 이미지 출력은 `result.sample`을 사용하는 반면, 다른 모델은 URL 목록이나 인라인 바이트를 반환할 수 있습니다. + +일부 에셋 URL은 Comfy에서 재호스팅되며, 나머지는 공급자 URL 또는 인라인 바이트로 유지됩니다. [결과 에셋](/ko/development/comfy-router/reference#결과-에셋)을 확인하고 만료되는 에셋은 즉시 다운로드하세요. 리플레이는 URL을 갱신하지 않습니다. + +## 오류, 재시도, 과금 처리하기 {#handle-errors-retries-and-billing} + +### 오류를 방어적으로 읽기 + +실패한 요청은 프록시의 HTML 오류 페이지, 잘린 JSON, 또는 일반 텍스트를 반환할 수 있습니다. JSON 파싱 오류 때문에 HTTP 상태나 요청 ID가 가려지지 않도록 하세요. 다음 헬퍼는 Python에서는 `httpx.Response`를, TypeScript에서는 Fetch `Response`를 사용합니다. SDK 자체는 일반적인 SDK 호출에 대해 이미 오류 필드를 제공합니다. + + + +```python +def read_router_error(response): + body = None + if response.headers.get("content-type", "").startswith("application/json"): + try: + body = response.json() + except ValueError: + body = None + + detail = body.get("detail") if isinstance(body, dict) else None + return { + "status": response.status_code, + "request_id": response.headers.get("X-Comfy-Request-Id"), + "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), + "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", + "validation": detail if isinstance(detail, list) else [], + } +``` + +```typescript +async function readRouterError(response: Response) { + let body: unknown; + try { + body = JSON.parse(await response.text()); + } catch { + body = undefined; + } + + const detail = + typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; + + return { + status: response.status, + requestId: response.headers.get("X-Comfy-Request-Id"), + errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", + message: typeof detail === "string" ? detail : `HTTP ${response.status}`, + validation: Array.isArray(detail) ? detail : [], + }; +} +``` + +### 유효성 검사 오류 + +Router `422`는 공급자 호출 이전에 유효성 검사가 실패했음을 의미하며, 과금되지 않습니다. 응답 본문에는 `detail[]` 배열이 있고, 거부된 필드마다 항목이 하나씩 들어 있습니다. 오류 카테고리는 본문이 아니라 `X-Comfy-Error-Type`에 있습니다. 예를 들어: + +```json +{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} +``` + +이것은 예시 형태입니다. 관대한 입력 스키마를 가진 모델은 Router `422`를 반환하는 대신 누락된 필드를 공급자에게 전달할 수 있습니다. + +| 필드 | 의미 | +| --- | --- | +| `loc` | 거부된 필드의 경로이며, 가장 바깥쪽 세그먼트가 먼저 옵니다. | +| `msg` | 사람이 읽을 수 있는 실패 사유입니다. | +| `type` | `missing`, `greater_than`, `image_too_small`과 같은 공급자별 사유입니다. | +| `ctx` | 해당 공급자 오류에 대한 선택적 경계 값 또는 추가 데이터입니다. | + +`400`은 이러한 필드별 검증 본문이 아니라, 잘못된 형식의 cursor와 같은 요청 수준의 문제를 나타냅니다. [오류 레퍼런스](/ko/development/comfy-router/reference#오류-분류)에 지원되는 카테고리가 나열되어 있습니다. 제어 흐름상 알 수 없는 카테고리는 `internal_error`로 처리하되, 진단을 위해 원본 값은 유지하세요. 새로운 오류 값을 강제로 거부하거나, 예상되는 오류 카테고리가 이미 발생한 것처럼 구현하지 마세요.### 안전하게 재시도 + +**전송하기 전에** 모델 ID 및 요청 본문과 함께 키를 저장하세요. 해당 논리적 호출의 모든 시도에서 이 키를 재사용하세요. Router는 응답에서 `Idempotency-Key`를 반환하지 않습니다. Python SDK는 발생한 예외에 키를 포함하지만, TypeScript에서는 직접 제공한 키를 스스로 보관해야 합니다. + +키는 자격 증명이 지닌 워크스페이스 내에서 공유되며, 자격 증명에 워크스페이스가 없으면 사용자 범위로 한정됩니다. 해당 범위에서 고유한 UUID를 사용하고 동일한 자격 증명으로 재시도하세요. 다른 워크스페이스 멤버의 키를 재사용하면 그 멤버의 기록된 결과가 반환되거나 충돌이 발생할 수 있고, 자격 증명을 변경하면 별도의 과금되는 호출이 시작될 수 있습니다. + +### 타임아웃과 수집 {#timeouts-and-collection} + +Router는 키가 지정된 응답 또는 수집 상태를 24시간 동안 보관하며, 재시도해도 새로운 보관 기간이 시작되지 않습니다. 해당 상태가 만료되면 이전 키로 결과를 복구하거나 새로운 디스패치를 방지할 것이라고 기대하지 마세요. 또한 키가 만료된 자산 URL을 다시 사용할 수 있게 해주지도 않습니다.### 재시도 결과 + +### 재시도 결과 {#retry-outcomes} + +| 상태 | 버킷 | 의미 | 수행할 작업 | +| --- | --- | --- | --- | +| `200` | `Idempotent-Replayed: true` 헤더 | Router가 결과를 재생했거나 수집된 생성을 반환했습니다. | 결과를 사용하세요. 재생은 두 번째 Comfy 청구가 아닙니다. | +| `409` | `concurrency_limit_exceeded` | 해당 키의 원본 호출이 아직 실행 중입니다. | `Retry-After`만큼 기다린 후 동일한 키를 다시 보내세요. | +| `504` | `Retry-After`가 있는 `deadline_exceeded` | Router가 수락된 공급자 작업에 대한 핸들을 보유하고 있습니다. | 명시된 간격만큼 기다린 후 동일한 요청과 키를 다시 보내 수집하세요. 아직 실행 중일 수 있습니다. | +| `429` | `rate_limited` | 요청 허용량이 소진되었습니다. | `Retry-After`만큼 기다린 후 동일한 키로 재시도하세요. | +| `429` | `concurrency_limit_exceeded` | 동시 호출 또는 확정 지출 한도가 요청을 거부했습니다. | 동시성을 줄이고 동일한 키로 재시도하세요. 지출 헤더를 확인하세요. | +| `409` | `invalid_input` | 요청이 키의 원본 요청과 다르거나, 해당 기록을 재생할 수 없습니다. | 충돌을 확인하세요. 요청이 변경되었다면 원본 요청을 복원하세요. 새롭고 청구 가능성이 있는 호출을 의도할 때만 새 키를 시작하세요. | +| 수집 힌트가 없는 `504`, 다른 `5xx`, 또는 응답 없음 | 경우에 따라 다름 | 상태만으로는 작업이 수락, 보유 또는 해제되었는지 식별할 수 없습니다. | 동일한 키와 요청을 유지하세요. 제한된 재시도 정책을 사용하세요. 복구가 보장되지 않습니다. | + +충돌은 방법, 모델 경로, 쿼리, 본문을 비교합니다. 키는 지나치게 큰 응답, 실패한 응답 쓰기, 또는 안전하게 재생할 수 없는 자산 이후에 재생 불가능해질 수 있습니다. 기다려도 소비된 결과는 복구되지 않습니다. 새 키는 새 호출을 시작하며, 이전 출력을 가져오지 않습니다. + +공급자 디스패치 이전의 거부는 키를 해제합니다. 디스패치된 호출은 공급자 핸들을 보유하거나 재생 불가능해질 수 있습니다. 상태 코드만으로 키 상태나 청구를 추론하지 마세요. + +호출이 타임아웃되었거나 연결이 끊어졌다는 이유만으로 완전히 새로운 키를 발급하지 마세요. Router가 이미 생성을 수락했다면 새 키는 두 번째 논리적 실행을 생성하고 따라서 두 번째 청구 가능한 결과를 만들 수 있습니다. 원본 호출이 복구 불가능하다는 것을 알기 전까지 동일한 키를 재사용하세요. + +#### 타임아웃과 수집 + +하나의 Router 호출은 기본적으로 10분 동안 연결을 유지할 수 있습니다. 클라이언트 타임아웃을 그 한도보다 높게 설정하여 불투명한 로컬 중단 대신 타입이 지정된 `504`와 요청 ID를 유지하세요. + +`deadline_exceeded`는 Router의 대기 한도이고, `provider_timeout`은 공급자의 데드라인입니다. 완료된 공급자 생성은 호출자가 타임아웃을 받거나 연결이 끊어졌더라도 청구될 수 있습니다. 클라이언트 취소는 대기와 SDK 재시도를 중단하지만, 수락된 공급자 작업을 반드시 취소하지는 않습니다. + +제출 후 폴링 방식의 공급자의 경우, 보유된 핸들을 통해 동일 키 요청이 원본 생성을 계속 수집할 수 있습니다. 복구 가능한 핸들 없이 중단된 디스패치된 호출은 재생 가능한 결과 없이 키를 소비할 수 있으며, 이후 동일 키 재시도는 `409`를 반환합니다. 성공이 캡처되지 않은 공급자 귀속 일시적 실패는 여전히 다른 시도를 위해 키를 해제할 수 있습니다. 핸들의 부재만으로는 어떤 결과가 적용되는지 알 수 없습니다. + +SDK는 제한된 예산 내에서 일부 실패를 재시도합니다. 오류가 반환되면 새 요청과 키를 생성하는 대신 요청과 키를 유지하세요. 원시 HTTP의 경우, 이 예제는 두 가지 명시적 수집 힌트만 재시도합니다: + +```python +import os +import time + +import httpx + + +def collect(model, arguments, key, attempts=3): + with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: + for attempt in range(attempts): + response = client.post( + f"https://api.comfy.org/v2/models/{model}", + headers={"X-API-Key": os.environ["COMFY_API_KEY"], + "Idempotency-Key": key}, + json=arguments, + ) + if response.is_success: + return response.json() + + category = response.headers.get("X-Comfy-Error-Type") + collecting = (response.status_code, category) in { + (409, "concurrency_limit_exceeded"), + (504, "deadline_exceeded"), + } + delay = response.headers.get("Retry-After", "") + if not collecting or not delay.isdigit() or attempt == attempts - 1: + response.raise_for_status() + time.sleep(int(delay)) + raise ValueError("attempts must be positive") +``` + +원본 모델, 본문, 저장된 키를 전달하세요. 이것은 총 소요 시간이 아니라 시도 횟수를 제한합니다. 각 호출은 클라이언트 타임아웃까지 지속될 수 있고 각 대기는 `Retry-After`를 따릅니다. HTTP 오류는 검사를 위해 응답을 보존하고, 전송 오류는 키를 교체하지 않고 전파됩니다. 애플리케이션에 더 긴 복구 창이 필요하면 저장된 키로 나중에 수집을 예약하세요.### 모델 청구 정보 + +`GET /v2/models`와 모델 상세 응답에는 `billing.charges_on_policy_rejection`이 포함됩니다. 이 값은 정책 거부를 설명하는 것으로, 모든 실패나 가격 추정치를 의미하지 않습니다. + +| 값 | 의미 | +| --- | --- | +| `yes` | 정책 거부 시 과금됩니다. | +| `no` | 정책 거부 시 과금되지 않습니다. | +| `unknown` | 아직 이 동작이 확립되지 않았습니다. 과금될 수 있다고 가정하세요. | + +이 문자열들은 명시적으로 비교하세요. `"no"`는 Python과 JavaScript에서 truthy입니다. 인식할 수 없는 값은 모두 `unknown`으로 취급하세요. 크레딧 부족으로 거부된 요청은 `insufficient_credits`를 보고합니다. + +공급자의 페이로드에는 자체 비용이나 사용량 수치가 포함될 수 있지만, 이는 Comfy 청구가 아닙니다. `X-Comfy-Credits-Used`는 허용 목록에 포함된 공급자의 경우 나타날 수 있지만 보편적이지 않으며 재전송되지 않습니다. 청구 내역을 대조하려면 [워크스페이스 사용량 및 인보이스](https://platform.comfy.org)를 사용하세요. 청구를 조사할 때는 요청 ID를 보존하세요. + +## 모델별 예시 + +- [Google Gemini](/ko/development/comfy-router/models/google/gemini/code) +- [Nano Banana 2](/ko/development/comfy-router/models/google/nano-banana-2/code) +- [Nano Banana 2 Lite](/ko/development/comfy-router/models/google/nano-banana-2-lite/code) +- [Nano Banana Pro](/ko/development/comfy-router/models/google/nano-banana-pro/code) +- [FLUX 1.1 Pro Ultra](/ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code) +- [FLUX Kontext](/ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code) +- [FLUX Video Upscale](/ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code) +- [FLUX 3 Video](/ko/development/comfy-router/models/black-forest-labs/flux-3-video/code) +- [Ideogram 4](/ko/development/comfy-router/models/ideogram/ideogram-v4/code) + +## 다음 + +- [빠른 시작](/ko/development/comfy-router/quickstart): 설치, 호출, 이미지 저장. +- [API 레퍼런스](/ko/development/comfy-router/reference): 엔드포인트 파라미터, 스키마, 응답 코드. diff --git a/ko/development/comfy-router/headers.mdx b/ko/development/comfy-router/headers.mdx new file mode 100644 index 000000000..5ff60b9bc --- /dev/null +++ b/ko/development/comfy-router/headers.mdx @@ -0,0 +1,95 @@ +--- +title: "Comfy Router 헤더" +sidebarTitle: "헤더" +description: "모든 모델에 대해 Comfy Router로 보낼 수 있는 요청 헤더와 Comfy Router가 반환하는 응답 헤더입니다. 인증, 멱등성, 요청 ID, 오류 버킷, 재시도 속도 조절, 지출 한도를 다룹니다." +translationSourceHash: d82c9e22 +translationFrom: development/comfy-router/headers.mdx +translationBlockHashes: + "_intro": 6e9409a3 + "Request headers": 1a4e6df7 + "Status codes that carry two meanings": f390ff0e + "Next": 31f315d9 +--- +모든 Router 모델은 자체 JSON 본문과 함께 `POST /v2/models/{provider}/{model}`를 사용합니다. 이 페이지에서는 모델 간에 공유되는 헤더를 다루며, [API reference](/ko/development/comfy-router/reference)에는 생성된 계약이 나열되어 있습니다. + +Comfy SDK(`comfy-sdk`는 Python용, `@comfyorg/sdk`는 TypeScript용)는 인증을 처리하고 idempotency key를 생성합니다. 아래에 설명된 대로 선택된 응답 메타데이터를 노출합니다. Raw HTTP 클라이언트는 헤더를 직접 전송하고 읽어야 합니다. + +## 요청 헤더 + + + [Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 생성한 `comfyui-...` 형식의 Comfy API 키입니다. 이 키는 워크스페이스의 모델 접근 권한과 크레딧 잔액을 사용합니다. `Authorization: Bearer comfyui-...` 형식으로 보낼 수도 있으며, 두 헤더가 모두 있으면 `X-API-Key`가 우선합니다. + + + + `Bearer `. `comfyui-` 값은 API 키입니다. 그 외의 값은 Comfy Cloud JWT로 처리됩니다. + + + + 하나의 논리적 생성을 식별합니다. 호출 전에 UUID를 생성해 저장한 뒤, 변경되지 않은 요청을 재시도할 때 재사용하세요. 이 키는 최대 24시간 동안 결과를 재생하거나 수락된 작업을 수집할 수 있습니다. SDK는 키를 자동으로 생성하며 직접 지정할 수도 있습니다(Python에서는 `idempotency_key=`, TypeScript에서는 `idempotencyKey`). 충돌, 만료, 재생 불가능한 결과에 대해서는 [재시도 결과](/ko/development/comfy-router/api#retry-outcomes)를 참조하세요. + + + + `application/json`. 모델의 네이티브 JSON 입력을 전송합니다. 필드와 검증 요구 사항은 모델마다 다릅니다. [Router API 사용하기](/ko/development/comfy-router/api)를 참조하세요. + + + + `GET /v2/models/{provider}/{model}/openapi.json`에서만 사용합니다. 이전 `200` 응답에서 받은 `ETag`를 전송하세요. 여전히 일치하면 동일한 `ETag`와 함께 본문 없는 `304`가 반환됩니다. 모델의 스키마를 프로세스가 실행되는 동안 캐시하고, 매 호출 전에 다시 읽는 대신 이 방식으로 재검증하세요. + + +## Response headers + + + Identifies this HTTP request. Include it when contacting support. TypeScript exposes it as `requestId`; Python exposes `request_id` on errors. + + + + The machine-readable error category. On a `422`, use this header because the validation body has `detail[]` and no `error_type`. Combine it with the HTTP status to decide what to do. Treat an unknown value as `internal_error` for control flow and preserve it for diagnostics. + + + + Present and `true` when Router serves a stored result instead of running the model again. It is absent on a fresh run. + + + + Seconds to wait before retrying. On `409` / `concurrency_limit_exceeded` or `504` / `deadline_exceeded`, retry the same request and key after the wait. On `429` / `rate_limited`, it tells you when the rate limit resets. + + + + The ceiling on partner spend committed to calls still running, in USD cents. An enforcing spend gate can return it on admitted responses and on its `429` refusals. It is absent when the gate is not enforcing or a different control refused the request. + + + + USD cents currently committed to calls in flight. An admitted response includes its own call; a `429` excludes the refused call. Sent alongside `X-Committed-Spend-Limit`. + + + + USD cents left below the committed-spend ceiling. It can be positive on a refusal when the requested call costs more than the remaining amount. + + + + On `GET /v2/models/{provider}/{model}/openapi.json`. Store it and send it back as `If-None-Match` to revalidate a cached schema. + + + + On the schema route: `private, must-revalidate`. Keep the response in a private cache and revalidate stale copies with the `ETag`. + + +## 두 가지 의미를 지닌 상태 코드 + +세 가지 상태는 두 버킷에 걸쳐 공유되며, 이를 구분해 주는 것이 바로 헤더입니다: + +| 상태 | `X-Comfy-Error-Type` | 해야 할 일 | +| --- | --- | --- | +| `409` | `concurrency_limit_exceeded` | 이 키에 대한 원본 호출이 아직 실행 중입니다. `Retry-After`를 기다린 후 동일한 키를 다시 보내세요. | +| `409` | `invalid_input` | 충돌을 확인하세요. 요청을 변경했다면 원본 요청으로 복원하세요. 이미 소비되어 재생할 수 없는 키로는 결과를 복구할 수 없습니다. 새롭고 과금될 수 있는 생성을 의도하는 경우에만 새 키를 사용하세요. | +| `429` | `concurrency_limit_exceeded` | 진행 중인 호출이 너무 많거나, 약정 지출 상한(`X-Committed-Spend-*` 헤더 참조)에 도달한 경우입니다. 자신의 호출 중 하나가 완료되면 해제됩니다. | +| `429` | `rate_limited` | 재시도하기 전에 `Retry-After`를 기다리세요. | +| `504` | `deadline_exceeded` | 라우터 자체의 10분 제한입니다. `Retry-After`와 함께 동일한 키를 다시 보내 실행 중인 생성을 수집하세요. | +| `504` | `provider_timeout` | 파트너가 시간 초과되었습니다. [재시도 및 과금 가이드](/ko/development/comfy-router/api#retry-outcomes)를 따르세요. 요금이 청구되지 않는다는 보장으로 간주하지 마세요. | + +## 다음 + +- [Quickstart](/ko/development/comfy-router/quickstart): 요청을 보내고 결과를 확인합니다. +- [Comfy Router API 사용하기](/ko/development/comfy-router/api): 모델 검색, 스키마, 오류, 재시도, 과금. +- [API 레퍼런스](/ko/development/comfy-router/reference): 이 헤더들이 정의된 생성된 계약. +- [제한 사항](/ko/development/comfy-router/limitations): 현재 Router가 하지 않는 것과 대신 사용할 것. diff --git a/ko/development/comfy-router/limitations.mdx b/ko/development/comfy-router/limitations.mdx index f19e8a441..398384354 100644 --- a/ko/development/comfy-router/limitations.mdx +++ b/ko/development/comfy-router/limitations.mdx @@ -1,125 +1,101 @@ --- title: "Comfy Router 제한 사항" description: "현재 Comfy Router가 지원하지 않는 기능, 대안이 존재하는 경우 대신 사용할 도구, 그리고 변경될 것으로 예상되는 제한 사항을 설명합니다." -translationSourceHash: b9e78b52 +translationSourceHash: ecf5198e translationFrom: development/comfy-router/limitations.mdx translationBlockHashes: - "_intro": 9eea7f43 - "At a glance": fc2ff613 - "No queued submission": f72af0fd - "No cost or credit figures on a response": ba168aa9 - "No way to resume a call you lost": a783a987 - "Calls are cut off at a server deadline": 45bacfca - "Requests are rate limited per caller": 01f2a8c8 - "No progress while a call runs": be9de68d - "Three forecast buckets are not in the vocabulary": f85a2589 - "Router does not cover every partner operation": 9ecc10d1 - "Next": 2d3bb742 + "_intro": 877ad705 + "What Router supports": 7cbf53c7 + "No queued submission": 74107d82 + "Calls are cut off at a server deadline": 2466a237 + "Recovery depends on the provider": 610f0ec8 + "Requests are rate limited per caller": 421194d9 + "No progress while a call runs": 75d42d8d + "Comfy charges and usage": 90cd7670 + "Router does not cover every partner operation": 4de37c36 + "Model outputs and stored assets": 06c737c1 + "Next": be85b789 --- + **Comfy Router는 아직 일반에 공개되지 않았습니다.** 아래에서 언급하는 라우트(`POST /v1/models/{provider}/{model}` 및 카탈로그·스키마 관련 라우트)는 아직 요청을 처리하지 않습니다. 현재 인증된 호출은 `404`를 반환합니다. 이 페이지는 해당 라우트들이 제공할 계약을 설명하며, 통합이 알려진 형태를 기준으로 작성될 수 있도록 해당 롤아웃 이전에 게시되었습니다. 아래의 모든 내용은 해당 계약에 대한 설명이지, 지금 당장 실행할 수 있는 동작에 대한 설명이 아닙니다. -Comfy Router는 하나의 동기식 호출입니다. 파트너 모델의 네이티브 입력을 하나의 자격 증명으로 하나의 호스트에 전송하면 연결이 유지되고, `200` 응답이 해당 모델의 네이티브 출력을 전달합니다. 이러한 형태 덕분에 첫 번째 통합이 짧아지며, 이 페이지의 모든 제한 사항도 바로 여기서 비롯됩니다. Router를 중심으로 설계하기 전에, 설계 이후가 아니라 이 페이지를 읽으십시오. 아래 내용의 대부분은 간단한 대안이 있으며, 그렇지 않은 항목은 Router에 대해 성립하지 않는 가정을 기반으로 구축하기 전에 알아둘 가치가 있습니다. - -## 한눈에 보기 +Router는 파트너 모델을 하나의 동기식 HTTP 호출로 실행합니다. 애플리케이션이 완료된 결과를 기다릴 수 있고 모델 자체의 입력 및 출력 필드를 처리할 수 있는 경우에 사용하십시오. -각 행은 해당 제한을 설명하는 섹션으로 연결됩니다. **의도적**은 해당 제한이 Router 작동 방식의 일부이며 어떤 것도 기다리지 않는다는 뜻이고, **아직**은 Router가 해당 기능을 갖출 것으로 예상되지만 이 페이지는 시기에 대한 약정을 하지 않는다는 뜻입니다. +## Router가 지원하는 기능 -| 제한 사항 | 대신 사용할 방법 | 상태 | +| 요구 사항 | Router 지원 | 대안 또는 다음 단계 | | --- | --- | --- | -| [대기 중 제출 없음: 호출은 동기식](#대기-중-제출-없음) | 연결을 계속 열어 두거나, 제출과 폴링을 수행하는 파트너 프록시 라우트를 사용하세요. | 아직 | -| [응답에 비용 또는 크레딧 수치 없음](#응답에-비용-또는-크레딧-수치가-없음) | Comfy 플랫폼에서 잔액과 사용량을 확인하고, 호출 이전에 모델 카탈로그 항목의 `billing`을 확인하세요. | 아직 | -| [손실된 호출을 재개할 방법 없음](#손실된-호출을-재개할-방법-없음) | `Idempotency-Key`를 보내면 재시도가 최대 한 번만 청구됩니다. 단, 손실된 결과를 복구하지는 않습니다. | 아직 | -| [호출이 서버 마감 시간에 중단됨](#호출이-서버-마감-시간에-중단됨) | 클라이언트에 마감 시간보다 긴 타임아웃을 설정하고, 마감 시간 안에 완료할 수 없는 작업은 분할하세요. | 의도적 | -| [요청은 호출자별로 속도 제한됨](#요청은-호출자별로-속도-제한됨) | `429` `rate_limited`에서는 `Retry-After`만큼 백오프하고, 카탈로그 읽기는 호출마다 다시 가져오지 말고 캐시하세요. | 의도적 | -| [호출 실행 중 진행 상황 없음](#호출이-실행되는-동안에는-진행률이-없음) | 현재 Router에는 해당 기능이 없습니다. 파트너 프록시 라우트가 자체 진행 상황을 노출할 수 있습니다. | 아직 | -| [세 가지 예측 버킷은 어휘에 포함되지 않음](#세-가지-예고된-버킷은-어휘에-포함되어-있지-않습니다) | Router가 게시하는 열다섯 가지 버킷을 처리하고, 인식할 수 없는 값은 `internal_error`로 처리하세요. | 아직 | -| [Router가 모든 파트너 작업을 다루지는 않음](#router는-모든-파트너-작업을-다루지-않습니다) | 동일 호스트의 `/proxy/…` 하위 파트너 프록시 라우트를 사용하세요. | 의도적 | +| 하나의 요청으로 생성 | `POST /v2/models/{provider}/{model}`가 완료된 결과를 반환합니다. | [빠른 시작](/ko/development/comfy-router/quickstart)부터 시작하세요. | +| 작업을 제출하고 나중에 수집 | 일반적인 작업/상태 API나 완료 webhook이 없습니다. | worker에서 Router를 실행하거나, 제출 후 폴링 연산을 제공하는 파트너 프록시를 사용하세요. | +| 진행 상황 표시 또는 출력 스트리밍 | 호출 중에는 실시간 진행 상황, 스트리밍, 미리보기 프레임이 없습니다. | 불확정 상태를 표시하거나, 지원되는 프록시 연산을 사용하세요. | +| 연결이 끊긴 이후 복구 | Router가 수락된 생성에 대한 핸들을 보관한 경우 동일 키 수집을 사용할 수 있습니다. | 키를 보존하고 [재시도 가이드](/ko/development/comfy-router/api#retry-outcomes)를 따르세요. | +| Comfy 청구 내역 대사 | 응답에 범용 Comfy 비용 또는 크레딧 잔액 필드가 없습니다. | [워크스페이스 청구](https://platform.comfy.org)를 사용하세요. | +| 결과를 영구적으로 저장 | 에셋 URL은 재호스팅 및 재생된 URL을 포함해 만료될 수 있습니다. | 에셋을 다운로드하세요. [결과 에셋](/ko/development/comfy-router/reference#결과-에셋)을 참고하세요. | ## 대기 중 제출 없음 -모델을 실행하는 방법은 하나뿐입니다. `POST /v1/models/{provider}/{model}`은 생성이 끝날 때까지 연결을 유지한 뒤 응답으로 결과를 반환합니다. 작업(job)을 받아 식별자를 돌려주고 나중에 결과를 가져갈 수 있게 해주는 엔드포인트는 없으며, 완료를 알리는 콜백이나 웹훅도 없습니다. - -**대신 할 수 있는 방법.** 대부분의 모델에서는 이는 문제가 되지 않습니다. 연결을 유지한 채 결과를 읽으면 됩니다. 빠른 이미지 모델은 몇 초 안에 결과를 반환하고, 긴 비디오 생성은 수 분 동안 실행될 수 있지만 Router가 그동안 연결을 유지합니다. 클라이언트 읽기 타임아웃을 넉넉하게, [Router 자체의 데드라인](#호출이-서버-마감-시간에-중단됨) 이상으로 설정하고, 이 호출을 빠른 요청이 아닌 장기 실행으로 취급하세요. 아키텍처상 정말로 연결을 유지할 수 없는 경우, 즉 실행 시간 상한이 짧은 서버리스 함수나 사용자가 닫을 것으로 예상되는 브라우저 탭이라면, 연결을 유지할 수 있는 여러분이 제어하는 워커에서 호출을 실행하거나, 자체 제출(submit) 및 폴링(poll) 쌍을 제공하는 공급자의 파트너 프록시 경로를 사용하세요. [마지막 섹션](#router는-모든-파트너-작업을-다루지-않습니다)을 참조하세요. - -**상태: 아직 없음.** 대기 중 경로는 제공될 예정이지만, 이 페이지에서는 언제 제공될지 약속하지 않습니다. - -## 응답에 비용 또는 크레딧 수치가 없음 - -Router 응답은 모델이 무엇을 생성했는지 알려주며, 그 계약에는 비용이 얼마인지에 대한 정보가 전혀 없습니다. 응답 본문에는 청구 금액, 크레딧 잔액, 사용량 수치가 없으며, 해당 라우트는 비용 헤더를 선언하지 않습니다. 놀라지 않도록 한 가지 주의할 점을 말씀드립니다. Router는 파트너 프록시 라우트와 청구 경로를 공유하며, 해당 경로는 허용 목록에 포함된 공급자의 청구된 응답에 `X-Comfy-Credits-Used`를 기록합니다. 따라서 그중 하나를 대상으로 한 Router 호출에는 이 헤더가 나타날 수 있습니다. 이는 Router 계약의 일부가 아닙니다. 허용 목록에 없는 모든 공급자에게는 이 헤더가 없으며, 멱등 재시도(idempotent retry) 시 의도적으로 *재생되지 않습니다*. 이는 정확히, 이 헤더를 합산하는 클라이언트가 한 번만 결제된 호출을 이중으로 계산할 수 없게 하기 위해서입니다. 이 헤더를 기반으로 정산을 구축하지 마십시오. 모델 카탈로그도 마찬가지입니다. 카탈로그에는 호출자가 호출 이전에 필요한 청구 관련 *사실*만 담겨 있으며 가격은 결코 포함되지 않습니다. 따라서 Router 응답만으로 지출을 정산할 수 없으며, X를 다른 곳에서 가져오지 않고는 사용자에게 "이 호출 비용은 X입니다"라고 보여줄 수 없습니다. - -**대신 이렇게 하세요.** 잔액, 사용량, 청구서는 [platform.comfy.org](https://platform.comfy.org)의 Comfy 플랫폼에 있습니다. 이곳이 지출한 금액과 남은 금액에 대한 소스(source of truth)이며, 이 페이지의 어떤 내용에도 영향을 받지 않습니다. Router가 호출 시점에 알려주는 두 가지는 활용할 가치가 있습니다. 크레딧 부족으로 거부된 호출은 `insufficient_credits`로 반환되므로, 잔액을 사전 확인하는 대신 크레딧 소진을 유형화된 오류로 처리할 수 있습니다. 그리고 각 모델의 카탈로그 항목에는 `billing.charges_on_policy_rejection`이 포함되어 있는데, 이는 해당 특정 모델이 콘텐츠 정책상 이유로 거부하는 생성에 대해 비용을 청구하는지 여부를 알려줍니다. 이 필드는 논리값이 아니라 **세 가지 값을 가진 문자열**입니다. `yes`, `no`, `unknown`입니다. `unknown`은 "청구될 수 있음"으로 해석하십시오. 즉, 아직 아무도 해당 모델의 동작을 확정하지 못했다는 뜻이며, 이 값은 확인되지 않은 모델이 `no`로 게시되지 않도록 하기 위해 정확히 존재합니다. `no`는 주장이기 때문입니다. 이 필드는 의도적으로 `enum`이 아니므로, 인식하지 못하는 값도 `unknown`으로 취급하고, 이 값에 대해 truthiness 검사를 작성하지 마십시오. 문자열 `"no"`는 대부분의 언어에서 truthy이며, 그런 검사는 이 필드가 잡아내기 위해 존재하는 바로 그 경우를 반대로 만들어 버립니다. 공급자마다 이 부분이 다르며, 그 차이는 호출 시점에는 보이지 않습니다. 호출 이전에 이 값을 읽는 것이 나중에 설명할 수 없는 청구를 피하는 방법입니다. - -**상태: 아직 아님.** 호출별 수치는 아직 지원되지 않습니다. 참고로 *카탈로그*에는 의도적으로 가격이 포함되지 않습니다. 가격은 가격이 유지 관리되는 곳에 속하며, 그 가격과 점점 어긋나게 될(drift) 모델 목록에 중복으로 복사되지 않아야 합니다. - -## 손실된 호출을 재개할 방법 없음 - -Router는 진행 중인 호출의 재개 가능한 기록을 보관하지 않습니다. 상태 라우트도, 작업 식별자도, 다시 연결할 대상도 없습니다. 호출 도중 연결이 끊기면(클라이언트 충돌, 네트워크 분할, 프로세스를 재시작하는 배포) 응답은 사라지며, 이후에 그 호출에 대해 문의할 수도 없습니다. *생성*이 완료되어 청구되었는지는 응답을 받았는지와는 별개의 문제이며, 연결이 끊어졌다는 사실만으로는 어느 쪽도 확실히 알 수 없습니다. - -**대신 이렇게 하세요.** 모든 호출에 `Idempotency-Key` 헤더를 보내세요. 잃어버린 호출을 재개할 수 있게 해주지는 않지만, 재시도를 안전하게 만듭니다. Router는 호출이 진행되는 동안 키를 예약하며, 호출이 실제로 답변을 전달한 경우 해당 응답을 키에 연결해 24시간 동안 기록합니다. **같은** 키로 재시도하면 기록된 응답이 재생되고, 공급자에게 두 번째로 디스패치(및 재청구)되지 않습니다. `Idempotent-Replayed: true`가 표시되므로 재생과 새 실행을 구분할 수 있습니다. 논리적 호출마다 새 키를 생성하세요. 시도마다가 아니라요. *다른* 요청 본문으로 같은 키를 제시하면 조용한 덮어쓰기가 아니라 `409`가 반환됩니다. - -이것이 무엇을 보장하는지 정확히 이해하세요. 이는 **청구** 속성이지 전달 속성이 아닙니다. **키는 최대 한 번만 청구됩니다.** 키가 공급자에게 최대 한 번만 디스패치된다는 약속이 아닙니다. Router는 실제로 답변을 받은 경우에만 키를 보유합니다. 청구되지 않은 결과는 키를 해제하여 호출을 다시 할 수 있게 합니다. `5xx`, `408`/`425`/`429`, 그리고 (여기서 중요한 경우) 아무것도 도달하지 않은 호출. 이 모든 경우가 키를 해제하며, 해당 키로 재시도하면 실제로 다시 실행되어 공급자에게 다시 디스패치됩니다. +Router는 모델이 실행되는 동안 연결을 유지합니다. 비동기 공급자의 경우 작업을 제출하고 내부적으로 폴링합니다. Router 작업 ID, 상태 엔드포인트, 콜백 또는 웹훅은 노출하지 않습니다. -**즉, 연결 끊김은 멱등성이 *구해주지 못하는* 경우입니다.** 호출 도중 연결이 끊어지면 대개 어떤 응답도 커밋되지 않았다는 뜻이며, 이는 정확히 위의 해제 경로입니다. 같은 키로 재시도하면 놓친 결과를 건네주는 대신 새 실행이 시작됩니다. 원래 생성이 이미 디스패치되었다면 공급자가 두 번째로 실행할 수도 있습니다. 이것이 올바른 기본값입니다. 받지 못한 미청구 호출은 다시 실행할 수 있어야 합니다. 다만 "재시도는 새 실행을 만든다"고 계획하세요. "재시도가 잃어버린 실행을 회수한다"가 아니라요. - -Router가 키에 대해 무언가를 *보유*하고 있는 경우, 재시도는 재실행이 아니라 응답으로 처리됩니다. 원래 응답이 재생되거나, 그럴 수 없는 이유를 설명하는 `409`가 반환됩니다. 원래 호출이 아직 진행 중일 때 보낸 재시도는 `Retry-After`가 포함된 `409`가 되므로, 기다렸다가 같은 키를 다시 보내세요. 완료되었지만 Router가 충실한 사본을 보관하지 못한 호출에 대한 재시도도 `409`입니다. 이는 응답이 너무 큰 경우만 해당하지 않습니다. 재생 한도를 넘은 응답, 응답 후 실패하거나 패닉한 핸들러, 전송이 실패하거나 부족했던 쓰기. 이 모든 경우 키가 "소비되었지만 재생 불가"로 기록되고 같은 `409`가 반환됩니다. 크기 문제를 찾으러 가지 마세요. 이러한 모든 경우의 지침은 동일합니다. **새** 키를 사용하세요. 원래 호출은 완료되어 청구되었으며, Router는 그 응답을 지어내지도 않고 이전 키로 다시 실행하지도 않습니다. - - -**생성된 계약에는 아직 없습니다.** 여기서 설명하는 `Idempotency-Key` 요청 헤더, `409` 응답, `Idempotent-Replayed` 및 `Retry-After` 응답 헤더는 레퍼런스가 생성되는 기반인 OpenAPI 계약의 `POST /v1/models/{provider}/{model}`에 선언되어 있지 않습니다. 따라서 생성된 API 레퍼런스에는 나타나지 않으며 SDK도 이를 모델링하지 않습니다. 지원될 때까지 직접 보내고 읽으세요. - - -**상태: 아직 아님.** 영구적이고 재개 가능한 실행은 대기 중 경로와 함께 제공될 예정이며, 그곳이 요청 기록이 보관될 곳입니다. 멱등 재시도는 오늘의 답이며 임시방편이 아닙니다. 어쨌든 통합할 가치가 있습니다. +요청을 그만큼 오래 열어 둘 수 없다면, 워커에서 Router를 호출하고 애플리케이션에서 작업을 추적하세요. 공급자의 제출 및 폴링 제어가 필요할 때는 [파트너 프록시](#router는-모든-파트너-작업을-다루지-않습니다)를 사용하세요. ## 호출이 서버 마감 시간에 중단됨 -Router 호출 하나는 연결을 **10분** 동안 유지할 수 있습니다. 이것이 기본값이며, 고정 상수가 아닌 서버 측 구성 값이므로 계약에 새겨진 보장이 아니라 설계 기준으로 삼을 숫자로 취급하세요. 이를 넘으면 Router는 대기를 멈추고 공급자에 대한 진행 중 요청을 취소한 다음 `X-Comfy-Error-Type: deadline_exceeded`와 함께 `504`로 응답합니다. **`deadline_exceeded` 호출은 청구되지 않습니다.** 그 한계는 우리 쪽의 것이므로 그 비용도 우리가 부담합니다. +Router의 기본 마감 시간은 **10분**이며, 배포 시 설정할 수 있습니다. Router가 자체 오류와 요청 ID를 먼저 반환할 수 있도록, 클라이언트 타임아웃을 그보다 길게 설정하세요. -취소가 하지 않는 두 가지를 재시도 전에 알아두세요. 첫째, 공급자가 이미 수락한 생성을 취소하지 않습니다. Router가 작업을 제출하고 폴링하는 방식으로 구동하는 파트너의 경우, 마감 시간이 만료되면 Router 자신의 대기만 끝나고 공급자의 작업은 끝나지 않으므로 해당 작업은 완료까지 실행될 수 있으며, 재시도는 **두 번째 생성**을 만들어낼 수 있습니다(타임아웃된 호출에 대해 여전히 청구되지는 않습니다). 둘째, 이미 보낸 답변을 취소할 수 없습니다. 핸들러가 경쟁에서 이겨 한계가 만료되는 바로 그 순간 응답을 커밋하면 `504` 대신 그 응답을 받게 됩니다. +`504` / `deadline_exceeded`는 Router가 대기를 중단했음을 의미하고, `504` / `provider_timeout`은 공급자가 타임아웃되었음을 의미합니다. 타임아웃이나 연결 끊김은 해당 생성이 청구되지 않았음을 증명하지 않으며, 이미 수락된 공급자 작업을 취소하지도 않습니다. 재시도하기 전에 [타임아웃과 수금](/ko/development/comfy-router/api#timeouts-and-collection)을 읽어보세요. -다른 `504`와 혼동하지 마세요. `provider_timeout`은 파트너가 제때 응답하지 못한 것이며, 이 경우 **는** 청구됩니다. `deadline_exceeded`는 Router 자신의 한계가 만료된 것입니다. 원인이 두 가지, 청구 결과도 두 가지이기 때문에 정확히 같은 상태 코드에 두 개의 버킷이 존재합니다. `X-Comfy-Error-Type`으로 분기하고 상태 코드만으로 판단하지 마세요. + -**대신 이렇게 하세요.** 클라이언트의 읽기 타임아웃을 마감 시간보다 *위로* 넉넉하게 설정하세요. 아래로 설정하지 마세요. 먼저 포기하는 클라이언트는 요청 식별자가 있는 유형화된 `504`를 불투명한 로컬 중단으로 바꿔버리고, 지원팀이 추적할 수 있는 유일한 증거를 잃게 됩니다. 단일 생성이 마감 시간 안에 정말로 끝날 수 없다면 Router는 오늘날 그 용도에 적합하지 않습니다. 제출과 폴링을 수행하는 파트너 프록시 라우트로 실행하거나, 각각이 한계 안에 끝나는 호출로 작업을 나누세요. +## 복구는 공급자에 따라 달라집니다 -**상태: 의도적.** 한계는 존재해야 합니다. 한계가 없으면 멈춘 업스트림이 연결과 동시성 슬롯을 무기한 점유합니다. 구체적인 숫자는 조정될 수 있지만 마감 시간의 존재는 사라지지 않습니다. +Router는 수락된 submit-and-poll 생성에 대해 공급자 핸들을 보유할 수 있습니다. 동일한 `Idempotency-Key`를 재사용하면 나중에 이를 수집할 수 있으며, 완료된 재생 가능 응답도 키 기록에서 가져올 수 있습니다. -## 요청은 호출자별로 속도 제한됨 +연결 해제된 모든 호출이 복구 가능한 것은 아닙니다. 전송하기 전에 요청과 키를 보존한 다음, [재시도 결과 표](/ko/development/comfy-router/api#retry-outcomes)를 사용하십시오. 새 키는 새 호출을 생성하며 추가 요금이 발생할 수 있습니다. -Router는 트래픽에 대해 서로 다른 두 가지를 제한하며, 같은 `429`에 서로 다른 두 버킷으로 응답합니다. 동시성 제한은 한 번에 **진행 중**일 수 있는 호출 수를 제한하고 `concurrency_limit_exceeded`로 응답합니다. 이는 여러분의 호출 중 하나가 끝나는 순간 해소되므로 몇 초 뒤 재시도하는 것이 옳습니다. 속도 제한은 Router 표면을 **얼마나 자주** 호출할 수 있는지를 제한하며(`POST /v1/models/{provider}/{model}`와 `/v1/models` 하위의 세 가지 카탈로그 읽기 모두 해당하고, 호출이 모델을 실행했는지 그 전에 거부되었는지는 상관없습니다) `rate_limited`로 응답합니다. 이쪽은 1분 창(window) 동안 지속적으로 다시 채워지는 할당량이므로 무엇을 해도 더 빨리 비울 수 없습니다. 응답에는 기다려야 할 초 수를 담은 `Retry-After` 헤더가 포함되고, `detail`에 창이 명시됩니다. 상태 코드만 보지 말고 반드시 `X-Comfy-Error-Type`으로 분기하세요. +## 요청은 호출자별로 속도 제한됨 -이 제한은 출발지 주소가 아니라 인증된 호출자를 키로 삼으므로, 호스트를 넘어가도 자격 증명을 따라갑니다. 여러분 자신의 공급자 키(bring-your-own-key)로 실행되는 호출은 제외됩니다. 그 처리량은 여러분의 것이기 때문입니다. 할당량은 공개된 상수가 아니라 서버 측 구성 값이며, 이 페이지는 의도적으로 그 수치를 밝히지 않습니다. 숫자가 아니라 백오프를 전제로 설계하세요. +| 응답 | 원인 | 조치 | +| --- | --- | --- | +| `429` / `concurrency_limit_exceeded` | 동시 호출이 너무 많거나, 약정 지출(committed-spend) 상한 아래의 여유가 부족함. | 동시 작업을 줄이세요. 지출 헤더를 보면 지출 상한과 호출 수 제한을 구분할 수 있습니다. | +| `429` / `rate_limited` | 요청 허용량이 소진됨. | 재시도하기 전에 `Retry-After`를 기다리세요. | -**대신 이렇게 하세요.** `Retry-After`를 지키세요. 그 시간 안의 재시도는 같은 거부에 부딪힙니다. `GET /v1/models`와 모델의 `openapi.json`은 한 번 가져와 프로세스 수명 동안 캐시하고, 호출마다 다시 읽지 마세요. 이들은 배포 시에만 바뀝니다. `429`에서 받은 요청 식별자를 보관하는 클라이언트는 지원팀이 추적할 수 있는 증거를 갖게 됩니다. +요청 속도 제한은 호출(invocation)과 카탈로그/스키마 읽기에 적용되며, 생성 이전에 거부된 요청도 포함합니다. 이 제한은 소스 IP가 아니라 인증된 호출자를 따릅니다. 호출자의 공급자 키를 사용한 호출은 예외이며, 공급자 측 제한은 여전히 적용됩니다. -**상태: 의도적.** 호출자별 요청 속도 상한은 마감 시간과 같은 이유로 존재해야 합니다. 숫자는 조정될 수 있지만 제한의 존재는 사라지지 않습니다. +카탈로그와 스키마 읽기는 캐시하세요. 스키마는 `ETag`와 `If-None-Match`로 재검증하세요. 재시도 및 약정 지출 필드에 대해서는 [Headers](/ko/development/comfy-router/headers)를 참고하세요. ## 호출이 실행되는 동안에는 진행률이 없음 -`POST /v1/models/{provider}/{model}`는 종료 시점에 정확히 한 번만 응답을 반환합니다. 스트리밍 응답, 서버 전송 이벤트, 백분율, 부분 또는 미리보기 프레임이 없습니다. 이는 파트너의 자체 API가 제출 후 폴링 방식인 경우에도 마찬가지입니다. Router는 해당 폴링을 내부적으로, 즉 여러분의 단일 호출 안에서 처리하며, 그 과정에서 확인되는 중간 상태는 여러분에게 전달되지 않습니다. 외부에서 보면 3초짜리 이미지와 6분짜리 비디오는 같은 형태입니다. 요청 하나, 응답 하나, 그 사이에 아무것도 없습니다. - -**대신 해야 할 일.** 현재 Router에서는 할 수 있는 일이 없습니다. 출처를 알 수 없는 백분율 대신 불확정 진행 상태를 표시하세요. 특정 공급자에게 진행률이 필수 요구 사항이라면, 해당 공급자의 파트너 프록시 라우트가 자체 폴링이나 스트리밍을 제공하는지 확인하고 그 라우트를 직접 사용하세요. 일부는 해당 기능을 제공하며, 그 라우트는 변경되지 않았고 완전히 지원됩니다. +Router는 최종 응답을 반환하며, 스트리밍되는 토큰, 서버 전송 이벤트, 백분율 업데이트, 중간 미리보기 프레임은 없습니다. 공급자의 내부 폴링 상태는 요청 중에 전달되지 않습니다. -**상태: 아직 미지원**이며 대기 중 경로와 연결되어 있습니다. 진행률은 보고할 *곳*이 필요합니다. 대기 중 제출은 그 대상을 제공하지만 단일 동기 호출은 제공하지 않습니다. +불확정 진행 표시기를 표시하세요. 진행률이나 스트리밍이 필요하다면, 해당 기능을 노출하는 파트너 프록시 작업을 사용하세요. -## 세 가지 예고된 버킷은 어휘에 포함되어 있지 않습니다 + -Router의 `error_type` 어휘는 **15개로 이루어진 닫힌 집합**이며, [API 레퍼런스](/ko/development/comfy-router/reference)에 나열되고 quickstart가 가리키는 바로 그 15개입니다. 해당 레퍼런스의 본문에는 예상 추가 항목으로 세 가지가 더 언급됩니다: `file_download_error`, `cancelled`, `queue_timeout`. 이름만 언급되었을 뿐이며, 그게 전부입니다. 이들은 오늘날 **집합의 멤버가 아닙니다**: 어떤 Router 응답도 이들을 담지 않으며, 계약(contract)으로부터 생성된 클라이언트는 이들을 알지 못하고, Router가 내부적으로 이들을 넘겨받더라도 전송하는 대신 `internal_error`로 대체합니다. 따라서 오늘 이들을 위해 작성하는 분기는 결코 실행되지 않는 분기이며, 레퍼런스에 이들이 등장한다고 해서 Router가 호출을 취소하거나 큐에 넣는다는 증거가 되지는 않습니다. Router는 그중 어느 것도 하지 않습니다. +## Comfy 요금 및 사용량 -이들이 아예 빠지지 않고 문서로 예고된 이유는 `error_type`이 의도적으로 단순한 문자열이지 `enum`이 아니기 때문이며, 인식할 수 없는 버킷을 무조건 거부하는 클라이언트는 이미 무언가 잘못된 바로 그 순간에 가장 크게 실패하기 때문입니다. 추가 항목을 미리 이름으로 언급하는 것은, 이 집합이 의도적으로 개방형이라는 것을 독자가 알 수 있게 하는 방법입니다. +응답에는 공급자 사용량 또는 비용 필드가 포함될 수 있습니다. 이는 보편적인 Comfy 요금을 나타내지 않습니다. `X-Comfy-Credits-Used`는 선택 사항이며 재전송되지 않습니다. 잔액, 사용량, 청구서는 Comfy 플랫폼에서 확인하세요. -**대신 해야 할 일.** Router가 실제로 게시하는 15개 버킷을 처리하세요. 전체 목록은 [API 레퍼런스](/ko/development/comfy-router/reference)에 있습니다. 그리고 인식할 수 없는 모든 값을 `internal_error`로 취급하는 폴백 분기를 하나 작성하세요. 그 폴백이 바로 전체 메커니즘입니다. 이 폴백 덕분에 이 세 가지와, 클라이언트가 작성된 이후에 추가되는 어떤 버킷이든 여러분을 깨뜨리지 않고 도착할 수 있습니다. 제어 흐름을 위해서는 대략적인 버킷을 기준으로 분기하고, 구체적인 이유가 필요할 때는 `422` 본문 안의 필드별 `type`을 읽으세요. - -**상태: 아직 아님.** 세 가지 각각은 Router가 아직 갖추지 못한 동작에 해당하며, 각각은 그것을 내보내기 시작하는 바로 그 변경과 함께 어휘에 합류합니다. 절대 그 이전에는 합류하지 않습니다. +카탈로그는 가격 대신 `billing.charges_on_policy_rejection`을 포함한 청구 관련 사실 정보를 제공합니다. `yes`, `no`, `unknown`은 명시적으로 처리하세요. 자세한 내용은 [billing](/ko/development/comfy-router/api#model-billing-facts)을 참조하세요. ## Router는 모든 파트너 작업을 다루지 않습니다 -Router는 파트너 *모델*을 실행합니다. 파트너가 노출하는 모든 작업을 중계하지는 않습니다. 파일 업로드, 계정 및 에셋 읽기, 공급자별 관리 호출, 스트리밍 채팅 엔드포인트, 일부 파트너가 게시하는 제출-폴링(submit-and-poll) 쌍이 여기에 해당합니다. 또한 Router는 이러한 작업을 변형하지도 않습니다. 모델의 네이티브 입력을 전달하고 네이티브 출력을 변경 없이 반환하므로, 지원되지 않는 작업을 이식할 수 있는 통합 봉투가 없습니다. +Router는 모델을 실행합니다. 파일 업로드, 계정 읽기, 에셋 관리, 스트리밍, 공급자 작업 제어에는 `/proxy/…` 아래의 파트너 프록시 라우트가 필요할 수 있습니다. [Comfy API 명세](/ko/openapi-v2.yaml)를 확인하세요. 지원 여부는 공급자마다 다릅니다. + +## 모델 출력 및 저장된 에셋 -**대신 수행할 작업.** `/proxy/…` 아래의 파트너 프록시 라우트는 동일한 호스트에서 동일한 자격 증명으로 완전히 지원되며, Router가 다루지 않는 모든 작업에 대한 해답입니다. 이들은 지원 중단되지 않았고, 서비스 종료(sunset) 경로에 있지도 않습니다. 동일한 통합에서 Router와 함께 사용하는 것은 우회 방법이 아니라 예상된 사용 방식입니다. 여러 모델에 걸쳐 하나의 라우트 형태와 하나의 자격 증명을 원한다면 Router를 사용하고, 특정 파트너 작업, 공급자 자체의 스트리밍 응답, 또는 Router가 의도적으로 숨기는 제출-폴링 제어가 필요하다면 `/proxy/…`를 사용하세요. +입력과 출력 필드는 모델에 따라 다릅니다. 공급자 SDK나 프록시에서 옮겨오면 라우트와 결과를 읽는 방식이 모두 달라질 수 있습니다. -**상태: 의도된 설계입니다.** Router는 의도적으로 표면을 좁힙니다. 하나의 라우트 형태가 바로 기능입니다. 프록시 표면은 기존 그대로 유지됩니다. +일부 에셋은 Comfy 스토리지에 다시 호스팅되고, 다른 에셋은 공급자 URL이거나 인라인 바이트입니다. 수명과 재생 동작은 [결과 에셋](/ko/development/comfy-router/reference#결과-에셋)을 참조하세요. ## 다음 -- [Comfy Router 빠른 시작](/ko/development/comfy-router/quickstart): Python 또는 TypeScript로 첫 번째로 동작하는 호출을 만들어 봅니다. -- [Comfy Router API 참조](/ko/development/comfy-router/reference): 모든 엔드포인트, 모든 매개변수, 그리고 Router가 전송하는 모든 오류 버킷을 다룹니다. + + + Comfy Router를 통해 첫 번째 이미지를 생성해 보세요. + + + 모델을 선택하고 스키마를 확인한 뒤 결과와 재시도를 처리합니다. + + diff --git a/ko/development/comfy-router/models.mdx b/ko/development/comfy-router/models.mdx index 4b203c3d3..5b7b71d3a 100644 --- a/ko/development/comfy-router/models.mdx +++ b/ko/development/comfy-router/models.mdx @@ -2,279 +2,337 @@ title: "Comfy Router API 사용하기" sidebarTitle: "Router API 사용하기" description: "모델 선택, 스키마 검사, Router 안전 호출, 결과, 오류, 재시도, 결제 처리 방법을 알아보세요." -translationSourceHash: 0d8c3756 +translationSourceHash: 7bca7f7c translationFrom: development/comfy-router/models.mdx translationBlockHashes: - "_intro": 1b554933 - "Discover the catalog": 9264e92d - "Read one model": 6d96021f - "Read input and output schemas": 0b7e6eaa - "Validation and fallback schemas": 9e039521 - "Read the result": fab75186 - "Handle errors, retries, and billing": 563281f5 - "Per-model examples": ed06edba - "Next": 30e39619 + "_intro": f10928e2 + "Anthropic": 6b3a82aa + "Beeble": 3dbc8f79 + "Black Forest Labs": f9ec2193 + "Bria": 524538b9 + "BytePlus": 153e22f7 + "Elevenlabs": d6122bad + "fal": 8962295e + "Freepik": 9b9fc279 + "Gemini Interactions": 772301fb + "Google": 5fb1cd15 + "HeyGen": e63b341c + "Ideogram": a5b5a0ab + "Kling": 78f8dd06 + "Krea": c09355fb + "LTX": 0454756a + "Luma": aaec5c26 + "Luma 2": 7d46b851 + "Meshy": ac9742cb + "MiniMax": 871fec64 + "Moonvalley": 1bafd9a3 + "OpenAI": 1ecffa94 + "Pruna": 29b758ff + "Qwen": 07ff7742 + "Recraft": b75cce53 + "Runway": ec0c741f + "Tencent": 3b746819 + "Veo": 886ab7ad + "Wan": fbd864f4 + "WaveSpeed": 08c44be9 + "xAI": ac264069 --- -모델을 선택하고, 해당 스키마를 확인한 다음 `POST /v2/models/{provider}/{model}` 엔드포인트를 호출하세요. 라우트와 인증은 모델에 관계없이 동일하게 유지됩니다. -## 카탈로그 둘러보기 -생성에 사용한 것과 동일한 API 키로 모델을 조회합니다: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v2/models?limit=50" -``` - -축약된 카탈로그 응답: - -```json -{ - "data": [ - { - "id": "bfl/flux-2-pro", - "provider": "bfl", - "model": "flux-2-pro", - "billing": { "charges_on_policy_rejection": "no" } - } - ], - "has_more": true, - "next_cursor": "example-cursor", - "limit": 50 -} -``` - -호출 경로에는 `id`를 사용합니다. `billing` 객체에는 가격이 아닌 청구 관련 사실이 포함됩니다. 이를 활용하기 이전에 [정책 거부 시 청구](/ko/development/comfy-router/models#모델-청구-관련-사실)를 읽어 보세요. - -### 페이지네이션 - -- `has_more`가 `true`이면 반환된 `next_cursor`를 `cursor`로 전달합니다. `has_more`가 `false`이면 중단합니다. 이전 페이지가 요청한 길이보다 짧았더라도 계속 요청하지 마세요. -- 커서는 불투명한 값으로 취급하세요. 예를 들어 cURL의 `--get --data-urlencode "cursor=$NEXT_CURSOR"`를 사용해 값을 URL 인코딩하세요. 오프셋을 계산하거나 커서를 수정하지 마세요. -- `limit`의 기본값은 20이며 최대 100으로 제한됩니다. 상한을 초과하는 값은 상한으로 조정되고, 0 또는 음수 값은 기본값을 선택합니다. 응답에는 실제로 사용된 limit 값이 보고됩니다. -- 잘못된 커서는 `400` / `invalid_input`을 반환하며, 목록을 조용히 재시작하지 않습니다. -- 커서는 카탈로그가 업데이트된 이후에도 유효할 수 있지만, 순회는 스냅샷이 아닙니다. 현재 위치 이전에 추가된 모델은 해당 순회에 나타나지 않을 수 있습니다. - -`503` / `service_unavailable`은 일시적인 오류입니다. 백오프를 적용해 재시도하고, 빈 카탈로그로 취급하지 마세요. SDK의 run 메서드는 선택된 모델을 직접 호출합니다. - -## 모델 하나 조회하기 - -모델 ID를 알고 있을 때는 카탈로그에서 해당 항목을 바로 조회할 수 있습니다: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro -``` - -모델 상세 엔드포인트를 사용하면 전체 카탈로그를 탐색할 필요가 없습니다. 전체 항목 필드에 대한 자세한 내용은 [API 레퍼런스](/ko/development/comfy-router/reference)를 참조하세요. - -## 입력 및 출력 스키마 읽기 - -각 모델은 독립형 OpenAPI 문서를 제공합니다. - -```bash -curl --dump-header schema-headers.txt \ - -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -모델 작업 내에서 `requestBody`는 입력을 설명하고, 출력 스키마가 작성된 경우 `200` 응답은 출력을 설명합니다. 입력 검증과 출력 문서화는 서로 다릅니다: Router는 입력 스키마를 기준으로 검증하지만, 반환된 공급자 결과를 출력 스키마로 검증하지는 않습니다. - -출력 미디어 유형과 해당 필드를 확인하세요. 작성되지 않은 출력은 `*/*`를 사용할 수 있으며, 일부 모델은 JSON 대신 이진 데이터를 반환합니다. - -### 스키마 캐시하기 - -스키마와 해당 `ETag`를 저장하세요. 나중에 스키마를 가져올 때 `If-None-Match`에 해당 ETag를 전달하세요. `304`는 본문이 없으므로 캐시된 문서를 유지합니다. `200`은 대체 문서와 ETag를 제공합니다. - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - -H 'If-None-Match: "previous-etag-value"' \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -스키마 라우트는 `Cache-Control: private, must-revalidate`를 사용합니다. 인증된 응답을 공유 캐시에 저장하지 마세요. 이 ETag/304 동작은 스키마 엔드포인트에만 적용됩니다. - -## 검증 및 폴백 스키마 - -작성된 입력 스키마는 공급자 호출 이전에 잘못된 필드를 `422` 및 `detail[]` 배열로 거부합니다. `loc`에서 필드 경로를 확인하세요. [검증 오류](/ko/development/comfy-router/models#검증-오류)를 참조하세요. - -일부 스키마는 모든 JSON 객체를 허용하며 `x-comfy-input-schema-authored: false`를 설정합니다. 라우터는 모델별 검증 없이 해당 요청을 전달하므로, 공급자가 여전히 이를 거부할 수 있습니다. - -`bfl/flux-2-pro`는 현재 이 폴백을 사용합니다. 필수 필드는 공급자 문서 또는 해당 모델 페이지에서 확인하세요. - -## 결과 읽기 - -Router는 각 모델의 터미널 결과 형태를 반환합니다. 결과를 감싸는 공통 이미지, 비디오, 텍스트 봉투는 없습니다. BFL 이미지 출력은 `result.sample`을 사용하는 반면, 다른 모델은 URL 목록이나 인라인 바이트를 반환할 수 있습니다. - -일부 에셋 URL은 Comfy에서 다시 호스팅되고, 나머지는 공급자 URL 또는 인라인 바이트로 유지됩니다. [결과 에셋](/ko/development/comfy-router/reference)을 확인하고 만료 예정인 에셋은 즉시 다운로드하세요. 리플레이를 실행해도 URL은 갱신되지 않습니다. - -## 오류, 재시도, 결제 처리하기 - -### 오류를 방어적으로 읽기 - -실패한 요청은 프록시의 HTML 오류 페이지, 잘린 JSON 또는 일반 텍스트를 반환할 수 있습니다. JSON 파싱 오류가 HTTP 상태나 요청 ID를 가리지 않도록 하세요. 이 헬퍼들은 Python에서는 `httpx.Response`를, TypeScript에서는 Fetch `Response`를 사용합니다. 일반 SDK 호출에서는 SDK가 이미 오류 필드를 노출합니다. - - - -```python -def read_router_error(response): - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - - detail = body.get("detail") if isinstance(body, dict) else None - return { - "status": response.status_code, - "request_id": response.headers.get("X-Comfy-Request-Id"), - "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), - "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", - "validation": detail if isinstance(detail, list) else [], - } -``` - -```typescript -async function readRouterError(response: Response) { - let body: unknown; - try { - body = JSON.parse(await response.text()); - } catch { - body = undefined; - } - - const detail = - typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; - - return { - status: response.status, - requestId: response.headers.get("X-Comfy-Request-Id"), - errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", - message: typeof detail === "string" ? detail : `HTTP ${response.status}`, - validation: Array.isArray(detail) ? detail : [], - }; -} -``` - - - -### 검증 오류 - -Router의 `422`는 공급자 호출 이전에 유효성 검사가 실패했으며 이 경우 청구되지 않음을 의미합니다. 본문에는 거부된 필드마다 하나씩 항목이 있는 `detail[]` 배열이 있으며, 오류 카테고리는 본문이 아닌 `X-Comfy-Error-Type`에 있습니다. 예를 들어: - -```json -{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} -``` - -이것은 예시 형태입니다. 입력 스키마가 유연한 모델은 Router `422`를 반환하는 대신 누락된 필드를 공급자에게 전달할 수 있습니다. - -| 필드 | 의미 | -| --- | --- | -| `loc` | 거부된 필드까지의 경로. 가장 바깥쪽 세그먼트가 먼저 옵니다. | -| `msg` | 사람이 읽을 수 있는 실패 사유. | -| `type` | `missing`, `greater_than` 또는 `image_too_small` 같은 공급자별 사유. | -| `ctx` | 해당 공급자 오류에 대한 선택적 제한값 또는 추가 데이터. | - -`400`은 필드별 검증 본문이 아니라 잘못된 형식의 커서와 같은 요청 수준 문제를 설명합니다. [오류 참조](/ko/development/comfy-router/reference)에는 지원되는 카테고리가 나열되어 있습니다. 알 수 없는 카테고리는 제어 흐름을 위해 `internal_error`로 취급하되, 진단 목적의 원본 값은 유지하세요. 새 오류 값을 무조건 거부하거나, 아직 발생하지 않을 것으로 예측되는 오류 카테고리를 이미 발생하는 것처럼 구현하지 마세요. - -### 안전한 재시도 - -키를 모델 ID 및 요청 본문과 함께 **전송 이전에** 저장하십시오. 해당 논리적 호출의 모든 시도에 동일한 키를 재사용하십시오. Router는 응답에서 `Idempotency-Key`를 반환하지 않습니다. Python SDK는 발생한 예외에 해당 키를 포함합니다. TypeScript에서는 직접 제공한 키를 직접 보관하십시오. - -키는 자격 증명에 연결된 워크스페이스 내에서 공유되거나, 자격 증명에 워크스페이스가 없는 경우 사용자 범위로 한정됩니다. 해당 범위에서 고유한 UUID를 사용하고 동일한 자격 증명으로 재시도하십시오. 다른 워크스페이스 멤버의 키를 재사용하면 해당 멤버의 기록된 결과가 반환되거나 충돌이 발생할 수 있으며, 자격 증명을 변경하면 과금이 발생하는 별도의 호출이 시작될 수 있습니다. - -Router는 키와 함께 저장된 응답 또는 컬렉션 상태를 24시간 동안 보존합니다. 재시도는 새로운 보존 창을 시작하지 않습니다. 해당 상태가 만료되면 이전 키가 결과를 복구하거나 새 디스패치를 방지할 것이라고 기대해서는 안 됩니다. 또한 키는 만료된 자산 URL을 다시 사용할 수 있게 만들지 않습니다. - -### 재시도 결과 - -| 상태 | 버킷 | 의미 | 조치 | -| --- | --- | --- | --- | -| `200` | `Idempotent-Replayed: true` 헤더 | 라우터가 결과를 재생했거나 수집된 생성 결과를 반환했습니다. | 결과를 사용하세요. 재생은 추가 Comfy 요금이 부과되지 않습니다. | -| `409` | `concurrency_limit_exceeded` | 해당 키의 원본 호출이 아직 실행 중입니다. | `Retry-After`에 지정된 시간을 기다린 후 동일한 키를 다시 전송하세요. | -| `504` | `deadline_exceeded`이며 `Retry-After` 포함 | 라우터가 수락된 공급자 작업에 대한 핸들을 유지했습니다. | 지정된 간격을 기다린 후 동일한 요청과 키를 다시 전송하여 결과를 수집하세요. 아직 실행 중일 수 있습니다. | -| `429` | `rate_limited` | 요청 허용량이 모두 소진되었습니다. | `Retry-After`에 지정된 시간을 기다린 후 동일한 키로 재시도하세요. | -| `429` | `concurrency_limit_exceeded` | 동시 호출 또는 약정 지출 한도가 요청을 거부했습니다. | 동시성을 줄이고 동일한 키로 재시도하세요. 지출 헤더를 확인하세요. | -| `409` | `invalid_input` | 요청이 키의 원본 요청과 다르거나 해당 기록을 재생할 수 없습니다. | 충돌 내용을 확인하세요. 요청이 변경된 경우 원본 요청을 복원하세요. 새롭고 잠재적으로 청구될 수 있는 호출을 의도하는 경우에만 새 키를 시작하세요. | -| 수집 힌트가 없는 `504`, 기타 `5xx`, 또는 응답 없음 | 다양함 | 상태 코드만으로는 작업이 수락되었는지, 유지되었는지, 해제되었는지 알 수 없습니다. | 동일한 키와 요청을 유지하세요. 제한된 재시도 정책을 사용하세요. 복구가 보장되지는 않습니다. | - -충돌 여부는 메서드, 모델 경로, 쿼리, 본문을 비교하여 결정됩니다. 키는 과도하게 큰 응답, 실패한 응답 쓰기, 또는 안전하게 재생할 수 없는 자산이 발생한 이후에는 재생 불가 상태가 될 수 있습니다. 기다려도 이미 소비된 결과는 복구되지 않습니다. 새 키는 새 호출을 시작하며 이전 출력을 가져오지 않습니다. - -공급자 디스패치 이전의 거부는 키를 해제합니다. 디스패치된 호출은 공급자 핸들을 유지하거나 재생 불가 상태가 될 수 있습니다. 상태 코드만으로 키 상태나 청구 여부를 판단하지 마세요. - -호출 시간이 초과되거나 연결이 끊어졌다고 해서 아예 새로운 키를 만들지 마세요. 라우터가 이미 해당 생성을 수락했다면 새 키는 두 번째 논리적 실행을 만들어 두 번째 청구 대상 결과를 초래할 수 있습니다. 원본 호출이 복구 불가능하다는 사실을 확인하기 전까지는 동일한 키를 재사용하세요. - -# - -### 시간 초과 및 수집 - -라우터 호출 한 건은 기본적으로 10분 동안 연결을 유지할 수 있습니다. 클라이언트 시간 초과를 이 상한보다 길게 설정하여 로컬에서 모호하게 중단되는 대신 명시적인 `504` 응답과 요청 ID를 받을 수 있게 하세요. - -`deadline_exceeded`는 라우터의 대기 제한이고 `provider_timeout`은 공급자의 마감 시간입니다. 공급자의 생성이 완료되면 호출자가 시간 초과를 수신했거나 연결이 해제되었더라도 청구될 수 있습니다. 클라이언트 취소는 대기와 SDK 재시도를 중단하지만, 수락된 공급자 작업을 반드시 취소하지는 않습니다. - -제출 후 폴링(submit-and-poll) 방식의 공급자의 경우, 유지된 핸들을 통해 동일 키의 요청이 원본 생성 결과를 계속 수집할 수 있습니다. 복구 가능한 핸들 없이 중단된 디스패치 호출은 재생 가능한 결과 없이 키를 소비할 수 있으며, 이후 동일 키로 재시도하면 `409`가 반환됩니다. 성공이 포착되지 않은 공급자 측 일시적 오류는 여전히 키를 해제하여 다른 시도를 가능하게 할 수 있습니다. 핸들이 없다는 사실만으로는 어떤 결과가 적용될지 알 수 없습니다. - -SDK는 제한된 예산 범위 내에서 일부 오류를 자동으로 재시도합니다. SDK가 오류를 반환하면 새 요청이나 키를 생성하지 말고 기존 요청과 키를 유지하세요. 원시 HTTP의 경우 다음 예제는 두 가지 명시적 수집 힌트에 대해서만 재시도합니다. - -```python -import os -import time - -import httpx - - -def collect(model, arguments, key, attempts=3): - with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: - for attempt in range(attempts): - response = client.post( - f"https://api.comfy.org/v2/models/{model}", - headers={"X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": key}, - json=arguments, - ) - if response.is_success: - return response.json() - - category = response.headers.get("X-Comfy-Error-Type") - collecting = (response.status_code, category) in { - (409, "concurrency_limit_exceeded"), - (504, "deadline_exceeded"), - } - delay = response.headers.get("Retry-After", "") - if not collecting or not delay.isdigit() or attempt == attempts - 1: - response.raise_for_status() - time.sleep(int(delay)) - raise ValueError("attempts must be positive") -``` - -함수에 원본 모델, 본문, 저장된 키를 전달합니다. 이 방식은 총 경과 시간이 아닌 시도 횟수를 제한합니다. 각 호출은 클라이언트 시간 초과까지 지속될 수 있으며 각 대기는 `Retry-After`를 따릅니다. HTTP 오류는 검사할 수 있도록 응답을 유지하고, 전송 오류는 키를 대체하지 않고 전파됩니다. 애플리케이션에 더 긴 복구 창이 필요하다면 저장된 키로 나중에 수집을 예약하세요. - -### 모델 청구 관련 사실 - -`GET /v2/models` 및 모델 세부 응답에는 `billing.charges_on_policy_rejection`이 포함됩니다. 이는 정책 거부에 대한 청구 여부를 나타내며, 모든 실패 또는 가격 견적을 의미하지는 않습니다. - -| 값 | 의미 | -| --- | --- | -| `yes` | 정책 거부에 대해 청구됩니다. | -| `no` | 정책 거부에 대해 청구되지 않습니다. | -| `unknown` | 아직 아무도 해당 동작을 확립하지 않았습니다. 청구될 가능성이 있다고 간주하세요. | - -이 문자열들은 명시적으로 비교하세요. Python과 JavaScript에서 `"no"`는 truthy입니다. 인식할 수 없는 값은 모두 `unknown`으로 처리하세요. 크레딧 부족으로 거부된 요청은 `insufficient_credits`를 보고합니다. - -공급자 페이로드에는 공급자 자체의 비용 또는 사용량 수치가 포함될 수 있지만, 이는 Comfy 청구 금액이 아닙니다. `X-Comfy-Credits-Used`는 허용 목록에 있는 공급자에게는 표시될 수 있지만, 모든 공급자에게 나타나는 것은 아니며 재전송되지 않습니다. 정산에는 [워크스페이스 사용량 및 청구서](https://platform.comfy.org)를 사용하세요. 청구 금액을 조사할 때는 요청 ID를 보존하세요. - -## 모델별 예시 - -- Google Gemini -- Nano Banana 2 -- Nano Banana 2 Lite -- Nano Banana Pro -- FLUX 1.1 Pro Ultra -- FLUX Kontext -- FLUX Video Upscale -- FLUX 3 Video -- Ideogram 4 - -## 다음 - -- [Quickstart](/ko/development/comfy-router/quickstart): 설치, 호출, 이미지 저장. -- [API reference](/ko/development/comfy-router/reference): 엔드포인트 파라미터, 스키마, 응답 코드. +{/* GENERATED FILE. Generated from the Router catalog by `pnpm code-pages:gen`. */} + +아래의 모든 모델은 동일한 라우트인 `POST /v2/models/{provider}/{model}`로 제공되며, 각 모델의 JSON 본문을 함께 전달합니다. 각 페이지에는 Python, TypeScript, cURL로 작성된 실제 동작하는 요청 예시가 있습니다. 검색, 스키마, 오류, 재시도, 청구에 대해서는 [Comfy Router API 사용하기](/ko/development/comfy-router/api)를 참고하세요. + +## Anthropic + +- [Claude Fable 5.1](/ko/development/comfy-router/models/anthropic/claude-fable-5-1/code): `anthropic/claude-fable-5-1` +- [Claude Fable 5](/ko/development/comfy-router/models/anthropic/claude-fable-5/code): `anthropic/claude-fable-5` +- [Claude Haiku 4.5 20251001](/ko/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code): `anthropic/claude-haiku-4-5-20251001` +- [Claude Opus 4.6](/ko/development/comfy-router/models/anthropic/claude-opus-4-6/code): `anthropic/claude-opus-4-6` +- [Claude Opus 4.7](/ko/development/comfy-router/models/anthropic/claude-opus-4-7/code): `anthropic/claude-opus-4-7` +- [Claude Opus 4.8](/ko/development/comfy-router/models/anthropic/claude-opus-4-8/code): `anthropic/claude-opus-4-8` +- [Claude Opus 5](/ko/development/comfy-router/models/anthropic/claude-opus-5/code): `anthropic/claude-opus-5` +- [Claude Sonnet 4.5 20250929](/ko/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code): `anthropic/claude-sonnet-4-5-20250929` +- [Claude Sonnet 4.6](/ko/development/comfy-router/models/anthropic/claude-sonnet-4-6/code): `anthropic/claude-sonnet-4-6` +- [Claude Sonnet 5](/ko/development/comfy-router/models/anthropic/claude-sonnet-5/code): `anthropic/claude-sonnet-5` + +## Beeble + +- [SwitchX](/ko/development/comfy-router/models/beeble/switchx/code): `beeble/switchx` + +## Black Forest Labs + +- [Erase V1](/ko/development/comfy-router/models/black-forest-labs/erase-v1/code): `bfl/erase-v1` +- [Flux 1.1 Pro Ultra Image](/ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code): `bfl/flux-pro-1.1-ultra` +- [FLUX.1 Kontext](/ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code): `bfl/flux-kontext-pro` +- [FLUX 2 Max](/ko/development/comfy-router/models/black-forest-labs/flux-2-max/code): `bfl/flux-2-max` +- [FLUX 2 Pro](/ko/development/comfy-router/models/black-forest-labs/flux-2-pro/code): `bfl/flux-2-pro` +- [FLUX 3 Video](/ko/development/comfy-router/models/black-forest-labs/flux-3-video/code): `bfl/flux-3-video` +- [FLUX Pro 1.0 Canny](/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code): `bfl/flux-pro-1.0-canny` +- [FLUX Pro 1.0 Depth](/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code): `bfl/flux-pro-1.0-depth` +- [FLUX Pro 1.0 Expand](/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code): `bfl/flux-pro-1.0-expand` +- [FLUX Pro 1.0 Fill](/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code): `bfl/flux-pro-1.0-fill` +- [FLUX Video Upscale](/ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code): `bfl/video-upscale-v1` +- [Video Edit V1](/ko/development/comfy-router/models/black-forest-labs/video-edit-v1/code): `bfl/video-edit-v1` +- [VTO V1](/ko/development/comfy-router/models/black-forest-labs/vto-v1/code): `bfl/vto-v1` + +## Bria + +- [Fibo](/ko/development/comfy-router/models/bria/fibo/code): `bria/fibo` +- [이미지 편집 지우기](/ko/development/comfy-router/models/bria/image-edit-erase/code): `bria/image-edit-erase` +- [이미지 편집 확장](/ko/development/comfy-router/models/bria/image-edit-expand/code): `bria/image-edit-expand` +- [이미지 편집 Gen Fill](/ko/development/comfy-router/models/bria/image-edit-gen-fill/code): `bria/image-edit-gen-fill` +- [이미지 편집 해상도 높이기](/ko/development/comfy-router/models/bria/image-edit-increase-resolution/code): `bria/image-edit-increase-resolution` +- [이미지 편집 배경 제거](/ko/development/comfy-router/models/bria/image-edit-remove-background/code): `bria/image-edit-remove-background` +- [구조화된 지시](/ko/development/comfy-router/models/bria/structured-instruction/code): `bria/structured-instruction` +- [비디오 편집 초록색 스크린](/ko/development/comfy-router/models/bria/video-edit-green-screen/code): `bria/video-edit-green-screen` +- [비디오 편집 배경 제거](/ko/development/comfy-router/models/bria/video-edit-remove-background/code): `bria/video-edit-remove-background` +- [비디오 편집 배경 교체](/ko/development/comfy-router/models/bria/video-edit-replace-background/code): `bria/video-edit-replace-background` + +## BytePlus + +- [Dreamina Seedance 2.0 260128](/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code): `byteplus/dreamina-seedance-2-0-260128` +- [Dreamina Seedance 2.0 Fast 260128](/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code): `byteplus/dreamina-seedance-2-0-fast-260128` +- [Dreamina Seedance 2.0 Mini](/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code): `byteplus/dreamina-seedance-2-0-mini` +- [Dreamina Seedance 2.5 260628](/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code): `byteplus/dreamina-seedance-2-5-260628` +- [Seed 2.0 Lite 260228](/ko/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code): `byteplus/seed-2-0-lite-260228` +- [Seed 2.0 Mini 260215](/ko/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code): `byteplus/seed-2-0-mini-260215` +- [Seed 2.0 Pro 260328](/ko/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code): `byteplus/seed-2-0-pro-260328` +- [Seed Audio 1.0 Multilingual](/ko/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code): `byteplus/seed-audio-1.0-multilingual` +- [Seed Audio 1.0](/ko/development/comfy-router/models/byteplus/seed-audio-1-0/code): `byteplus/seed-audio-1.0` +- [Seedance 1.0 Lite I2V 250428](/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code): `byteplus/seedance-1-0-lite-i2v-250428` +- [Seedance 1.0 Lite T2V 250428](/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code): `byteplus/seedance-1-0-lite-t2v-250428` +- [Seedance 1.0 Pro 250528](/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code): `byteplus/seedance-1-0-pro-250528` +- [Seedance 1.0 Pro Fast 251015](/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code): `byteplus/seedance-1-0-pro-fast-251015` +- [Seedance 1.5 Pro 251215](/ko/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code): `byteplus/seedance-1-5-pro-251215` +- [Seededit 3.0 I2I 250628](/ko/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code): `byteplus/seededit-3-0-i2i-250628` +- [Seedream 3.0 T2I 250415](/ko/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code): `byteplus/seedream-3-0-t2i-250415` +- [Seedream 4.0 250828](/ko/development/comfy-router/models/byteplus/seedream-4-0-250828/code): `byteplus/seedream-4-0-250828` +- [Seedream 4.5 251128](/ko/development/comfy-router/models/byteplus/seedream-4-5-251128/code): `byteplus/seedream-4-5-251128` +- [Seedream 5.0 260128](/ko/development/comfy-router/models/byteplus/seedream-5-0-260128/code): `byteplus/seedream-5-0-260128` +- [Seedream 5.0 Pro 260628](/ko/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code): `byteplus/seedream-5-0-pro-260628` + +## Elevenlabs + +- [Eleven Sfx V2](/ko/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code): `elevenlabs/eleven_sfx_v2` +- [Eleven V3](/ko/development/comfy-router/models/elevenlabs/eleven-v3/code): `elevenlabs/eleven_v3` + +## fal + +- [H3 Max Turbo](/ko/development/comfy-router/models/fal/h3-max-turbo/code): `fal/h3-max-turbo` +- [H3 Max](/ko/development/comfy-router/models/fal/h3-max/code): `fal/h3-max` +- [Patina](/ko/development/comfy-router/models/fal/patina/code): `fal/patina` + +## Freepik + +- [AI Image Upscaler Precision V2](/ko/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code): `freepik/ai-image-upscaler-precision-v2` +- [AI Skin Enhancer Creative](/ko/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code): `freepik/ai-skin-enhancer-creative` +- [AI Skin Enhancer Faithful](/ko/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code): `freepik/ai-skin-enhancer-faithful` +- [AI Skin Enhancer Flexible](/ko/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code): `freepik/ai-skin-enhancer-flexible` + +## Gemini Interactions + +- [Gemini Omni 1.1 Flash](/ko/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code): `gemini-interactions/gemini-omni-1.1-flash` +- [Gemini Omni Flash Preview](/ko/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code): `gemini-interactions/gemini-omni-flash-preview` + +## Google + +- [Gemini 2.5 Flash Image](/ko/development/comfy-router/models/google/gemini-2-5-flash-image/code): `vertexai/gemini-2.5-flash-image` +- [Gemini 3.1 Flash Lite](/ko/development/comfy-router/models/google/gemini-3-1-flash-lite/code): `vertexai/gemini-3.1-flash-lite` +- [Gemini 3.7 Flash](/ko/development/comfy-router/models/google/gemini-3-7-flash/code): `vertexai/gemini-3.7-flash` +- [Gemini 3.8 Flash](/ko/development/comfy-router/models/google/gemini-3-8-flash/code): `vertexai/gemini-3.8-flash` +- [Google Gemini](/ko/development/comfy-router/models/google/gemini/code): `vertexai/gemini-3.1-pro-preview` +- [Imagen 3.0 Fast Generate 001](/ko/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code): `vertexai/imagen-3.0-fast-generate-001` +- [Imagen 3.0 Generate 001](/ko/development/comfy-router/models/google/imagen-3-0-generate-001/code): `vertexai/imagen-3.0-generate-001` +- [Imagen 3.0 Generate 002](/ko/development/comfy-router/models/google/imagen-3-0-generate-002/code): `vertexai/imagen-3.0-generate-002` +- [Nano Banana 2 Lite](/ko/development/comfy-router/models/google/nano-banana-2-lite/code): `vertexai/gemini-3.1-flash-lite-image` +- [Nano Banana 2](/ko/development/comfy-router/models/google/nano-banana-2/code): `vertexai/gemini-3.1-flash-image` +- [Nano Banana Pro](/ko/development/comfy-router/models/google/nano-banana-pro/code): `vertexai/gemini-3-pro-image` + +## HeyGen + +- [Starfish](/ko/development/comfy-router/models/heygen/starfish/code): `heygen/starfish` + +## Ideogram + +- [Ideogram V3](/ko/development/comfy-router/models/ideogram/ideogram-v3/code): `ideogram/ideogram-v3` +- [Ideogram 4.0](/ko/development/comfy-router/models/ideogram/ideogram-v4/code): `ideogram/ideogram-v4` +- [P Image Ideogram](/ko/development/comfy-router/models/ideogram/p-image-ideogram/code): `ideogram/p-image-ideogram` + +## Kling + +- [Kling 3.0 Turbo](/ko/development/comfy-router/models/kling/kling-3-0-turbo/code): `kling/kling-3.0-turbo` +- [Kling Image O1](/ko/development/comfy-router/models/kling/kling-image-o1/code): `kling/kling-image-o1` +- [Kling V1.5](/ko/development/comfy-router/models/kling/kling-v1-5/code): `kling/kling-v1-5` +- [Kling V1.6](/ko/development/comfy-router/models/kling/kling-v1-6/code): `kling/kling-v1-6` +- [Kling V1](/ko/development/comfy-router/models/kling/kling-v1/code): `kling/kling-v1` +- [Kling V2.1 Master](/ko/development/comfy-router/models/kling/kling-v2-1-master/code): `kling/kling-v2-1-master` +- [Kling V2.1](/ko/development/comfy-router/models/kling/kling-v2-1/code): `kling/kling-v2-1` +- [Kling V2.5 Turbo](/ko/development/comfy-router/models/kling/kling-v2-5-turbo/code): `kling/kling-v2-5-turbo` +- [Kling V2.6](/ko/development/comfy-router/models/kling/kling-v2-6/code): `kling/kling-v2-6` +- [Kling V2 Master](/ko/development/comfy-router/models/kling/kling-v2-master/code): `kling/kling-v2-master` +- [Kling V3 Omni](/ko/development/comfy-router/models/kling/kling-v3-omni/code): `kling/kling-v3-omni` +- [Kling V3](/ko/development/comfy-router/models/kling/kling-v3/code): `kling/kling-v3` +- [Kling Video O1](/ko/development/comfy-router/models/kling/kling-video-o1/code): `kling/kling-video-o1` +- [Videos Avatar Image 2video](/ko/development/comfy-router/models/kling/videos-avatar-image2video/code): `kling/videos-avatar-image2video` +- [Videos Lip Sync](/ko/development/comfy-router/models/kling/videos-lip-sync/code): `kling/videos-lip-sync` +- [Videos Video Extend](/ko/development/comfy-router/models/kling/videos-video-extend/code): `kling/videos-video-extend` + +## Krea + +- [Krea 2 Large](/ko/development/comfy-router/models/krea/krea-2-large/code): `krea/krea-2-large` +- [Krea 2 Medium Turbo](/ko/development/comfy-router/models/krea/krea-2-medium-turbo/code): `krea/krea-2-medium-turbo` +- [Krea 2 Medium](/ko/development/comfy-router/models/krea/krea-2-medium/code): `krea/krea-2-medium` +- [Krea 2](/ko/development/comfy-router/models/krea/krea-2/code): `krea/krea-2` + +## LTX + +- [LTX 2.5 Fast](/ko/development/comfy-router/models/ltx/ltx-2-5-fast/code): `ltx/ltx-2-5-fast` +- [LTX 2.5 Pro](/ko/development/comfy-router/models/ltx/ltx-2-5-pro/code): `ltx/ltx-2-5-pro` + +## Luma + +- [Photon 1](/ko/development/comfy-router/models/luma/photon-1/code): `luma/photon-1` +- [Photon Flash 1](/ko/development/comfy-router/models/luma/photon-flash-1/code): `luma/photon-flash-1` +- [Ray 2](/ko/development/comfy-router/models/luma/ray-2/code): `luma/ray-2` +- [Ray Flash 2](/ko/development/comfy-router/models/luma/ray-flash-2/code): `luma/ray-flash-2` + +## Luma 2 + +- [Uni 1 Max](/ko/development/comfy-router/models/luma_2/uni-1-max/code): `luma_2/uni-1-max` +- [Uni 1](/ko/development/comfy-router/models/luma_2/uni-1/code): `luma_2/uni-1` + +## Meshy + +- [애니메이션](/ko/development/comfy-router/models/meshy/animations/code): `meshy/animations` +- [Meshy 5](/ko/development/comfy-router/models/meshy/meshy-5/code): `meshy/meshy-5` +- [Meshy 6](/ko/development/comfy-router/models/meshy/meshy-6/code): `meshy/meshy-6` +- [Meshy 7](/ko/development/comfy-router/models/meshy/meshy-7/code): `meshy/meshy-7` +- [리메시](/ko/development/comfy-router/models/meshy/remesh/code): `meshy/remesh` +- [리깅](/ko/development/comfy-router/models/meshy/rigging/code): `meshy/rigging` + +## MiniMax + +- [MiniMax H3](/ko/development/comfy-router/models/minimax/minimax-h3/code): `minimax/minimax-h3` + +## Moonvalley + +- [이미지 기반 비디오 생성](/ko/development/comfy-router/models/moonvalley/image-to-video/code): `moonvalley/image-to-video` +- [텍스트 기반 이미지 생성](/ko/development/comfy-router/models/moonvalley/text-to-image/code): `moonvalley/text-to-image` +- [텍스트 기반 비디오 생성](/ko/development/comfy-router/models/moonvalley/text-to-video/code): `moonvalley/text-to-video` +- [비디오 기반 비디오 생성 크기 조정](/ko/development/comfy-router/models/moonvalley/video-to-video-resize/code): `moonvalley/video-to-video-resize` +- [비디오 기반 비디오 생성](/ko/development/comfy-router/models/moonvalley/video-to-video/code): `moonvalley/video-to-video` + +## OpenAI + +- [GPT 4.1 Mini](/ko/development/comfy-router/models/openai/gpt-4-1-mini/code): `openai/gpt-4.1-mini` +- [GPT 4.1 Nano](/ko/development/comfy-router/models/openai/gpt-4-1-nano/code): `openai/gpt-4.1-nano` +- [GPT 4.1](/ko/development/comfy-router/models/openai/gpt-4-1/code): `openai/gpt-4.1` +- [GPT 4o](/ko/development/comfy-router/models/openai/gpt-4o/code): `openai/gpt-4o` +- [GPT 5.5 Pro](/ko/development/comfy-router/models/openai/gpt-5-5-pro/code): `openai/gpt-5.5-pro` +- [GPT 5.5](/ko/development/comfy-router/models/openai/gpt-5-5/code): `openai/gpt-5.5` +- [GPT 5.6 Luna](/ko/development/comfy-router/models/openai/gpt-5-6-luna/code): `openai/gpt-5.6-luna` +- [GPT 5.6 Sol](/ko/development/comfy-router/models/openai/gpt-5-6-sol/code): `openai/gpt-5.6-sol` +- [GPT 5.6 Terra](/ko/development/comfy-router/models/openai/gpt-5-6-terra/code): `openai/gpt-5.6-terra` +- [GPT 5 Mini](/ko/development/comfy-router/models/openai/gpt-5-mini/code): `openai/gpt-5-mini` +- [GPT 5 Nano](/ko/development/comfy-router/models/openai/gpt-5-nano/code): `openai/gpt-5-nano` +- [GPT 5](/ko/development/comfy-router/models/openai/gpt-5/code): `openai/gpt-5` +- [GPT 6 Astra](/ko/development/comfy-router/models/openai/gpt-6-astra/code): `openai/gpt-6-astra` +- [GPT Image 1.5](/ko/development/comfy-router/models/openai/gpt-image-1-5/code): `openai/gpt-image-1.5` +- [GPT Image 1](/ko/development/comfy-router/models/openai/gpt-image-1/code): `openai/gpt-image-1` +- [GPT Image 2.5 Flare](/ko/development/comfy-router/models/openai/gpt-image-2-5-flare/code): `openai/gpt-image-2.5-flare` +- [GPT Image 2.5 Sunburst](/ko/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code): `openai/gpt-image-2.5-sunburst` +- [GPT Image 2](/ko/development/comfy-router/models/openai/gpt-image-2/code): `openai/gpt-image-2` +- [o1-pro](/ko/development/comfy-router/models/openai/o1-pro/code): `openai/o1-pro` +- [o1](/ko/development/comfy-router/models/openai/o1/code): `openai/o1` +- [o3](/ko/development/comfy-router/models/openai/o3/code): `openai/o3` +- [o4-mini](/ko/development/comfy-router/models/openai/o4-mini/code): `openai/o4-mini` + +## Pruna + +- [P 비디오 2](/ko/development/comfy-router/models/pruna/p-video-2/code): `pruna/p-video-2` + +## Qwen + +- [Qwen 이미지 3.0 Pro](/ko/development/comfy-router/models/qwen/qwen-image-3-0-pro/code): `qwen/qwen-image-3.0-pro` +- [Qwen 이미지 3.0](/ko/development/comfy-router/models/qwen/qwen-image-3-0/code): `qwen/qwen-image-3.0` + +## Recraft + +- [Recraft V2](/ko/development/comfy-router/models/recraft/recraftv2/code): `recraft/recraftv2` +- [Recraft V3](/ko/development/comfy-router/models/recraft/recraftv3/code): `recraft/recraftv3` +- [Recraft V4.1 Pro Vector](/ko/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code): `recraft/recraftv4_1_pro_vector` +- [Recraft V4.1 Pro](/ko/development/comfy-router/models/recraft/recraftv4-1-pro/code): `recraft/recraftv4_1_pro` +- [Recraft V4.1 Utility Pro Vector](/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code): `recraft/recraftv4_1_utility_pro_vector` +- [Recraft V4.1 Utility Pro](/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code): `recraft/recraftv4_1_utility_pro` +- [Recraft V4.1 Utility Vector](/ko/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code): `recraft/recraftv4_1_utility_vector` +- [Recraft V4.1 Utility](/ko/development/comfy-router/models/recraft/recraftv4-1-utility/code): `recraft/recraftv4_1_utility` +- [Recraft V4.1 Vector](/ko/development/comfy-router/models/recraft/recraftv4-1-vector/code): `recraft/recraftv4_1_vector` +- [Recraft V4.1](/ko/development/comfy-router/models/recraft/recraftv4-1/code): `recraft/recraftv4_1` +- [Recraft V4 Pro](/ko/development/comfy-router/models/recraft/recraftv4-pro/code): `recraft/recraftv4_pro` +- [Recraft V4 Styles Pro Vector](/ko/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code): `recraft/recraftv4_styles_pro_vector` +- [Recraft V4 Styles Pro](/ko/development/comfy-router/models/recraft/recraftv4-styles-pro/code): `recraft/recraftv4_styles_pro` +- [Recraft V4 Styles Vector](/ko/development/comfy-router/models/recraft/recraftv4-styles-vector/code): `recraft/recraftv4_styles_vector` +- [Recraft V4 Styles](/ko/development/comfy-router/models/recraft/recraftv4-styles/code): `recraft/recraftv4_styles` +- [Recraft V4](/ko/development/comfy-router/models/recraft/recraftv4/code): `recraft/recraftv4` + +## Runway + +- [Aleph 2](/ko/development/comfy-router/models/runway/aleph2/code): `runway/aleph2` +- [Gen 4 Image](/ko/development/comfy-router/models/runway/gen4-image/code): `runway/gen4_image` +- [Gen 4 Turbo](/ko/development/comfy-router/models/runway/gen4-turbo/code): `runway/gen4_turbo` + +## Tencent + +- [Hunyuan 3D Part](/ko/development/comfy-router/models/tencent/hunyuan-3d-part/code): `tencent/hunyuan-3d-part` +- [Hunyuan 3D Smart Topology](/ko/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code): `tencent/hunyuan-3d-smart-topology` +- [Hunyuan 3D Texture Edit](/ko/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code): `tencent/hunyuan-3d-texture-edit` +- [Hunyuan 3D Uv](/ko/development/comfy-router/models/tencent/hunyuan-3d-uv/code): `tencent/hunyuan-3d-uv` + +## Veo + +- [Veo 2.0 Generate 001](/ko/development/comfy-router/models/veo/veo-2-0-generate-001/code): `veo/veo-2.0-generate-001` +- [Veo 3.0 Fast Generate 001](/ko/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code): `veo/veo-3.0-fast-generate-001` +- [Veo 3.0 Generate 001](/ko/development/comfy-router/models/veo/veo-3-0-generate-001/code): `veo/veo-3.0-generate-001` +- [Veo 3.1 Fast Generate 001](/ko/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code): `veo/veo-3.1-fast-generate-001` +- [Veo 3.1 Generate 001](/ko/development/comfy-router/models/veo/veo-3-1-generate-001/code): `veo/veo-3.1-generate-001` +- [Veo 3.1 Lite Generate 001](/ko/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code): `veo/veo-3.1-lite-generate-001` + +## Wan + +- [HappyHorse 1.0 I2V](/ko/development/comfy-router/models/wan/happyhorse-1-0-i2v/code): `wan/happyhorse-1.0-i2v` +- [HappyHorse 1.0 R2V](/ko/development/comfy-router/models/wan/happyhorse-1-0-r2v/code): `wan/happyhorse-1.0-r2v` +- [HappyHorse 1.0 T2V](/ko/development/comfy-router/models/wan/happyhorse-1-0-t2v/code): `wan/happyhorse-1.0-t2v` +- [HappyHorse 1.0 비디오 편집](/ko/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code): `wan/happyhorse-1.0-video-edit` +- [HappyHorse 1.1 I2V](/ko/development/comfy-router/models/wan/happyhorse-1-1-i2v/code): `wan/happyhorse-1.1-i2v` +- [HappyHorse 1.1 R2V](/ko/development/comfy-router/models/wan/happyhorse-1-1-r2v/code): `wan/happyhorse-1.1-r2v` +- [HappyHorse 1.1 T2V](/ko/development/comfy-router/models/wan/happyhorse-1-1-t2v/code): `wan/happyhorse-1.1-t2v` +- [Wan 2.5 I2I 미리보기](/ko/development/comfy-router/models/wan/wan2-5-i2i-preview/code): `wan/wan2.5-i2i-preview` +- [Wan 2.5 I2V 미리보기](/ko/development/comfy-router/models/wan/wan2-5-i2v-preview/code): `wan/wan2.5-i2v-preview` +- [Wan 2.5 T2I 미리보기](/ko/development/comfy-router/models/wan/wan2-5-t2i-preview/code): `wan/wan2.5-t2i-preview` +- [Wan 2.5 T2V 미리보기](/ko/development/comfy-router/models/wan/wan2-5-t2v-preview/code): `wan/wan2.5-t2v-preview` +- [Wan 2.6 I2V](/ko/development/comfy-router/models/wan/wan2-6-i2v/code): `wan/wan2.6-i2v` +- [Wan 2.6 R2V](/ko/development/comfy-router/models/wan/wan2-6-r2v/code): `wan/wan2.6-r2v` +- [Wan 2.6 T2V](/ko/development/comfy-router/models/wan/wan2-6-t2v/code): `wan/wan2.6-t2v` +- [Wan 2.7 I2V](/ko/development/comfy-router/models/wan/wan2-7-i2v/code): `wan/wan2.7-i2v` +- [Wan 2.7 R2V](/ko/development/comfy-router/models/wan/wan2-7-r2v/code): `wan/wan2.7-r2v` +- [Wan 2.7 T2V](/ko/development/comfy-router/models/wan/wan2-7-t2v/code): `wan/wan2.7-t2v` +- [Wan 2.7 비디오 편집](/ko/development/comfy-router/models/wan/wan2-7-videoedit/code): `wan/wan2.7-videoedit` +- [Wan 3.0 비디오 Prime](/ko/development/comfy-router/models/wan/wan3-0-video-prime/code): `wan/wan3.0-video-prime` +- [Wan 3.0 비디오](/ko/development/comfy-router/models/wan/wan3-0-video/code): `wan/wan3.0-video` + +## WaveSpeed + +- [Flashvsr](/ko/development/comfy-router/models/wavespeed/flashvsr/code): `wavespeed/flashvsr` +- [Seedvr 2](/ko/development/comfy-router/models/wavespeed/seedvr2/code): `wavespeed/seedvr2` +- [Ultimate Image Upscaler](/ko/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code): `wavespeed/ultimate-image-upscaler` + +## xAI + +- [Grok Imagine 이미지 2.0](/ko/development/comfy-router/models/xai/grok-imagine-image-2-0/code): `xai/grok-imagine-image-2.0` +- [Grok Imagine 이미지 Pro](/ko/development/comfy-router/models/xai/grok-imagine-image-pro/code): `xai/grok-imagine-image-pro` +- [Grok Imagine 이미지 Quality](/ko/development/comfy-router/models/xai/grok-imagine-image-quality/code): `xai/grok-imagine-image-quality` +- [Grok Imagine 이미지](/ko/development/comfy-router/models/xai/grok-imagine-image/code): `xai/grok-imagine-image` +- [Grok Imagine 비디오 1.5 미리보기](/ko/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code): `xai/grok-imagine-video-1.5-preview` +- [Grok Imagine 비디오 1.5](/ko/development/comfy-router/models/xai/grok-imagine-video-1-5/code): `xai/grok-imagine-video-1.5` +- [Grok Imagine 비디오](/ko/development/comfy-router/models/xai/grok-imagine-video/code): `xai/grok-imagine-video` diff --git a/ko/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx b/ko/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx new file mode 100644 index 000000000..5b8723893 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router에서 Claude Fable 5.1 사용하기" +description: "Comfy Router를 통해 anthropic/claude-fable-5-1을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Claude Fable 5.1" +translationSourceHash: d7cdabe9 +translationFrom: development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx +translationBlockHashes: + "_intro": ee6f1125 + "Quick start": f53af83a + "Schema": d2c6492b + "Examples": e6e3e477 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-fable-5-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5-1`에 대한 API 레퍼런스이며, Anthropic에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-fable-5-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5-1", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5-1", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류 체계는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형이거나 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다 (예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-fable-5-1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 세부 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나열한 것입니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에 존재하며 다른 종류에는 없습니다. + + + + 블록 종류입니다. `text`는 `text`를 담는 유일한 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예제 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5-1", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ko/development/comfy-router/models/anthropic/claude-fable-5/code.mdx b/ko/development/comfy-router/models/anthropic/claude-fable-5/code.mdx new file mode 100644 index 000000000..64d5c3dff --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-fable-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router로 Claude Fable 5 사용하기" +description: "Comfy Router를 통해 anthropic/claude-fable-5를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Claude Fable 5" +translationSourceHash: 42f440ed +translationFrom: development/comfy-router/models/anthropic/claude-fable-5/code.mdx +translationBlockHashes: + "_intro": 71874613 + "Quick start": d43983c6 + "Schema": 15962b1f + "Examples": d4496b58 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-fable-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5`에 대한 API 레퍼런스이며, Anthropic에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-fable-5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 {#schema} + +### 입력 + + + 중지하기 전에 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류는 Anthropic Messages API 문서를 참고하세요. + + + + 문자열 축약형이거나 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-fable-5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 세부 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나타냅니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에는 존재하고 다른 모든 종류에는 없습니다. + + + + 블록의 종류입니다. `text`가 `text`를 담는 유일한 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록이 현재 Anthropic이 보내는 나머지 종류이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx b/ko/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx new file mode 100644 index 000000000..df340e849 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router로 Claude Haiku 4.5 20251001 사용하기" +description: "Comfy Router를 통해 anthropic/claude-haiku-4-5-20251001을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Claude Haiku 4.5 20251001" +translationSourceHash: a6c93c8c +translationFrom: development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx +translationBlockHashes: + "_intro": ade4fe09 + "Quick start": f5f98099 + "Schema": 9679eecf + "Examples": 18cca7af +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/anthropic/claude-haiku-4-5-20251001.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic에서 Comfy Router를 통해 제공하는 `anthropic/claude-haiku-4-5-20251001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `anthropic/claude-haiku-4-5-20251001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-haiku-4-5-20251001", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-haiku-4-5-20251001", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중지하기 전에 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류에 대해서는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형 또는 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참일 때 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열 또는 콘텐츠 블록의 배열이며, 둘 모두 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-haiku-4-5-20251001/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증할 때 대조하는 바로 그 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출에 대한 캐시 쓰기 입력 토큰의 TTL별 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록이며 순서대로 나열됩니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에 존재하며 다른 종류에는 없습니다. + + + + 블록 종류입니다. `text`는 `text`를 담는 유일한 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 오늘날 Anthropic이 보내는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ko/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx b/ko/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx new file mode 100644 index 000000000..db84a3a75 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router와 함께 Claude Opus 4.6 사용하기" +description: "Comfy Router를 통해 anthropic/claude-opus-4-6 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Claude Opus 4.6" +translationSourceHash: 2b59f7c6 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx +translationBlockHashes: + "_intro": 0919bc94 + "Quick start": 7479d7ac + "Schema": d3b6797e + "Examples": 2cc5500c +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/anthropic/claude-opus-4-6.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic의 Comfy Router에서 제공하는 `anthropic/claude-opus-4-6`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-opus-4-6` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형이거나 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다 (예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참일 때 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-opus-4-6/openapi.json`에서 제공하는 스키마에서 생성되며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록이며 순서대로 제공됩니다. 완료된 모든 메시지에 존재하며, 해당 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에 존재하며 다른 종류에는 없습니다. + + + + 블록 종류입니다. `text`가 `text`를 담는 블록이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고 이 목록은 열려 있습니다. + + +## 예제 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx b/ko/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx new file mode 100644 index 000000000..505c4ba02 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router와 함께 Claude Opus 4.7 사용하기" +description: "Comfy Router를 통해 anthropic/claude-opus-4-7을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Claude Opus 4.7" +translationSourceHash: a2c2394b +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx +translationBlockHashes: + "_intro": adedb853 + "Quick start": fab41f76 + "Schema": 69d553ae + "Examples": 8eadda7c +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/anthropic/claude-opus-4-7.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-7`에 대한 API 레퍼런스이며, Comfy Router가 Anthropic으로부터 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-opus-4-7` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-7", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-7", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류 체계는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형 또는 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트로 이루어진 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열 또는 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-opus-4-7/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 세부 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나타냅니다. 완료된 모든 메시지에 존재하며, 해당 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에는 존재하고 다른 모든 종류에는 없습니다. + + + + 블록의 종류입니다. `text`는 `text`를 담는 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-7", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ko/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx b/ko/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx new file mode 100644 index 000000000..350fff3c1 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx @@ -0,0 +1,223 @@ +--- +title: "Comfy Router에서 Claude Opus 4.8 사용하기" +description: "Comfy Router를 통해 anthropic/claude-opus-4-8을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Claude Opus 4.8" +translationSourceHash: 73f5bbc2 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx +translationBlockHashes: + "_intro": 06eea645 + "Quick start": 4a68e1ef + "Schema": 0519e19d + "Examples": 07251ae9 +--- +{/* 생성된 파일. router-schemas/anthropic/claude-opus-4-8.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic에서 제공하며 Comfy Router를 통해 서비스되는 `anthropic/claude-opus-4-8`의 API 레퍼런스입니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `anthropic/claude-opus-4-8` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-8` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-8", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-8", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-8 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 생성을 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류 체계는 Anthropic Messages API 문서를 참고하세요. + + + + 문자열 축약형이거나 콘텐츠 블록 배열(text, image, document, tool_use, tool_result, ...)입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-opus-4-8/openapi.json`에서 제공하는 스키마에서 생성되며, 요청이 공급자에 도달하기 전에 호출을 검증하는 기준이 되는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나타냅니다. 완료된 모든 메시지에 포함되며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에만 포함되며 다른 종류에는 없습니다. + + + + 블록의 종류입니다. `text`가 `text`를 포함하는 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-8", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/anthropic/claude-opus-5/code.mdx b/ko/development/comfy-router/models/anthropic/claude-opus-5/code.mdx new file mode 100644 index 000000000..bff4b96cb --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-opus-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router로 Claude Opus 5 사용하기" +description: "Comfy Router를 통해 anthropic/claude-opus-5를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Claude Opus 5" +translationSourceHash: 00909559 +translationFrom: development/comfy-router/models/anthropic/claude-opus-5/code.mdx +translationBlockHashes: + "_intro": dd45f124 + "Quick start": 1d505a56 + "Schema": 8006be48 + "Examples": 6926a739 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/anthropic/claude-opus-5.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic에서 제공하고 Comfy Router가 서비스하는 `anthropic/claude-opus-5`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `anthropic/claude-opus-5` + +**Endpoint:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중지하기 전에 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류 체계는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형이거나 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문이 아니라 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-opus-5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 바로 그 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 세부 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록이며 순서대로 나열됩니다. 완료된 모든 메시지에 존재하며, 해당 턴이 아무것도 생성하지 않았으면 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에만 존재하며 다른 종류에는 없습니다. + + + + 블록의 종류입니다. `text`가 `text`를 담는 블록이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록이 현재 Anthropic이 보내는 나머지 종류이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx b/ko/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx new file mode 100644 index 000000000..51b07cf28 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router로 Claude Sonnet 4.5 20250929 사용하기" +description: "Comfy Router를 통해 anthropic/claude-sonnet-4-5-20250929를 호출합니다. endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Claude Sonnet 4.5 20250929" +translationSourceHash: 85681552 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx +translationBlockHashes: + "_intro": eb91f6c0 + "Quick start": 4e0bf3e9 + "Schema": c0b4e9c3 + "Examples": 78b06084 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/anthropic/claude-sonnet-4-5-20250929.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic이 Comfy Router를 통해 제공하는 `anthropic/claude-sonnet-4-5-20250929`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `anthropic/claude-sonnet-4-5-20250929` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-5-20250929", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-5-20250929", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 생성을 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류는 Anthropic Messages API 문서를 참조하세요. + + + + 문자열 축약형 또는 콘텐츠 블록(text, image, document, tool_use, tool_result, ...)의 배열입니다. + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다 (예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참일 때 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열 또는 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-sonnet-4-5-20250929/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 세부 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나열한 것입니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에 존재하며 다른 모든 종류에는 없습니다. + + + + 블록 종류입니다. `text`는 `text`를 포함하는 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-5-20250929", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ko/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx b/ko/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx new file mode 100644 index 000000000..400a14abf --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx @@ -0,0 +1,220 @@ +--- +title: "Comfy Router로 Claude Sonnet 4.6 사용하기" +description: "Comfy Router를 통해 anthropic/claude-sonnet-4-6을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Claude Sonnet 4.6" +translationSourceHash: 508d46b3 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx +translationBlockHashes: + "_intro": fdc3383a + "Quick start": 91b031a4 + "Schema": 7e4df7aa + "Examples": 7fb5285d +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/anthropic/claude-sonnet-4-6.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Anthropic으로부터 Comfy Router가 제공하는 `anthropic/claude-sonnet-4-6`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-sonnet-4-6` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 중지하기 전에 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류 체계는 Anthropic Messages API 문서를 참고하세요. + + + + 문자열 축약형이거나 콘텐츠 블록의 배열입니다 (text, image, document, tool_use, tool_result, ...). + + + + 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다 (예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참이면 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`입니다. + + + + 최상위 시스템 프롬프트입니다. 문자열이거나 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-sonnet-4-6/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 내역입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록이며 순서대로 나열됩니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않았다면 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에 존재하며 다른 모든 종류에는 없습니다. + + + + 블록의 종류입니다. `text`는 `text`를 담는 유일한 블록이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 오늘날 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/ko/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx b/ko/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx new file mode 100644 index 000000000..26b3f5946 --- /dev/null +++ b/ko/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router에서 Claude Sonnet 5 사용하기" +description: "Comfy Router를 통해 anthropic/claude-sonnet-5를 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Claude Sonnet 5" +translationSourceHash: 65026c35 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx +translationBlockHashes: + "_intro": 816f3f43 + "Quick start": 54b3b756 + "Schema": ed894fd9 + "Examples": a3ab5037 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/anthropic/claude-sonnet-5.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-5`의 API 레퍼런스이며, Anthropic에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `anthropic/claude-sonnet-5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 생성을 중단하기 전까지 생성할 최대 토큰 수입니다. + + + + 대화 턴입니다. 전체 콘텐츠 블록 분류는 Anthropic Messages API 문서를 참고하세요. + + + + 문자열 축약형 또는 콘텐츠 블록의 배열(text, image, document, tool_use, tool_result, ...) 중 하나입니다. + + + + 사용 가능한 값: `user`, `assistant` + + + + Anthropic 모델 식별자입니다(예: `claude-sonnet-4-5`, `claude-opus-4-7`). + + + + 참인 경우, 응답은 단일 JSON 본문 대신 Anthropic 메시지 이벤트의 `text/event-stream`이 됩니다. + + + + 최상위 시스템 프롬프트입니다. 문자열 또는 콘텐츠 블록의 배열이며, 둘 다 변경 없이 Anthropic에 전달됩니다. + + +Router가 `GET /v2/models/anthropic/claude-sonnet-5/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 호출의 토큰 사용량입니다. + + + + Anthropic Messages API 호출의 캐시 쓰기 입력 토큰에 대한 TTL별 분석입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + 응답의 콘텐츠 블록을 순서대로 나타냅니다. 완료된 모든 메시지에 존재하며, 턴이 아무것도 생성하지 않은 경우 비어 있습니다. + + + + 블록의 텍스트입니다. `text` 블록에만 존재하며 다른 종류에는 없습니다. + + + + 블록의 종류입니다. `text`는 `text`를 담는 유일한 종류이며, `thinking`, `redacted_thinking`, `tool_use`, `server_tool_use` 및 도구 결과 블록은 현재 Anthropic이 전송하는 다른 종류들이고, 이 목록은 열려 있습니다. + + +## 예시 + +### 입력 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/beeble/switchx/code.mdx b/ko/development/comfy-router/models/beeble/switchx/code.mdx new file mode 100644 index 000000000..be8d2b979 --- /dev/null +++ b/ko/development/comfy-router/models/beeble/switchx/code.mdx @@ -0,0 +1,225 @@ +--- +title: "Comfy Router로 SwitchX 사용하기" +description: "Comfy Router를 통해 beeble/switchx를 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "SwitchX" +translationSourceHash: 71dbe99d +translationFrom: development/comfy-router/models/beeble/switchx/code.mdx +translationBlockHashes: + "_intro": 38f14aeb + "Quick start": 80404da0 + "Schema": ee28c671 + "Examples": 85b68332 +--- +{/* GENERATED FILE. Generated from router-schemas/beeble/switchx.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Beeble에서 제공하고 Comfy Router가 서비스하는 `beeble/switchx`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `beeble/switchx` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/beeble/switchx` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "beeble/switchx", + { + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("beeble/switchx", { + alpha_mode: "auto", + generation_type: "image", + max_resolution: 720, + prompt: "A cinematic product photo of a glass lamp on a marble table", + source_uri: "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/beeble/switchx \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"alpha_mode\": \"auto\", \"generation_type\": \"image\", \"max_resolution\": 720, \"prompt\": \"A cinematic product photo of a glass lamp on a marble table\", \"source_uri\": \"https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## 스키마 + +### 입력 + + + 알파 모드: auto, fill, custom, select + + 가능한 값: `auto`, `fill`, `custom`, `select` + + + + 사용자 지정 알파 매트의 URI입니다. alpha_mode가 custom 또는 select일 때 필수입니다. auto 또는 fill일 때는 무시됩니다. + + + + 완료 또는 실패 시 webhook 알림을 받을 HTTPS URL입니다. + + + + 출력 유형: 이미지 또는 비디오 + + 가능한 값: `image`, `video` + + + + 안전한 재시도를 위한 멱등성 키입니다. 동일한 키를 가진 작업이 이미 계정에 존재하면 API는 복제를 생성하지 않고 기존 작업의 상태를 반환합니다. + + + + 최대 출력 해상도: 720 또는 1080 (기본값: 1080). + + + + 원하는 출력에 대한 텍스트 설명입니다(최대 2,000자). prompt 또는 reference_image_uri 중 최소 한 개가 필요합니다. + + + + 스타일 전송을 위한 참조 이미지의 URI입니다. source_uri와 동일한 URI 유형을 허용합니다. + + + + 소스 이미지 또는 비디오의 URI입니다. beeble://uploads/\{id}/\{filename}, https URL 또는 data:\{mime};base64 URI(최대 50 MB)를 허용합니다. + + +`GET /v2/models/beeble/switchx/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + auto, fill, custom, select + + + + 작업이 완료되거나 실패한 시점의 ISO 8601 타임스탬프입니다. + + + + 작업이 생성된 시점의 ISO 8601 타임스탬프입니다. + + + + 오류 메시지입니다(status가 failed일 때 표시됩니다). + + + + 이미지 또는 비디오 + + + + 작업 식별자(swx_...) + + + + 마지막 상태 변경 시점의 ISO 8601 타임스탬프입니다. + + + + SwitchX 작업 출력에 대한 서명된 URL입니다. + + + + 알파 매트 URL입니다. + + + + 합성된 출력 URL입니다. + + + + 전처리된 소스 URL입니다. + + + + 진행률 백분율(0-100)입니다. + + + + 현재 작업 상태입니다. + + 가능한 값: `in_queue`, `processing`, `completed`, `failed` + + + + SwitchX 작업의 webhook 전송 상태입니다. + + + + 지금까지의 전송 시도 횟수입니다. + + + + 마지막으로 실패한 전송 시도의 오류 메시지입니다. + + + + 대기 중, 전송됨 또는 실패 + + +## 예제 + +### 입력 + +```json +{ + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 출력 + +```json +{ + "alpha_mode": "auto", + "completed_at": "2027-01-01T00:01:04Z", + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "image", + "id": "swx_1a2b3c4d5e6f7a8b", + "modified_at": "2027-01-01T00:01:04Z", + "output": { + "alpha": "https://example.invalid/beeble/switchx/alpha.png", + "render": "https://example.invalid/beeble/switchx/render.png", + "source": "https://example.invalid/beeble/switchx/source.png" + }, + "progress": 100, + "status": "completed" +} +``` + + diff --git a/ko/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx b/ko/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx new file mode 100644 index 000000000..98dbea569 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx @@ -0,0 +1,210 @@ +--- +title: "Comfy Router에서 Erase V1 사용하기" +description: "Comfy Router를 통해 bfl/erase-v1을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Erase V1" +translationSourceHash: e609bb17 +translationFrom: development/comfy-router/models/black-forest-labs/erase-v1/code.mdx +translationBlockHashes: + "_intro": b4153070 + "Schema": 9d76d890 + "Examples": d7b73bfd +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/erase-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs가 제공하고 Comfy Router가 서비스하는 `bfl/erase-v1`의 API 레퍼런스입니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/erase-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/erase-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/erase-v1", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/erase-v1", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/erase-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## Schema + +### 입력 + + + 제거 이전에 마스크를 팽창시킬 픽셀 수입니다. 팽창은 객체 가장자리를 덮는 데 도움이 됩니다. 최대 25픽셀입니다. + + 범위: `0` ~ `25` + + + + Base64로 인코딩된 입력 이미지 또는 HTTP(S) 이미지 URL입니다. + + + + Base64로 인코딩된 흑백 마스크 또는 HTTP(S) 이미지 URL입니다. 흰색 픽셀은 제거할 객체를 나타내고, 검정색 픽셀은 보존됩니다. 입력 이미지와 동일한 크기여야 합니다. + + + + 가능한 값: `jpeg`, `png`, `webp` + + + + 입력 및 출력 검열에 대한 허용치 수준입니다. 0에서 5 사이이며, 0이 가장 엄격하고 5가 가장 관대합니다. + + 범위: `0` ~ `5` + + + + 재현성을 위한 선택적 시드입니다. + + + + 웹훅 서명 검증을 위한 선택적 비밀 값입니다. + + + + 웹훅 알림을 받을 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/bfl/erase-v1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 작업이 Ready 상태가 되면 채워지는, 공급자가 보고한 크레딧 단위 비용입니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락합니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix epoch 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 자산에 대한 서명된 URL입니다. Router는 자산을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 채 되지 않는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 리프는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다: 비디오는 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크가 만료되므로 URL을 저장하지 말고 자산을 다운로드하세요. + + 형식: `uri` + + + + 생성이 사용한 시드로, 제공되었든 공급자가 선택했든 관계없습니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었습니다. 서식 없는 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix epoch 이후 초 단위입니다. `float`이 아니라 `double`입니다. 현재 시점의 epoch 값 근처에서 float32의 간격은 약 128초이므로, 생성 하나의 전체 구간이 단일 디코딩 값으로 뭉개집니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==" +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx new file mode 100644 index 000000000..b8702a700 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx @@ -0,0 +1,426 @@ +--- +title: "Comfy Router로 Flux 1.1 Pro Ultra 이미지 사용하기" +description: "Comfy Router를 통해 HTTP로 FLUX 1.1 [pro] Ultra와 FLUX 1.1 [pro]를 호출하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Flux 1.1 Pro Ultra 이미지" +translationSourceHash: 70ee8564 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Flux 1.1 Pro Ultra 이미지 API 레퍼런스입니다. FLUX 1.1 [pro]는 Black Forest Labs의 텍스트 기반 이미지 생성 모델입니다. Ultra 모드는 최대 4MP 해상도로 이미지를 생성합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +호출할 모델을 선택하세요. 스니펫부터 스키마와 예제까지 아래의 모든 내용이 선택에 따라 달라집니다. + + + +**Model ID:** `bfl/flux-pro-1.1-ultra` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1-ultra", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": False, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1-ultra", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + aspect_ratio: "16:9", + raw: false, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"aspect_ratio\": \"16:9\", \"raw\": false}" +``` + + +

스키마

+ +

입력

+ + + 21:9에서 9:21 사이의 이미지 비율입니다. 예: 16:9. + + + + 리믹스할 선택적 base64 인코딩 이미지입니다. + + + + 프롬프트와 이미지 프롬프트 사이의 블렌딩 비율로, 0(프롬프트만)에서 1(이미지 프롬프트만)까지입니다. + + 범위: `0` ~ `1` + + + + 출력 이미지 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + 이미지 생성을 위한 텍스트 프롬프트입니다. + + + + 프롬프트를 업샘플링할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트가 자동으로 수정됩니다. + + + + 처리 과정이 적고 더 자연스러운 이미지를 생성합니다. + + + + 입력 및 출력 검열에 대한 허용치 수준으로, 0(가장 엄격)에서 6(가장 완화)까지입니다. + + 범위: `0` ~ `6` + + + + 재현성을 위한 선택적 시드입니다. 생략하면 무작위 시드가 사용됩니다. + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 수신할 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/bfl/flux-pro-1.1-ultra/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 동일한 문서입니다. + +

출력

+ + + 크레딧 단위로 공급자가 보고한 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 nullable이 아닙니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 nullable이라면 이는 단순히 키 존재 여부 확인으로 축소되기 때문입니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시각으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋의 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅이 수행되지 못한 leaf는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다. 동영상은 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 공급자가 제공했든 직접 지정했든, 생성에 사용된 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었습니다. 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시각으로, Unix 에포크 이후 초 단위입니다. `float`가 아니라 `double`입니다. 현재 시점의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 생성 전체 구간이 하나의 디코딩된 값으로 뭉개지기 때문입니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +

예제

+ +

입력

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": false +} +``` + +

출력

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +URL은 임시입니다. 이미지를 보관해야 한다면 즉시 다운로드하세요. +
+ +**Model ID:** `bfl/flux-pro-1.1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + width: 1024, + height: 768, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"width\": 1024, \"height\": 768}" +``` + + +

스키마

+ +

입력

+ + + 생성된 이미지의 높이(픽셀)입니다. 32의 배수여야 합니다. + + 범위: `256` ~ `1440` + + + + FLUX Redux와 함께 사용할 선택적 base64 인코딩 이미지입니다. + + + + 출력 이미지 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + 이미지 생성을 위한 텍스트 프롬프트입니다. + + + + 프롬프트를 업샘플링할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트가 자동으로 수정됩니다. + + + + 입력 및 출력 검열에 대한 허용치 수준으로, 0(가장 엄격)에서 6(가장 완화)까지입니다. + + 범위: `0` ~ `6` + + + + 재현성을 위한 선택적 시드입니다. 생략하면 무작위 시드가 사용됩니다. + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 수신할 URL입니다. + + 형식: `uri` + + + + 생성된 이미지의 너비(픽셀)입니다. 32의 배수여야 합니다. + + 범위: `256` ~ `1440` + + +Router가 `GET /v2/models/bfl/flux-pro-1.1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 동일한 문서입니다. + +

출력

+ + + 크레딧 단위로 공급자가 보고한 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 nullable이 아닙니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 nullable이라면 이는 단순히 키 존재 여부 확인으로 축소되기 때문입니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시각으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋의 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅이 수행되지 못한 leaf는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다. 동영상은 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 공급자가 제공했든 직접 지정했든, 생성에 사용된 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었습니다. 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시각으로, Unix 에포크 이후 초 단위입니다. `float`가 아니라 `double`입니다. 현재 시점의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 생성 전체 구간이 하나의 디코딩된 값으로 뭉개지기 때문입니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +

예제

+ +

입력

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768 +} +``` + +

출력

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +URL은 임시입니다. 이미지를 보관해야 한다면 즉시 다운로드하세요. +
+
+ + \ No newline at end of file diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx new file mode 100644 index 000000000..f22379401 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx @@ -0,0 +1,452 @@ +--- +title: "Comfy Router로 FLUX.1 Kontext 사용하기" +description: "Comfy Router를 통해 HTTP로 FLUX.1 Kontext Pro와 Kontext Max를 호출하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "FLUX.1 Kontext" +translationSourceHash: 6016f7f5 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +FLUX.1 Kontext API 레퍼런스입니다. FLUX.1 Kontext는 Black Forest Labs의 명령 기반 이미지 편집 모델입니다. 이미지와 텍스트 명령을 보내면 나머지 장면은 그대로 유지한 채 편집된 이미지를 돌려받습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +호출할 모델을 선택하세요. 아래의 모든 내용은 스니펫부터 스키마, 예제까지 선택에 따라 달라집니다. + + + +**Model ID:** `bfl/flux-kontext-pro` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-pro` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-pro", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-pro", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

Schema

+ +

입력

+ + + 21:9에서 9:21 사이의 출력 비율(예: 16:9)입니다. 입력 이미지가 주어지면 해당 이미지의 비율을 기본값으로 사용하고, 그렇지 않으면 1:1입니다. + + + + 편집할 이미지로, base64로 인코딩된 이미지 또는 http(s) URL입니다. 선택 사항이며, 없으면 모델은 프롬프트만으로 생성합니다. + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 출력 이미지 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + input_image에 적용할 편집을 설명하는 텍스트 프롬프트이며, input_image가 없을 때는 생성할 이미지를 설명합니다. + + + + 프롬프트를 업샘플링할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트가 자동으로 수정됩니다. + + + + 입력 및 출력 검열에 대한 허용치 수준으로, 0(가장 엄격)에서 6(가장 느슨) 사이입니다. + + 범위: `0`부터 `6`까지 + + + + 재현성을 위한 선택적 seed입니다. 생략하면 임의의 seed가 사용됩니다. + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 받을 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/bfl/flux-kontext-pro/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +

출력

+ + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0`부터 `1`까지 + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락합니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy가 청구하는 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시각으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋의 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅을 수행할 수 없었던 리프는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다. 비디오는 대략 2시간, 이미지는 대략 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하기보다 에셋을 다운로드하세요. + + 형식: `uri` + + + + 생성에 사용된 seed로, 제공되었든 공급자가 선택했든 관계없습니다. BFL이 2^31을 초과하는 seed(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었으며, 포맷되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시각으로, Unix 에포크 이후 초 단위입니다. `float`이 아닌 `double`을 사용합니다. 현재의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 전체 생성 구간이 단일 디코딩 값으로 압축됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +

예제

+ +

입력

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

출력

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +URL은 임시입니다. 이미지를 보관해야 한다면 즉시 다운로드하세요. +
+ +**Model ID:** `bfl/flux-kontext-max` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-max` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-max", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-max", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

Schema

+ +

입력

+ + + 21:9에서 9:21 사이의 출력 비율(예: 16:9)입니다. 입력 이미지가 주어지면 해당 이미지의 비율을 기본값으로 사용하고, 그렇지 않으면 1:1입니다. + + + + 편집할 이미지로, base64로 인코딩된 이미지 또는 http(s) URL입니다. 선택 사항이며, 없으면 모델은 프롬프트만으로 생성합니다. + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 추가 참조 이미지로, base64로 인코딩되었거나 http(s) URL입니다(실험적 다중 참조). + + + + 출력 이미지 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + input_image에 적용할 편집을 설명하는 텍스트 프롬프트이며, input_image가 없을 때는 생성할 이미지를 설명합니다. + + + + 프롬프트를 업샘플링할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트가 자동으로 수정됩니다. + + + + 입력 및 출력 검열에 대한 허용치 수준으로, 0(가장 엄격)에서 6(가장 느슨) 사이입니다. + + 범위: `0`부터 `6`까지 + + + + 재현성을 위한 선택적 seed입니다. 생략하면 임의의 seed가 사용됩니다. + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 받을 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/bfl/flux-kontext-max/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +

출력

+ + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0`부터 `1`까지 + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락합니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy가 청구하는 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시각으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋의 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅을 수행할 수 없었던 리프는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다. 비디오는 대략 2시간, 이미지는 대략 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하기보다 에셋을 다운로드하세요. + + 형식: `uri` + + + + 생성에 사용된 seed로, 제공되었든 공급자가 선택했든 관계없습니다. BFL이 2^31을 초과하는 seed(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었으며, 포맷되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시각으로, Unix 에포크 이후 초 단위입니다. `float`이 아닌 `double`을 사용합니다. 현재의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 전체 생성 구간이 단일 디코딩 값으로 압축됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +

예제

+ +

입력

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

출력

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +URL은 임시입니다. 이미지를 보관해야 한다면 즉시 다운로드하세요. +
+
+ + \ No newline at end of file diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx new file mode 100644 index 000000000..600d8bbdd --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx @@ -0,0 +1,242 @@ +--- +title: "Comfy Router로 FLUX 2 Max 사용하기" +description: "Comfy Router를 통해 bfl/flux-2-max를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "FLUX 2 Max" +translationSourceHash: 50eacc87 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx +translationBlockHashes: + "_intro": b78e1772 + "Quick start": d68c79a1 + "Schema": 8da5f7ce + "Examples": 07dfd8d0 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-2-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs에서 제공하며 Comfy Router가 서비스하는 `bfl/flux-2-max`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `bfl/flux-2-max` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-2-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-max", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-max", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 이미지의 높이. + + 범위: `256` ~ `2048` + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 생성된 이미지의 출력 형식. + + 가능한 값: `jpeg`, `png` + + + + 생성할 이미지에 대한 텍스트 설명. + + + + 생성을 위해 프롬프트를 자동으로 수정합니다. + + + + 검열 허용치 수준 (Flux 2 Max 전용). + + 범위: `0` ~ `5` + + + + 재현성을 위한 시드. + + + + 이미지의 너비. + + 범위: `256` ~ `2048` + + +Router가 `GET /v2/models/bfl/flux-2-max/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 기준이 되는 것과 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자. + + + + BFL이 보고하는 선택적 생성 진행률. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null이 될 수 없습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락하게 됩니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix epoch 이후 경과한 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링을 거친 후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋에 대한 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅이 수행되지 못한 리프는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다(비디오는 대략 2시간, 이미지는 대략 10분). 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 제공되었든 공급자가 선택했든, 생성에 사용된 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었습니다. 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix epoch 이후 경과한 초 단위입니다. `float`이 아닌 `double`입니다. 현재 epoch 값 근처에서 float32의 간격은 약 128초이므로, 생성 전체의 시간 범위가 단일 디코딩 값으로 뭉개집니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx new file mode 100644 index 000000000..dc206c5a9 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx @@ -0,0 +1,242 @@ +--- +title: "Comfy Router로 FLUX 2 Pro 사용하기" +description: "Comfy Router를 통해 bfl/flux-2-pro를 호출하는 방법을 설명합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "FLUX 2 Pro" +translationSourceHash: fb5fb051 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx +translationBlockHashes: + "_intro": 7b39815b + "Quick start": 6fde3990 + "Schema": 942b3b42 + "Examples": 07dfd8d0 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-2-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs에서 제공하고 Comfy Router가 서비스하는 `bfl/flux-2-pro`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `bfl/flux-2-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-2-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-pro", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 이미지의 높이. + + 범위: `256` ~ `2048` + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 이미지 기반 이미지 생성을 위한 Base64 인코딩 이미지. + + + + 생성된 이미지의 출력 형식. + + 가능한 값: `jpeg`, `png` + + + + 생성할 이미지에 대한 텍스트 설명. + + + + 생성을 위해 프롬프트를 자동으로 수정합니다. + + + + 검열 허용치 수준 (Flux 2 Max 전용). + + 범위: `0` ~ `5` + + + + 재현성을 위한 시드. + + + + 이미지의 너비. + + 범위: `256` ~ `2048` + + +Router가 `GET /v2/models/bfl/flux-2-pro/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자. + + + + BFL이 보고하는 선택적 생성 진행률. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 nullable이 아닙니다. 이 컴포넌트의 `required` 항목은 `200`이 결과를 포함한다는 약속이며, nullable한 `result`는 이를 키 존재 여부 검사로 격하시키기 때문입니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 재생 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후, 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 애셋에 대한 서명된 URL입니다. Router는 애셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않을 수 있습니다. 재호스팅을 수행할 수 없는 리프는 대신 BFL 자체의 단기 전송 URL을 유지합니다. 비디오는 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하기보다 애셋을 다운로드하세요. + + 형식: `uri` + + + + 제공되었든 공급자가 선택했든, 생성에 사용된 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하는데, 서식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성되기 때문에 `int64`로 선언되었습니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`이 아닌 `double`입니다. 현재 시점의 에포크 값 근처에서 float32의 간격은 약 128초로, 생성 전체의 범위를 단일 디코딩 값으로 붕괴시키기 때문입니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx new file mode 100644 index 000000000..2479d8a7a --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx @@ -0,0 +1,208 @@ +--- +title: "Comfy Router로 FLUX 3 Video 사용하기" +description: "Comfy Router를 통해 HTTP로 FLUX 3에서 동기화된 오디오가 있는 비디오를 생성하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "FLUX 3 Video" +translationSourceHash: 1ab039ff +translationFrom: development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx +translationBlockHashes: + "_intro": 68d3f377 + "Quick start": df957ab3 + "Schema": f4f6cabb + "Examples": 8d347442 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +FLUX 3 Video에 대한 API 레퍼런스입니다. FLUX 3 Video는 Black Forest Labs의 비디오 생성 모델로, 텍스트 프롬프트를 동기화된 오디오가 포함된 짧은 클립으로 변환합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `bfl/flux-3-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-3-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-3-video", + { + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": True, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-3-video", { + mode: "t2v", + prompt: "a single red maple leaf falling onto still water, slow motion", + duration: 5, + aspect_ratio: "16:9", + generate_audio: true, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-3-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"mode\": \"t2v\", \"prompt\": \"a single red maple leaf falling onto still water, slow motion\", \"duration\": 5, \"aspect_ratio\": \"16:9\", \"generate_audio\": true}" +``` + + +## 스키마 + +### 입력 + + + 출력 화면 비율: auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4 또는 9:16입니다. auto는 BFL이 프롬프트와 참조 자료를 바탕으로 선택하도록 합니다. + + + + 초안 모드: 결과에 draft_cache 다운로드 URL이 포함되는 빠른 미리보기를 생성합니다. 해당 번들을 mode draft_enhance와 함께 다시 전송하면 같은 생성 작업을 최고 품질 버전으로 렌더링합니다. + + + + draft_enhance 전용입니다. 이전 초안 생성에서 만들어진 암호화된 초안 캐시 번들로, base64로 인코딩된 다운로드 번들이나 아직 유효한 http(s) URL 형태입니다. 원본 입력은 번들에 포함되어 있습니다. + + + + 비디오 재생 시간(초)으로, 5에서 20 사이의 정수 초를 사용하거나 콘텐츠에 맞게 auto를 사용합니다. + + 범위: `5` ~ `20` + + + + 비디오와 함께 동기화된 오디오를 생성합니다. + + + + i2v 전용입니다. 비디오의 프레임이 될 이미지로, 각각 http(s) URL 또는 base64이며 총 1~10개입니다. 단일 이미지, 이미지 목록(하나는 비디오를 시작하고, 둘은 시작과 끝을 담당하며, 그보다 많으면 균등하게 배치되고 재생 시간을 지정해야 함), 또는 시간 순서대로 정렬된 [초, 이미지] 타임스탬프 쌍(예: [[0, "..."], [3.5, "..."]])을 받습니다. 쌍은 두 요소 배열로, 먼저 초 단위 숫자가 오고 그다음 이미지가 옵니다. + + + + 생성 모드: t2v(텍스트 기반 비디오 생성), i2v(이미지 이어가기), v2v(비디오 이어가기) 또는 draft_enhance(이전 초안의 최고 품질 렌더링)입니다. text-to-video처럼 풀어 쓴 별칭도 허용됩니다. + + + + 비디오를 설명하는 자유 형식 프롬프트입니다. draft_enhance를 제외한 모든 모드에서 필수입니다. + + + + 비디오 해상도 등급: hd 또는 비디오 업샘플러로 마무리되는 더 높은 해상도의 결과를 위한 fhd입니다. t2v, i2v, v2v에서는 기본값이 hd이고 draft_enhance에서는 fhd입니다. 정확한 크기는 화면 비율에 따라 달라집니다. + + 가능한 값: `hd`, `fhd` + + + + 입력 및 출력 유해성 검열에 대한 허용치 수준이며 0이 가장 엄격합니다. 성적 콘텐츠는 요청한 허용치와 관계없이 레벨 3으로, 혐오 콘텐츠는 레벨 2로 제한되며, 조건화 미디어가 포함된 요청은 레벨 2로 제한됩니다. + + 범위: `0` ~ `4` + + + + v2v 전용입니다. 계속할 비디오로, http(s) URL 또는 base64 MP4입니다. 생성된 클립은 해당 비디오의 마지막 프레임부터 이어집니다. + + + + 엔드포인트 버전입니다. latest는 현재 릴리스를 제공하며, 날짜가 지정된 고정 가능 릴리스 태그는 게시되는 대로 추가됩니다. + + +Router가 `GET /v2/models/bfl/flux-3-video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 두 URL 리프 중 정확히 하나만 채워집니다. 기본 모드에서는 `sample`, `draft: true` 모드에서는 `draft_cache`입니다. + + + + 공급자가 보고한 작업 비용입니다. 이는 Comfy 청구 금액이 아니라 BFL의 수치입니다. + + 형식: `double` + + + + `draft: true` 모드에서 `sample` 대신 반환되는 서명된 URL이며, `sample`과 같은 방식으로 Comfy 스토리지에 다시 호스팅됩니다. 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL이고, 재호스팅을 수행할 수 없었을 때는 BFL 자체의 약 2시간짜리 전달 URL입니다. + + 형식: `uri` + + + + 생성된 MP4의 서명된 URL입니다. Router는 자산을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 리프는 대신 BFL 자체의 약 2시간짜리 전달 URL을 유지합니다. `draft: true` 모드에서는 없습니다. + + 형식: `uri` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found입니다. 대소문자를 구분하지 않고 비교하세요. Router는 BFL의 표기를 그대로 전달합니다. + + +## 예시 + +### 입력 + +```json +{ + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": true +} +``` + +### 출력 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.mp4" + } +} +``` + +`result.sample`은 일반적으로 Comfy에서 호스팅하는 서명된 URL이며, 생성 시점부터 최대 24시간 동안 유효합니다. 다시 재생하면 더 오래된 URL이 반환될 수 있고, 재호스팅할 수 없는 asset은 수명이 더 짧은 공급자 URL을 그대로 유지합니다. 링크를 저장해 두기보다 MP4 파일을 promptly 다운로드하세요. `draft: true`인 경우에는 `result.sample`을 기대하지 말고 `result.draft_cache`를 읽으세요. + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx new file mode 100644 index 000000000..bc353d317 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx @@ -0,0 +1,234 @@ +--- +title: "Comfy Router로 FLUX Pro 1.0 Canny 사용하기" +description: "Comfy Router를 통해 bfl/flux-pro-1.0-canny를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "FLUX Pro 1.0 Canny" +translationSourceHash: d84b9e66 +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx +translationBlockHashes: + "_intro": ce5e56f7 + "Quick start": fa0ec32e + "Schema": ef7f0fbb +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-canny.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-canny`의 API 레퍼런스입니다. Black Forest Labs에서 제공하며 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `bfl/flux-pro-1.0-canny` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-canny", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-canny", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + Canny 엣지 감지를 위한 높은 임계값 + + 범위: `0` ~ `500` + + + + Canny 엣지 감지를 위한 낮은 임계값 + + 범위: `0` ~ `500` + + + + 사전 처리된 이미지가 제공되지 않은 경우 제어 입력으로 사용할 Base64로 인코딩된 이미지 + + + + 이미지 생성 과정의 가이드 강도 + + 범위: `1` ~ `100` + + + + 생성된 이미지의 출력 형식입니다. 'jpeg' 또는 'png'일 수 있습니다. + + + + 제어 전처리 단계를 건너뛰게 하는 선택적 사전 처리 이미지 + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + 프롬프트에 업샘플링을 수행할지 여부 + + + + 입력 및 출력 검열에 대한 허용치 수준입니다. 0에서 6 사이이며, 0이 가장 엄격하고 6이 가장 관대합니다. + + 범위: `0` ~ `6` + + + + 재현성을 위한 선택적 시드 + + + + 이미지 생성 과정의 단계 수 + + 범위: `15` ~ `50` + + + + 웹훅 서명 검증을 위한 선택적 시크릿 + + + + 웹훅 알림을 수신할 URL + + +Router가 `GET /v2/models/bfl/flux-pro-1.0-canny/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 크레딧 단위로 공급자가 보고한 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고한 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락합니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 Comfy의 청구 금액이 아니라 BFL의 수치입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 경과한 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 결과물에 대한 서명된 URL입니다. Router는 결과물을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 1시간도 남지 않은 URL이 반환될 수 있습니다. 재호스팅이 수행될 수 없는 리프는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다. 비디오는 대략 2시간, 이미지는 대략 10분입니다. 어느 경우든 링크는 만료되므로 URL을 저장하기보다 결과물을 다운로드하세요. + + 형식: `uri` + + + + 생성에 사용된 시드로, 제공되었든 공급자가 선택했든 관계없습니다. BFL은 2^31(예: 2784347701)을 초과하는 시드를 반환하는데, 서식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 이를 32비트 필드로 생성하므로 `int64`로 선언되었습니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 경과한 초 단위입니다. `float`이 아니라 `double`입니다. 현재의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 전체 생성 구간이 단일 디코딩 값으로 축소됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## Examples + +### Input + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### Output + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx new file mode 100644 index 000000000..24a85bf84 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx @@ -0,0 +1,223 @@ +--- +title: "Comfy Router로 FLUX Pro 1.0 Depth 사용하기" +description: "Comfy Router를 통해 bfl/flux-pro-1.0-depth를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "FLUX Pro 1.0 Depth" +translationSourceHash: b41edb6c +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx +translationBlockHashes: + "_intro": 82c5ca01 + "Quick start": af98681e + "Schema": a0d1f1e2 + "Examples": ef614e15 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-depth.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-depth`의 API Reference로, Black Forest Labs에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `bfl/flux-pro-1.0-depth` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-depth", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-depth", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 제어 입력으로 사용할 Base64 인코딩 이미지 + + + + 이미지 생성 과정의 가이드 강도 + + 범위: `1` ~ `100` + + + + 생성된 이미지의 출력 형식입니다. 'jpeg' 또는 'png'일 수 있습니다. + + + + 제어 전처리 단계를 실행 건너뛰는 선택적 전처리 이미지 + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + 프롬프트에 업샘플링을 수행할지 여부 + + + + 입력 및 출력 검열에 대한 허용치 수준입니다. 0에서 6 사이이며, 0이 가장 엄격하고 6이 가장 관대합니다. + + 범위: `0` ~ `6` + + + + 재현성을 위한 선택적 시드 + + + + 이미지 생성 과정의 단계 수 + + 범위: `15` ~ `50` + + + + 웹훅 서명 검증을 위한 선택적 시크릿 + + + + 웹훅 알림을 수신할 URL + + +Router가 `GET /v2/models/bfl/flux-pro-1.0-depth/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고한 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 nullable이 아닙니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 nullable이면 이는 키 존재 여부 확인으로 축소됩니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 Comfy 청구가 아닌 BFL의 수치입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후에 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 에셋에 대한 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 1시간 정도만 남은 URL이 반환될 수 있습니다. 재호스팅이 수행될 수 없는 리프는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다. 비디오는 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 생성이 사용한 시드로, 제공되었든 공급자가 선택했든 마찬가지입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었으며, 서식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`이 아닌 `double`입니다. 현재의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 생성 전체의 범위가 단일 디코딩 값으로 축소됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx new file mode 100644 index 000000000..bd66af33b --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx @@ -0,0 +1,246 @@ +--- +title: "Comfy Router로 FLUX Pro 1.0 Expand 사용하기" +description: "Comfy Router를 통해 bfl/flux-pro-1.0-expand를 호출합니다: endpoint, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "FLUX Pro 1.0 Expand" +translationSourceHash: 251b8f2d +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx +translationBlockHashes: + "_intro": 33c96788 + "Quick start": d6a11a7c + "Schema": dfc6f70d + "Examples": d27504bc +--- +{/* 생성됨 파일. `pnpm code-pages:gen`에 의해 router-schemas/bfl/flux-pro-1.0-expand.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs가 제공하고 Comfy Router를 통해 서비스되는 `bfl/flux-pro-1.0-expand`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `bfl/flux-pro-1.0-expand` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-expand", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-expand", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "extend the plain white background upward", + top: 64, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"extend the plain white background upward\", \"top\": 64}" +``` + + +## 스키마 + +### 입력 + + + 이미지 아래쪽에서 확장할 픽셀 수 + + 범위: `0`부터 `2048`까지 + + + + 이미지 생성 과정의 가이드 강도 + + 범위: `1.5`부터 `100`까지 + + + + 확장하려는 이미지를 나타내는 Base64로 인코딩된 문자열입니다. + + + + 이미지 왼쪽에서 확장할 픽셀 수 + + 범위: `0`부터 `2048`까지 + + + + 생성된 이미지의 출력 형식입니다. 'jpeg' 또는 'png'일 수 있습니다. + + + + 적용하려는 변경 사항에 대한 설명입니다. 이 텍스트는 확장 과정을 안내하며, 확장된 영역에 대한 특징, 스타일 또는 수정 사항을 지정할 수 있습니다. + + + + 프롬프트에 업샘플링을 수행할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트를 자동으로 수정합니다. + + + + 이미지 오른쪽에서 확장할 픽셀 수 + + 범위: `0`부터 `2048`까지 + + + + 입력 및 출력 검열에 대한 허용치 수준입니다. 0에서 6 사이이며, 0이 가장 엄격하고 6이 가장 관대합니다. + + 범위: `0`부터 `6`까지 + + + + 재현성을 위한 선택적 시드 + + + + 이미지 생성 과정의 단계 수 + + 범위: `15`부터 `50`까지 + + + + 이미지 위쪽에서 확장할 픽셀 수 + + 범위: `0`부터 `2048`까지 + + + + 웹훅 서명 검증을 위한 선택적 비밀 값 + + + + 웹훅 알림을 받을 URL + + +Router가 `GET /v2/models/bfl/flux-pro-1.0-expand/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 크레딧 단위로 공급자가 보고한 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고한 선택적 생성 진행률입니다. + + 범위: `0`부터 `1`까지 + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 축소됩니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간이며, Unix 에포크 이후 경과한 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링을 거친 후 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 자산에 대한 서명된 URL입니다. Router는 자산을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간 동안 서명되며 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않을 수 있는 URL을 받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 리프는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다. 비디오의 경우 약 2시간, 이미지의 경우 약 10분입니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 자산을 다운로드하세요. + + 형식: `uri` + + + + 공급자가 제공했든 선택했든 생성에 사용된 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었으며, 서식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간이며, Unix 에포크 이후 경과한 초 단위입니다. `float`가 아니라 `double`입니다. 현재 시점의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 생성 전체의 범위가 단일 디코딩 값으로 축소됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64 +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx new file mode 100644 index 000000000..2a3b73011 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx @@ -0,0 +1,227 @@ +--- +title: "Comfy Router와 함께 FLUX Pro 1.0 Fill 사용하기" +description: "Comfy Router를 통해 bfl/flux-pro-1.0-fill을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "FLUX Pro 1.0 Fill" +translationSourceHash: 4d5d3842 +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx +translationBlockHashes: + "_intro": bc9030aa + "Quick start": 378cfefa + "Schema": 643ee647 + "Examples": f5994135 +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-fill.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs가 제공하고 Comfy Router가 서비스하는 `bfl/flux-pro-1.0-fill`의 API 레퍼런스입니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/flux-pro-1.0-fill` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"plain white background\"}" +``` + + +## 스키마 + +### 입력 + + + 이미지 생성 과정의 가이드 강도입니다. + + 범위: `1.5` ~ `100` + + + + 수정하려는 이미지를 나타내는 Base64 인코딩 문자열입니다. 원한다면 알파 마스크를 포함할 수 있습니다. + + + + 이미지에서 수정하려는 영역에 대한 마스크를 나타내는 Base64 인코딩 문자열입니다. 마스크는 이미지와 동일한 크기여야 하며 검정색과 흰색으로 이루어져야 합니다. 검정색 영역(0%)은 수정하지 않음을 나타내고, 흰색 영역(100%)은 inpainting 대상 영역을 지정합니다. 원본 이미지에 알파 마스크를 제공하는 경우에는 선택 사항입니다. 검증: 엔드포인트는 마스크의 크기가 원본 이미지와 일치하는지 확인합니다. + + + + 생성된 이미지의 출력 형식입니다. 'jpeg' 또는 'png'일 수 있습니다. + + + + 적용하려는 변경 사항에 대한 설명입니다. 이 텍스트는 inpainting 과정을 안내하며, 마스크된 영역에 대한 특징, 스타일 또는 수정 사항을 지정할 수 있게 합니다. + + + + 프롬프트에 업샘플링을 수행할지 여부입니다. 활성화하면 더 창의적인 생성을 위해 프롬프트를 자동으로 수정합니다. + + + + 입력 및 출력 검열에 대한 허용치 수준입니다. 0에서 6 사이이며, 0이 가장 엄격하고 6이 가장 관대합니다. + + 범위: `0` ~ `6` + + + + 재현성을 위한 선택적 시드입니다. + + + + 이미지 생성 과정의 단계 수입니다. + + 범위: `15` ~ `50` + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 수신할 URL입니다. + + +`GET /v2/models/bfl/flux-pro-1.0-fill/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고한 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, null을 허용하는 `result`는 이를 키 존재 여부 확인으로 축소시킵니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 Comfy 청구 금액이 아니라 BFL의 수치입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링이 적용된 이후 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 자산에 대한 서명된 URL입니다. Router는 자산을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간 동안 서명되고 23시간 메모에서 재생되므로, 나중에 이루어지는 폴링에는 남은 시간이 1시간도 안 되는 URL이 반환될 수 있습니다. 재호스팅을 수행할 수 없는 리프는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다. 비디오는 약 2시간, 이미지는 약 10분입니다. 어느 쪽이든 링크는 만료되므로, URL을 저장하기보다 자산을 다운로드하세요. + + 형식: `uri` + + + + 공급자가 제공했든 선택했든, 생성이 사용한 시드입니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었으며, 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`가 아니라 `double`인 이유는, 현재의 에포크 값 근처에서 float32의 간격이 약 128초이므로 전체 생성 구간이 단일 디코딩 값으로 축소되기 때문입니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background" +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx b/ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx new file mode 100644 index 000000000..561a80f42 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx @@ -0,0 +1,208 @@ +--- +title: "Comfy Router로 FLUX Video Upscale 사용하기" +description: "Comfy Router를 통해 HTTP로 FLUX Video Upscale을 사용해 비디오를 업스케일링하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "FLUX Video Upscale" +translationSourceHash: 9eeb8b72 +translationFrom: development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx +translationBlockHashes: + "_intro": 121a04b9 + "Quick start": 041e7993 + "Schema": 4675f835 + "Examples": d1ffa3d6 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +FLUX Video Upscale의 API 레퍼런스입니다. FLUX Video Upscale은 Black Forest Labs의 비디오 업스케일러입니다. 비디오를 보내면 더 높은 해상도의 버전을 돌려받습니다. + +## Quick start {#quick-start} + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `bfl/video-upscale-v1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/video-upscale-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-upscale-v1", + { + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/video-upscale-v1", { + input_video: "https://your-host.example/clip.mp4", + upscale_factor: 2, + creativity: 1, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-upscale-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_video\": \"https://your-host.example/clip.mp4\", \"upscale_factor\": 2, \"creativity\": 1}" +``` + + +## 스키마 + +### 입력 + + + 0은 소스를 정확하게 보존하고 선명하게 만듭니다. 1은 창의적인 디테일 향상을 허용하며, 이 경우 얼굴이나 제품이 엄격하게 보존되지 않습니다. + + Range: `0`부터 `1`까지 + + + + 업스케일할 비디오로, HTTP(S) URL 또는 base64로 인코딩된 MP4입니다. 소스 영상은 최대 20초, 50MB까지입니다. + + + + 클립 내용에 대한 선택적 설명으로, 향상되는 디테일을 조정합니다. 중립적인 업스케일을 원하면 비워 두세요. + + + + 프롬프트 및 출력 프레임 검열에 대한 허용 수준이며, 0이 가장 엄격합니다. + + Range: `0`부터 `4`까지 + + + + 소스 해상도 대비 출력 배율입니다. 출력은 소스의 가로세로 비율을 유지하며 프레임당 약 14.4메가픽셀로 제한되므로, 소스가 매우 큰 경우에는 요청한 배율보다 작게 확대됩니다. + + Range: `1.5`부터 `3`까지 + + Format: `float` + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 받을 URL입니다. + + Format: `uri` + + +Router가 `GET /v2/models/bfl/video-upscale-v1/openapi.json`에서 제공하는 스키마에서 생성되며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 크레딧 단위로 공급자가 보고한 비용이며, 작업이 Ready 상태가 되면 채워집니다. + + Format: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + Range: `0`부터 `1`까지 + + Format: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 축소됩니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + Format: `double` + + + + 공급자가 보고한 생성 재생 시간(초)입니다. + + Format: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + Format: `double` + + + + 프롬프트 업샘플링 이후 생성이 실제로 실행한 프롬프트입니다. + + + + 생성된 결과물에 대한 서명된 URL입니다. Router는 결과물을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 씁니다. 따라서 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시점에 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간밖에 되지 않는 URL을 받을 수 있습니다. 재호스팅을 수행할 수 없는 리프는 대신 BFL 자체의 수명이 짧은 전송 URL을 유지합니다(비디오는 약 2시간, 이미지는 약 10분). 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 결과물을 다운로드하세요. + + Format: `uri` + + + + 생성에 사용된 시드로, 제공되었든 공급자가 선택했든 관계없습니다. BFL이 2^31을 초과하는 시드(예: 2784347701)를 반환하기 때문에 `int64`로 선언되었습니다. 서식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드로 생성됩니다. + + Format: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`이 아니라 `double`입니다. 현재 시점의 에포크 값 근처에서 float32 간격은 약 128초이므로, 생성 전체 구간이 하나의 디코딩된 값으로 뭉개집니다. + + Format: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found. + + +## 예시 + +### 입력 + +```json +{ + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1 +} +``` + +### 출력 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../upscaled.mp4" + } +} +``` + +`result.sample`은 일반적으로 Comfy에서 호스팅하는 서명된 URL이며, 생성 시점부터 최대 24시간 동안 유효합니다. 재실행(replay)의 경우 더 오래된 URL이 반환될 수 있고, 다시 호스팅할 수 없는 자산은 수명이 더 짧은 공급자 URL을 그대로 유지합니다. 링크를 저장하기보다 MP4를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx b/ko/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx new file mode 100644 index 000000000..20e618d40 --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx @@ -0,0 +1,186 @@ +--- +title: "Comfy Router로 Video Edit V1 사용하기" +description: "Comfy Router를 통해 bfl/video-edit-v1을 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Video Edit V1" +translationSourceHash: 708e47c9 +translationFrom: development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx +translationBlockHashes: + "_intro": e7443ea9 + "Quick start": 5747cb6b + "Schema": e992b26e + "Examples": 9b07c268 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/video-edit-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs의 `bfl/video-edit-v1`에 대한 API 레퍼런스이며, Comfy Router에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `bfl/video-edit-v1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bfl/video-edit-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-edit-v1", + { + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/video-edit-v1", { + prompt: "Remove the orange bucket.", + video: "https://example.com/clip.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-edit-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"Remove the orange bucket.\", \"video\": \"https://example.com/clip.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 편집 지시문입니다. 변경할 객체, 배경, 스타일, 화면 텍스트 또는 대사를 지정하며, 지정되지 않은 모든 것은 보존됩니다. + + + + 입력 및 출력 검열에 대한 허용치 수준이며, 0이 가장 엄격합니다. + + 범위: `0` ~ `4` + + + + 편집할 비디오로, HTTP(S) URL 또는 base64로 인코딩된 MP4입니다. 최대 15초 길이의 소스 영상과 50 MiB까지 지원하며, 각 변은 최소 160픽셀이어야 합니다. 720p를 초과하는 소스는 720p로 다운스케일됩니다. + + +Router가 `GET /v2/models/bfl/video-edit-v1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 태스크가 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 태스크 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200` 응답이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락합니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 BFL의 수치이며 Comfy 청구 금액이 아닙니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성에 사용된 프롬프트입니다. + + + + 생성된 에셋에 대한 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 재호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 발급 시 24시간 동안 서명되며 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없는 leaf는 대신 BFL 자체의 수명이 짧은 전달 URL을 유지합니다. 비디오의 경우 약 2시간, 이미지의 경우 약 10분입니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 사용자가 제공했든 공급자가 선택했든, 생성에 사용된 시드입니다. BFL은 2^31을 초과하는 시드(예: 2784347701)를 반환하는데, 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 이를 32비트 필드로 생성하므로 `int64`로 선언되었습니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`가 아닌 `double`입니다. 현재의 에포크 값 근처에서 float32의 간격은 약 128초이므로, 전체 생성 구간이 단일 디코딩 값으로 축소됩니다. + + 형식: `double` + + + + 태스크 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error, Task not found 중 하나입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4" +} +``` + +### 출력 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + diff --git a/ko/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx b/ko/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx new file mode 100644 index 000000000..2dc40656e --- /dev/null +++ b/ko/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx @@ -0,0 +1,211 @@ +--- +title: "Comfy Router로 VTO V1 사용하기" +description: "Comfy Router를 통해 bfl/vto-v1을 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "VTO V1" +translationSourceHash: 39d9d687 +translationFrom: development/comfy-router/models/black-forest-labs/vto-v1/code.mdx +translationBlockHashes: + "_intro": 5449e6da + "Schema": fcb4652a +--- + +{/* GENERATED FILE. `pnpm code-pages:gen`으로 router-schemas/bfl/vto-v1.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Black Forest Labs에서 제공하고 Comfy Router가 서비스하는 `bfl/vto-v1`의 API 레퍼런스입니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/vto-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/vto-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/vto-v1", + { + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/vto-v1", { + garment: "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", + person: "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", + prompt: "TRY-ON: The person of image 1 wearing the garments of image 2.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/vto-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"garment\": \"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\", \"person\": \"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\", \"prompt\": \"TRY-ON: The person of image 1 wearing the garments of image 2.\"}" +``` + + +## 스키마 + +### 입력 + + + 하나 이상의 의상 이미지입니다(내부적으로 input_image_2에 매핑됨). + + + + 가능한 값: `jpeg`, `png`, `webp` + + + + 사람 이미지입니다(내부적으로 input_image에 매핑됨). + + + + VTO 생성용 텍스트 프롬프트입니다. + + + + 입력 및 출력 검열을 위한 허용치 수준입니다. 공개 사용의 경우 0에서 5 사이입니다. + + 범위: `0` ~ `5` + + + + 재현성을 위한 선택적 시드입니다. + + + + 웹훅 서명 검증을 위한 선택적 시크릿입니다. + + + + 웹훅 알림을 받을 URL입니다. + + 형식: `uri` + + +요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서인, Router가 `GET /v2/models/bfl/vto-v1/openapi.json`에서 제공하는 스키마에서 생성되었습니다. + +### 출력 + + + 공급자가 보고한 크레딧 단위 비용으로, 작업이 Ready 상태가 되면 채워집니다. + + 형식: `float` + + + + BFL 작업 식별자입니다. + + + + BFL이 보고하는 선택적 생성 진행률입니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 완료된 생성 결과입니다. 여기서는 null을 허용하지 않습니다. 이 컴포넌트의 `required` 항목은 `200`이 결과를 포함한다는 약속이며, `result`가 null을 허용하면 이는 키 존재 여부 확인으로 전락하게 됩니다. + + + + 공급자가 보고한 생성 비용입니다. 이는 Comfy의 청구가 아니라 BFL의 수치입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 소요 시간(초)입니다. + + 형식: `double` + + + + 공급자가 보고한 생성 완료 시간으로, Unix 에포크 이후 초 단위입니다. `start_time`과 같은 이유로 `double`입니다. + + 형식: `double` + + + + 프롬프트 업샘플링 이후 실제로 생성이 실행한 프롬프트입니다. + + + + 생성된 에셋에 대한 서명된 URL입니다. Router는 에셋을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 호스팅 URL입니다. 이 URL은 발급 시 24시간 동안 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없는 leaf는 대신 BFL 자체의 단기 전송 URL을 유지합니다. 비디오의 경우 약 2시간, 이미지의 경우 약 10분입니다. 어느 쪽이든 링크는 만료되므로, URL을 저장하지 말고 에셋을 다운로드하세요. + + 형식: `uri` + + + + 사용자가 제공했든 공급자가 선택했든, 생성에 사용된 시드입니다. BFL은 2^31을 초과하는 시드(예: 2784347701)를 반환하는데, 형식이 지정되지 않은 `integer`는 많은 SDK 생성기에서 이를 32비트 필드로 생성하므로 `int64`로 선언됩니다. + + 형식: `int64` + + + + 공급자가 보고한 생성 시작 시간으로, Unix 에포크 이후 초 단위입니다. `float`가 아닌 `double`입니다. 현재의 에포크 값 근처에서 float32 간격은 약 128초이므로, 생성 전체의 범위가 단일 디코딩 값으로 축소됩니다. + + 형식: `double` + + + + 작업 상태: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error 또는 Task not found입니다. + + +## Examples + +### Input + +```json +{ + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2." +} +``` + +### Output + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/fibo/code.mdx b/ko/development/comfy-router/models/bria/fibo/code.mdx new file mode 100644 index 000000000..d8f98c081 --- /dev/null +++ b/ko/development/comfy-router/models/bria/fibo/code.mdx @@ -0,0 +1,215 @@ +--- +title: "Comfy Router와 함께 Fibo 사용하기" +description: "Comfy Router를 통해 bria/fibo를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Fibo" +translationSourceHash: 5d85f621 +translationFrom: development/comfy-router/models/bria/fibo/code.mdx +translationBlockHashes: + "_intro": 08ef1a4b + "Schema": 90b7b8de + "Examples": 987e8ba6 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/fibo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Bria에서 제공하는 `bria/fibo`의 API 레퍼런스입니다. + + + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/fibo` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/fibo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/fibo", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/fibo", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/fibo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지가 지시 사항을 얼마나 충실히 따를지 결정합니다. + + 범위: `3` ~ `5` + + 형식: `float` + + + + 편집할 소스 이미지입니다. 공개적으로 접근 가능한 URL 또는 Base64로 인코딩된 값입니다. 허용 형식은 JPEG, JPG, PNG, WEBP입니다. 항목이 정확히 하나만 포함되어야 합니다. + + + + 텍스트 기반 편집 지시 사항입니다(예: "make the sky blue", "add a cat"). instruction 또는 structured_instruction 중 하나는 반드시 제공해야 합니다. + + + + 참이면 지시 사항에 잠재적인 IP 콘텐츠가 있는 경우 경고를 반환합니다. + + + + 선택적 마스크 이미지 URL 또는 Base64로 인코딩된 값입니다. 검정색 영역은 보존되고, 흰색 영역은 편집됩니다. + + + + 사용할 모델의 버전입니다. Comfy Router는 `{model}` 경로 세그먼트에서 이 값을 제공하므로 해당 위치에서는 생략합니다. Bria가 실행하는 값은 `FIBO`이며, v1 라우트에서도 이 필드가 없을 때 이 값이 기본값으로 사용됩니다. 이 쪽에서는 enum으로 제한되지 않습니다. Router는 호출자의 본문이 검증된 이후에 값을 기록합니다. + + + + 편집된 이미지에서 제외할 개념, 스타일 또는 객체를 지정하는 텍스트 프롬프트입니다. + + + + 참이면 지시 사항 검열 실패 시 422를 반환합니다. + + + + 결정적 생성을 위한 시드입니다. 생략하면 무작위 시드가 사용됩니다. + + + + diffusion 단계 수입니다. + + 범위: `20` ~ `50` + + + + JSON 형식의 구조화된 편집 지시 사항을 담은 문자열입니다. 정밀하고 프로그래밍 방식의 제어가 필요할 때 instruction 대신 사용하세요. + + + + 참이면 이미지 또는 마스크 검열 실패 시 422를 반환합니다. + + + + 참이면 시각적 출력 검열 실패 시 422를 반환합니다. + + +Router가 `GET /v2/models/bria/fibo/openapi.json`에서 제공하는 스키마에서 생성된 문서로, 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체(status가 ERROR일 때만 존재) + + + + 오류 코드입니다. + + + + 추가 오류 세부 정보입니다. + + + + 오류 메시지입니다. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체(status가 COMPLETED일 때만 존재) + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 정제된 버전이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 키가 생략된 것이 아니라 null을 담은 채 존재하기 때문에 nullable입니다. bria/image-edit-gen-fill에서 실제로 관찰되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/image-edit-erase/code.mdx b/ko/development/comfy-router/models/bria/image-edit-erase/code.mdx new file mode 100644 index 000000000..ccf3b0ef5 --- /dev/null +++ b/ko/development/comfy-router/models/bria/image-edit-erase/code.mdx @@ -0,0 +1,139 @@ +--- +title: "Comfy Router로 Image Edit Erase 사용하기" +description: "Comfy Router를 통해 bria/image-edit-erase를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Image Edit Erase" +translationSourceHash: 8b73ae29 +translationFrom: development/comfy-router/models/bria/image-edit-erase/code.mdx +translationBlockHashes: + "_intro": b56de2f2 + "Schema": 5c26377c + "Examples": d333bf78 +--- + +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/bria/image-edit-erase.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-erase`의 API 레퍼런스이며, Comfy Router가 Bria에서 제공합니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/image-edit-erase` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-erase` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-erase", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-erase", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-erase \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/image-edit-erase` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-erase` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-erase", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-erase", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-erase \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/ko/development/comfy-router/models/bria/image-edit-expand/code.mdx b/ko/development/comfy-router/models/bria/image-edit-expand/code.mdx new file mode 100644 index 000000000..f2ae957f5 --- /dev/null +++ b/ko/development/comfy-router/models/bria/image-edit-expand/code.mdx @@ -0,0 +1,208 @@ +--- +title: "Comfy Router로 Image Edit Expand 사용하기" +description: "Comfy Router를 통해 bria/image-edit-expand를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Image Edit Expand" +translationSourceHash: 4dcd1799 +translationFrom: development/comfy-router/models/bria/image-edit-expand/code.mdx +translationBlockHashes: + "_intro": 2ca3ddec + "Quick start": 6cd79b35 + "Schema": bb25be53 + "Examples": 522e0b99 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/bria/image-edit-expand.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-expand`에 대한 API 레퍼런스로, Comfy Router가 Bria에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 실행한 것입니다. + +**모델 ID:** `bria/image-edit-expand` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bria/image-edit-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-expand", + { + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-expand", { + aspect_ratio: "3:2", + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"3:2\", \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## 스키마 + +### 입력 + + + 확장된 캔버스의 가로세로 비율입니다. 미리 정의된 비율 문자열("1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9") 또는 0.5에서 3.0 사이의 실수입니다. 이 값을 지정하면 canvas_size, original_image_size, original_image_location은 무시됩니다. + + 범위: `0.5` ~ `3` + + + + 확장된 캔버스의 너비와 높이(픽셀)입니다. 기본값은 [1000, 1000]입니다. 최대 캔버스 면적은 5000x5000 픽셀입니다. + + + + 확장할 이미지입니다. 지원되는 입력 유형은 Base64로 인코딩된 문자열 또는 공개적으로 접근 가능한 이미지 파일을 가리키는 URL입니다. 허용되는 형식은 JPEG, JPG, PNG, WEBP입니다. + + + + 확장 영역에서 제외할 개념, 스타일 또는 객체를 지정하는 텍스트 프롬프트입니다. + + + + 캔버스에서 원본 이미지의 왼쪽 상단 모서리 위치 [x, y]입니다. aspect_ratio를 지정하지 않은 경우 original_image_size와 함께 필수입니다. + + + + 캔버스에 배치되는 원본 이미지의 너비와 높이입니다. aspect_ratio를 지정하지 않은 경우 original_image_location와 함께 필수입니다. + + + + 입력 이미지의 부분적으로 투명한 영역을 출력에 유지할지 여부를 제어합니다. + + + + 확장 영역에서 생성될 콘텐츠를 안내하는 텍스트 프롬프트입니다. 생략하면 자동으로 생성됩니다. + + + + 활성화하면 프롬프트에 콘텐츠 모더레이션을 적용합니다. 프롬프트가 모더레이션을 통과하지 못하면 422를 반환합니다. + + + + 결정론적 생성을 위한 시드입니다. 생략하면 무작위 시드가 사용됩니다. + + + + 거짓(기본값)이면 요청이 비동기적으로 처리됩니다. 참이면 API가 완료될 때까지 연결을 열어 둡니다. + + + + 활성화하면 입력 시각 자료에 콘텐츠 모더레이션을 적용합니다. 이미지가 모더레이션을 통과하지 못하면 422를 반환합니다. + + + + 활성화하면 결과 시각 자료에 콘텐츠 모더레이션을 적용합니다. 출력이 모더레이션을 통과하지 못하면 422를 반환합니다. + + +Router가 `GET /v2/models/bria/image-edit-expand/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체 (status가 ERROR일 때만 존재) + + + + 오류 코드. + + + + 추가 오류 세부 정보. + + + + 오류 메시지. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체 (status가 COMPLETED일 때만 존재) + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 정제된 버전이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 키가 생략된 것이 아니라 null을 담은 채 존재하기 때문에 널 허용이며, bria/image-edit-gen-fill에서 실제로 관측되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx b/ko/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx new file mode 100644 index 000000000..45be9c379 --- /dev/null +++ b/ko/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx @@ -0,0 +1,200 @@ +--- +title: "Comfy Router로 Image Edit Gen Fill 사용하기" +description: "Comfy Router를 통해 bria/image-edit-gen-fill을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Image Edit Gen Fill" +translationSourceHash: fff45aa4 +translationFrom: development/comfy-router/models/bria/image-edit-gen-fill/code.mdx +translationBlockHashes: + "_intro": b36f2810 + "Schema": 6d9d5342 + "Examples": 1d258985 +--- + +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-gen-fill.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Bria에서 제공하고 Comfy Router가 서비스하는 `bria/image-edit-gen-fill`의 API 레퍼런스입니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/image-edit-gen-fill` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-gen-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-gen-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-gen-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "a small green leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-gen-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"a small green leaf\"}" +``` + + +## Schema + +### Input + + + 편집할 이미지입니다. 지원되는 입력 유형은 Base64로 인코딩된 문자열 또는 공개적으로 접근 가능한 이미지 파일을 가리키는 URL입니다. 허용되는 형식은 JPEG, JPG, PNG, WEBP입니다. + + + + 채울 영역을 정의하는 마스크입니다. Base64로 인코딩된 문자열 또는 공개적으로 접근 가능한 이미지 파일을 가리키는 URL입니다. 흰색 픽셀(255)은 생성 대상 영역을 표시하고, 검정색 픽셀(0)은 그대로 유지됩니다. + + + + 생성된 영역에서 제외할 개념, 스타일 또는 객체를 지정하는 텍스트 프롬프트입니다. + + + + 입력 이미지의 부분적으로 투명한 영역을 출력에서 유지할지 여부를 제어합니다. + + + + 마스크된 영역 안에 생성할 내용에 대한 텍스트 설명입니다. + + + + 활성화하면 프롬프트에 콘텐츠 검열을 적용합니다. 프롬프트가 검열을 통과하지 못하면 422를 반환합니다. + + + + 참(기본값)이면 최적의 생성 결과를 위해 프롬프트가 자동으로 조정됩니다. + + + + 결정론적 생성을 위한 시드입니다. 생략하면 임의의 시드가 사용됩니다. + + + + 거짓(기본값)이면 요청이 비동기적으로 처리됩니다. 참이면 API가 완료될 때까지 연결을 열어 둡니다. + + + + 활성화하면 입력 시각 자료에 콘텐츠 검열을 적용합니다. 이미지가 검열을 통과하지 못하면 422를 반환합니다. + + + + 활성화하면 결과 시각 자료에 콘텐츠 검열을 적용합니다. 출력이 검열을 통과하지 못하면 422를 반환합니다. + + +Router가 `GET /v2/models/bria/image-edit-gen-fill/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 Router가 호출을 검증하는 기준이 되는 동일한 문서입니다. + +### Output + + + 오류 객체 (status가 ERROR일 때만 존재) + + + + 오류 코드. + + + + 추가 오류 세부 정보. + + + + 오류 메시지. + + + + 요청의 고유 식별자. + + + + 결과 객체 (status가 COMPLETED일 때만 존재) + + + + 생성/편집된 이미지의 URL. + + + + 원본 프롬프트. + + + + 정제된 버전의 프롬프트이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 키가 생략된 것이 아니라 null을 담은 채 PRESENT이기 때문에 Nullable입니다. bria/image-edit-gen-fill에서 실제로 관찰되었습니다. + + + + 생성에 사용된 시드. + + + + 상세한 JSON 구조화 프롬프트. + + + + 생성된 비디오의 URL. + + + + 요청의 현재 상태. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/ko/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx b/ko/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx new file mode 100644 index 000000000..8d57198c6 --- /dev/null +++ b/ko/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Image Edit Increase Resolution 사용하기" +description: "Comfy Router를 통해 bria/image-edit-increase-resolution을 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Image Edit Increase Resolution" +translationSourceHash: 3b8485d3 +translationFrom: development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx +translationBlockHashes: + "_intro": c9ce8ff8 + "Quick start": 3ac2d450 + "Schema": 812f7799 + "Examples": af129535 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-increase-resolution.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-increase-resolution`의 API 레퍼런스입니다. Comfy Router가 Bria에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `bria/image-edit-increase-resolution` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bria/image-edit-increase-resolution` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-increase-resolution", + { + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-increase-resolution", { + desired_increase: 2, + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-increase-resolution \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"desired_increase\": 2, \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## 스키마 + +### 입력 + + + 적용할 해상도 배수입니다. 지원되는 값은 2와 4입니다. 최대 출력 해상도는 8192x8192입니다. + + + + 업스케일할 이미지입니다. 지원되는 입력 유형은 Base64로 인코딩된 문자열 또는 공개적으로 접근 가능한 이미지 파일을 가리키는 URL입니다. 허용되는 형식은 JPEG, JPG, PNG, WEBP입니다. + + + + 입력 이미지의 부분적으로 투명한 영역이 출력에서 유지되는지 여부를 제어합니다. + + + + 거짓(기본값)이면 요청이 비동기적으로 처리됩니다. 참이면 API가 완료될 때까지 연결을 열린 상태로 유지합니다. + + + + 활성화하면 입력 시각 자료에 콘텐츠 검열을 적용합니다. 이미지가 검열을 통과하지 못하면 422를 반환합니다. + + + + 활성화하면 결과 시각 자료에 콘텐츠 검열을 적용합니다. 출력이 검열을 통과하지 못하면 422를 반환합니다. + + +Router가 `GET /v2/models/bria/image-edit-increase-resolution/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체 (상태가 ERROR일 때만 존재) + + + + 오류 코드. + + + + 추가 오류 세부 정보. + + + + 오류 메시지. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체 (상태가 COMPLETED일 때만 존재) + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트. + + + + 프롬프트의 개선된 버전이며, Bria가 개선하지 않은 COMPLETED 생성에서는 null입니다. 이 키는 생략되지 않고 null을 담은 채 존재하기 때문에 nullable입니다. bria/image-edit-gen-fill에서 실제로 관찰되었습니다. + + + + 생성에 사용된 시드. + + + + 상세한 JSON 구조화 프롬프트. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-increase-resolution/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/image-edit-remove-background/code.mdx b/ko/development/comfy-router/models/bria/image-edit-remove-background/code.mdx new file mode 100644 index 000000000..243dcb2eb --- /dev/null +++ b/ko/development/comfy-router/models/bria/image-edit-remove-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router로 Image Edit Remove Background 사용하기" +description: "Comfy Router를 통해 bria/image-edit-remove-background를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Image Edit Remove Background" +translationSourceHash: da218b61 +translationFrom: development/comfy-router/models/bria/image-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": f6354a22 + "Quick start": de1d94f2 + "Schema": 676248d9 + "Examples": acf012fe +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-remove-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Bria에서 제공하고 Comfy Router가 서비스하는 `bria/image-edit-remove-background`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `bria/image-edit-remove-background` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bria/image-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-remove-background", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-remove-background", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## 스키마 + +### 입력 + + + 배경을 제거할 이미지입니다. 지원되는 입력 유형은 Base64로 인코딩된 문자열 또는 공개적으로 접근 가능한 이미지 파일을 가리키는 URL입니다. 허용되는 형식은 JPEG, JPG, PNG, WEBP입니다. + + + + 배경 제거 이후 출력에서 입력 이미지의 부분적으로 투명한 영역을 유지할지 여부를 제어합니다. + + + + 거짓(기본값)이면 요청이 비동기적으로 처리됩니다. 참이면 API가 완료될 때까지 연결을 열린 상태로 유지합니다. + + + + 활성화하면 입력 시각 자료에 콘텐츠 검열을 적용합니다. 이미지가 검열을 통과하지 못하면 422를 반환합니다. + + + + 활성화하면 결과 시각 자료에 콘텐츠 검열을 적용합니다. 출력이 검열을 통과하지 못하면 422를 반환합니다. + + +Router가 `GET /v2/models/bria/image-edit-remove-background/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체입니다(status가 ERROR일 때만 존재). + + + + 오류 코드입니다. + + + + 추가 오류 세부 정보입니다. + + + + 오류 메시지입니다. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체입니다(status가 COMPLETED일 때만 존재). + + + + 생성되거나 편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 개선된 버전이며, Bria가 개선하지 않은 COMPLETED 생성에서는 null입니다. 키가 생략된 것이 아니라 null을 담은 채 존재하기 때문에 Nullable입니다. bria/image-edit-gen-fill에서 실제로 관측되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/structured-instruction/code.mdx b/ko/development/comfy-router/models/bria/structured-instruction/code.mdx new file mode 100644 index 000000000..25f139798 --- /dev/null +++ b/ko/development/comfy-router/models/bria/structured-instruction/code.mdx @@ -0,0 +1,182 @@ +--- +title: "Comfy Router로 Structured Instruction 사용하기" +description: "Comfy Router를 통해 bria/structured-instruction을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Structured Instruction" +translationSourceHash: c2c5fb7a +translationFrom: development/comfy-router/models/bria/structured-instruction/code.mdx +translationBlockHashes: + "_intro": 89417472 + "Schema": ffdaeadf + "Examples": a6f75e62 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/bria/structured-instruction.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Bria가 제공하고 Comfy Router가 서비스하는 `bria/structured-instruction`에 대한 API 레퍼런스입니다. + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/structured-instruction` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/structured-instruction` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/structured-instruction", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/structured-instruction", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/structured-instruction \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## 스키마 + +### 입력 + + + 편집할 소스 이미지입니다. 공개적으로 접근 가능한 URL 또는 Base64로 인코딩된 값입니다. 정확히 하나의 항목만 포함해야 합니다. + + + + 필수입니다. 텍스트 기반 편집 지시문입니다(예: "하늘을 파란색으로 만들어줘", "고양이를 추가해줘"). + + + + 참이면 지시문에 잠재적인 IP 콘텐츠가 포함되어 있을 경우 경고를 반환합니다. + + + + 선택 사항인 마스크 이미지 URL 또는 Base64로 인코딩된 값입니다. 검정색 영역은 보존되고, 흰색 영역은 편집됩니다. + + + + 참이면 지시문 검열에 실패할 경우 422를 반환합니다. + + + + 결정론적 생성을 위한 시드입니다. 생략하면 무작위 시드가 사용됩니다. + + + + 참이면 이미지 또는 마스크 검열에 실패할 경우 422를 반환합니다. + + +Router가 `GET /v2/models/bria/structured-instruction/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체입니다(status가 ERROR일 때만 존재합니다). + + + + 오류 코드입니다. + + + + 추가 오류 세부 정보입니다. + + + + 오류 메시지입니다. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체입니다(status가 COMPLETED일 때만 존재합니다). + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 정제된 버전이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 이 키가 생략되는 대신 null을 담은 채로 존재하기 때문에 nullable입니다. bria/image-edit-gen-fill에서 실제로 관찰되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "structured_prompt": "{\"edit\":\"replace the background\",\"background\":\"light blue\"}" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/video-edit-green-screen/code.mdx b/ko/development/comfy-router/models/bria/video-edit-green-screen/code.mdx new file mode 100644 index 000000000..e9a5dff43 --- /dev/null +++ b/ko/development/comfy-router/models/bria/video-edit-green-screen/code.mdx @@ -0,0 +1,173 @@ +--- +title: "Comfy Router로 Video Edit Green Screen 사용하기" +description: "Comfy Router를 통해 bria/video-edit-green-screen을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Video Edit Green Screen" +translationSourceHash: a0c7be90 +translationFrom: development/comfy-router/models/bria/video-edit-green-screen/code.mdx +translationBlockHashes: + "_intro": b4683e93 + "Quick start": c3a2d6fa + "Schema": 5008e45d + "Examples": 13c57b2c +--- +{/* GENERATED FILE. Generated from router-schemas/bria/video-edit-green-screen.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-green-screen`에 대한 API 레퍼런스입니다. Bria에서 Comfy Router를 통해 제공됩니다. + +## Quick start {#quick-start} + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `bria/video-edit-green-screen` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/video-edit-green-screen` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-green-screen", + { + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-green-screen", { + green_shade: "broadcast_green", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-green-screen \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"green_shade\": \"broadcast_green\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 크로마 키잉을 위해 전경 뒤에 적용되는 단색 배경 색상입니다. 기본값은 broadcast_green입니다. + + 가능한 값: `broadcast_green`, `chroma_green`, `blue_screen` + + + + 출력 컨테이너 및 코덱 프리셋입니다. + + 가능한 값: `mp4_h264`, `mp4_h265`, `webm_vp9`, `mov_h265`, `mov_proresks`, `mkv_h264`, `mkv_h265`, `mkv_vp9`, `gif` + + + + 입력 비디오의 오디오를 유지할지 여부입니다. + + + + 입력 비디오의 공개적으로 접근 가능한 URL입니다. 입력 해상도는 최대 16000x16000(16K)까지 지원됩니다. 최대 재생 시간 60초입니다. + + +Router가 `GET /v2/models/bria/video-edit-green-screen/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체입니다(status가 ERROR일 때만 존재). + + + + 오류 코드입니다. + + + + 추가 오류 세부 정보입니다. + + + + 오류 메시지입니다. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체입니다(status가 COMPLETED일 때만 존재). + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 개선된 버전이며, Bria가 개선하지 않은 COMPLETED 생성에서는 null입니다. 키가 생략된 것이 아니라 null을 담은 채 존재하기 때문에 Nullable입니다. bria/image-edit-gen-fill에서 실제로 확인되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-green-screen/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/bria/video-edit-remove-background/code.mdx b/ko/development/comfy-router/models/bria/video-edit-remove-background/code.mdx new file mode 100644 index 000000000..fdcd30873 --- /dev/null +++ b/ko/development/comfy-router/models/bria/video-edit-remove-background/code.mdx @@ -0,0 +1,175 @@ +--- +title: "Comfy Router로 Video Edit Remove Background 사용하기" +description: "Comfy Router를 통해 bria/video-edit-remove-background를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Video Edit Remove Background" +translationSourceHash: 1db0833a +translationFrom: development/comfy-router/models/bria/video-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": 6b77260c + "Quick start": 05321a14 + "Schema": c0c1ab12 + "Examples": 83ff7312 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/bria/video-edit-remove-background.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-remove-background`에 대한 API 레퍼런스로, Bria의 모델을 Comfy Router가 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `bria/video-edit-remove-background` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bria/video-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-remove-background", + { + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-remove-background", { + background_color: "Transparent", + output_container_and_codec: "webm_vp9", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_color\": \"Transparent\", \"output_container_and_codec\": \"webm_vp9\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 출력 비디오의 배경색입니다. Transparent인 경우 출력 코덱이 알파를 지원해야 합니다. + + 가능한 값: `Transparent`, `Black`, `White`, `Gray`, `Red`, `Green`, `Blue`, `Yellow`, `Cyan`, `Magenta`, `Orange` + + + + 출력 컨테이너 및 코덱 프리셋입니다. + + 가능한 값: `mp4_h264`, `mp4_h265`, `webm_vp9`, `mov_h265`, `mov_proresks`, `mkv_h264`, `mkv_h265`, `mkv_vp9`, `gif` + + + + 입력 비디오의 오디오를 보존할지 여부입니다. + + + + 입력 비디오의 공개적으로 접근 가능한 URL입니다. 입력 해상도는 최대 16000x16000(16K)까지 지원합니다. 최대 재생 시간 60초입니다. + + +Router가 `GET /v2/models/bria/video-edit-remove-background/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체입니다(status가 ERROR일 때만 존재). + + + + 오류 코드입니다. + + + + 추가 오류 세부 정보입니다. + + + + 오류 메시지입니다. + + + + 요청의 고유 식별자입니다. + + + + 결과 객체입니다(status가 COMPLETED일 때만 존재). + + + + 생성/편집된 이미지의 URL입니다. + + + + 원본 프롬프트입니다. + + + + 프롬프트의 정제된 버전이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 이 키는 생략되지 않고 null을 담은 채로 존재하기 때문에 Nullable입니다. bria/image-edit-gen-fill에서 실제로 관찰되었습니다. + + + + 생성에 사용된 시드입니다. + + + + 상세한 JSON 구조화 프롬프트입니다. + + + + 생성된 비디오의 URL입니다. + + + + 요청의 현재 상태입니다. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-remove-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + diff --git a/ko/development/comfy-router/models/bria/video-edit-replace-background/code.mdx b/ko/development/comfy-router/models/bria/video-edit-replace-background/code.mdx new file mode 100644 index 000000000..0e9f228c3 --- /dev/null +++ b/ko/development/comfy-router/models/bria/video-edit-replace-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router로 Video Edit Replace Background 사용하기" +description: "Comfy Router를 통해 bria/video-edit-replace-background를 호출하는 방법과 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Video Edit Replace Background" +translationSourceHash: d12969c8 +translationFrom: development/comfy-router/models/bria/video-edit-replace-background/code.mdx +translationBlockHashes: + "_intro": 5955c067 + "Quick start": e405be35 + "Schema": 12e66309 + "Examples": 18e1a850 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/video-edit-replace-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-replace-background`에 대한 API 레퍼런스로, Bria에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `bria/video-edit-replace-background` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/bria/video-edit-replace-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-replace-background", + { + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-replace-background", { + background_url: "https://example.com/background.mp4", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-replace-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_url\": \"https://example.com/background.mp4\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 전경 뒤에 합성할 배경 애셋(이미지 또는 비디오)의 공개적으로 접근할 수 있는 URL입니다. 전경의 가로세로 비율과 일치해야 합니다. + + + + 출력 컨테이너 및 코덱 프리셋입니다. + + 가능한 값: `mp4_h264`, `mp4_h265`, `webm_vp9`, `mov_h265`, `mov_proresks`, `mkv_h264`, `mkv_h265`, `mkv_vp9`, `gif` + + + + 입력(전경) 비디오의 오디오를 유지할지 여부입니다. + + + + 입력(전경) 비디오의 공개적으로 접근할 수 있는 URL입니다. 입력 해상도는 최대 16000x16000(16K)까지 지원합니다. 최대 재생 시간 60초. + + +Router가 `GET /v2/models/bria/video-edit-replace-background/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 객체 (status가 ERROR일 때만 존재) + + + + 오류 코드. + + + + 추가 오류 세부 정보. + + + + 오류 메시지. + + + + 요청의 고유 식별자. + + + + 결과 객체 (status가 COMPLETED일 때만 존재) + + + + 생성/편집된 이미지의 URL. + + + + 원본 프롬프트. + + + + 프롬프트의 정제된 버전이며, Bria가 정제하지 않은 COMPLETED 생성에서는 null입니다. 이 키는 생략되는 것이 아니라 null을 담은 채 PRESENT이므로 nullable입니다. bria/image-edit-gen-fill에서 실제로 관측되었습니다. + + + + 생성에 사용된 시드. + + + + 상세한 JSON 구조화 프롬프트. + + + + 생성된 비디오의 URL. + + + + 요청의 현재 상태. + + 가능한 값: `IN_PROGRESS`, `COMPLETED`, `ERROR`, `UNKNOWN` + + +## 예시 + +### 입력 + +```json +{ + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4" +} +``` + +### 출력 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-replace-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx new file mode 100644 index 000000000..d576ffa1a --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Dreamina Seedance 2.0 260128 사용하기" +description: "Comfy Router를 통해 byteplus/dreamina-seedance-2-0-260128을 호출합니다. endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Dreamina Seedance 2.0 260128" +translationSourceHash: 6be1e5f1 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx +translationBlockHashes: + "_intro": 9fd49814 + "Quick start": 6f5f6b3e + "Schema": d7b1deb9 + "Examples": 6e09b6c0 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-0-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-260128`에 대한 API 레퍼런스이며, Comfy Router가 BytePlus에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `byteplus/dreamina-seedance-2-0-260128` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL (wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠 (type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근 가능한지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast 전용). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast 전용). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트 (필수): 중국어 및 영어 문자를 사용하여 생성할 비디오를 설명합니다. + +파라미터 (선택): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1에서 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예시: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL (mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초). Seedance 2.5: [4,30] 또는 -1 (자동. 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1 (자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초). 기본값 172800 (48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 화면과 동기화된 오디오가 포함되는지 여부. +true: 모델이 동기화된 오디오가 있는 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID. 지원 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접적인 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문에 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용. 출력 비디오의 컨테이너 형식. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p 및 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부.참: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 참으로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임이 다음 비디오 작업의 첫 프레임으로 사용되어 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +거짓: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` 부터 `4294967295` 까지 + + + + 처리를 위한 서비스 등급입니다. Seedance 2.5, 2.0 & 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/dreamina-seedance-2-0-260128/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지로 다시 호스팅되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. Nullable - BytePlus는 작업 후 24시간이 지나면 URL을 지우므로, 그 이후에 폴링한 succeeded 문서에는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임 다운로드 URL로, 요청에서 `return_last_frame`을 설정했을 때 반환됩니다. 이 URL로 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하지만, Router는 전달받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별하고, `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해 반환할 때 사용됩니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많으며(최상위 `output_format` 필드 참고), Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이를 일관되게 다루지 않기 때문에 정수가 아닌 숫자로 선언되었습니다. 비디오 작업에서는 정수 초를 반환하는 것이 관찰되었고, 인접한 다른 BytePlus 인터페이스에서는 소수 재생 시간을 보고하므로, 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드이며, 성공한 비디오 작업에서 반환되어 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에서 사용한 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로서 최상위 레벨에 반환됩니다. Seedance 비디오 작업 조회가 반환하는 위치가 바로 여기입니다. BytePlus 자체 필드이며, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도입니다. 예: `1080p`. BytePlus 자체 필드이며, 성공한 비디오 작업에서 반환되어 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드이며, 성공한 비디오 작업에서 반환되어 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량입니다. + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx new file mode 100644 index 000000000..f5fb981e6 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Dreamina Seedance 2.0 Fast 260128 사용하기" +description: "Comfy Router를 통해 byteplus/dreamina-seedance-2-0-fast-260128을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Dreamina Seedance 2.0 Fast 260128" +translationSourceHash: 9cf630ff +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx +translationBlockHashes: + "_intro": 7c02160b + "Quick start": 16e12af8 + "Schema": 9b41db67 + "Examples": 952ee859 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-0-fast-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-fast-260128`에 대한 API 레퍼런스로, BytePlus에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `byteplus/dreamina-seedance-2-0-fast-260128` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-fast-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-fast-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소입니다. + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠입니다. + + + + 입력 오디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID입니다. +오디오 URL: 오디오의 공개 URL입니다 (wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성을 위한 이미지 콘텐츠입니다 (type이 "image_url"인 경우). +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64로 인코딩된 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치입니다. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast만). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast만). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트 (필수): 중국어 및 영어 문자를 사용하여 생성할 비디오에 대한 설명입니다. + +파라미터 (선택 사항): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형입니다. + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID입니다. +비디오 URL: 비디오의 공개 URL입니다 (mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초)입니다. Seedance 2.5: [4,30] 또는 -1 (자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1 (자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초)입니다. 기본값 172800 (48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 시각 요소와 동기화된 오디오가 포함되는지 여부입니다. +true: 모델이 동기화된 오디오가 포함된 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID입니다. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 값을 생략한 경우 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문에 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하며 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율입니다. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도입니다. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p 및 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.true: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 true로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임을 다음 비디오 작업의 첫 프레임으로 사용하여 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +false: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리에 사용할 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 사용 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/dreamina-seedance-2-0-fast-260128/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력입니다. 출력 비디오의 다운로드 URL과, BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지에 다시 호스팅되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. null일 수 있습니다: BytePlus는 작업 후 24시간이 지나면 URL을 지우므로, 그 이후에 폴링한 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL에서 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하고, Router는 제공받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type 또는 콘텐츠 스니핑을 통해 형식을 지정합니다. `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL이 반환될 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + BytePlus가 `content` 안에 중첩해 반환할 때의 생성된 비디오의 컨테이너 형식(mp4 또는 mov)입니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많습니다. 최상위 `output_format` 필드를 참조하세요. Router는 둘 중 존재하는 것을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL이 반환될 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이 값에 대해 일관성이 없기 때문에 정수가 아닌 숫자로 선언됩니다. 비디오 작업은 정수 초를 반환한 것으로 관찰되었고, 이와 유사한 다른 BytePlus 인터페이스는 소수 재생 시간을 보고합니다. 따라서 클라이언트는 값이 정수라고 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로 최상위에 반환됩니다. Seedance 비디오 작업 조회가 반환하는 위치입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도(예: `1080p`)입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-fast-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx new file mode 100644 index 000000000..2335b9228 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router와 함께 Dreamina Seedance 2.0 Mini 사용하기" +description: "Comfy Router를 통해 byteplus/dreamina-seedance-2-0-mini를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Dreamina Seedance 2.0 Mini" +translationSourceHash: bfc609db +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx +translationBlockHashes: + "_intro": cad8bfca + "Quick start": 8635ce8a + "Schema": 4588f61a + "Examples": 8337a2e0 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-0-mini.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-mini`의 API 레퍼런스이며, BytePlus에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 실행한 것입니다. + +**모델 ID:** `byteplus/dreamina-seedance-2-0-mini` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-mini", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-mini", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID입니다. +오디오 URL: 오디오의 공개 URL(wav, mp3)입니다. +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠입니다(type이 "image_url"인 경우). +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64로 인코딩된 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치입니다. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video(Seedance 2.5, 2.0 및 2.0 fast 전용). +오디오의 경우: reference_audio(Seedance 2.5, 2.0 및 2.0 fast 전용). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트(필수): 중국어와 영어 문자를 사용해 생성할 비디오를 설명합니다. + +파라미터(선택 사항): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID입니다. +비디오 URL: 비디오의 공개 URL(mp4, mov)입니다. +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초)입니다. Seedance 2.5: [4,30] 또는 -1(자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1(자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초)입니다. 기본값 172800(48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast, 1.5 pro에서 지원됩니다. 생성된 비디오에 시각 요소와 동기화된 오디오가 포함되는지 여부입니다. +true: 모델이 동기화된 오디오가 포함된 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID입니다. 지원 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini, dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 포함되지 않은 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율입니다. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도입니다. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.true: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 true로 설정하면 동영상 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임이 다음 비디오 작업의 첫 프레임으로 사용되어 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +false: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리를 위한 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +`GET /v2/models/byteplus/dreamina-seedance-2-0-mini/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지로 재호스팅되며, 여기의 다른 모든 필드는 BytePlus의 것입니다. null일 수 있습니다. BytePlus는 작업 후 24시간이 지나면 URL을 지우므로, 그 이후에 폴링한 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 요청에서 `return_last_frame`을 설정한 경우 반환되는, 생성된 비디오 마지막 프레임의 다운로드 URL입니다. 이 URL로 이미지 형식을 추론하지 마세요. BytePlus는 요청 측면에서 마지막 프레임을 PNG로 문서화하지만, Router는 전달받은 바이트를 그대로 재호스팅하고 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별하며, `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지로 재호스팅하고 이 필드를 다시 씁니다. 따라서 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL이며, 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로 이후 폴링에서는 남은 시간이 1시간도 되지 않는 URL이 반환될 수 있습니다. 재호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + BytePlus가 `content` 안에 중첩해 반환하는 경우의 생성된 비디오의 컨테이너 형식(mp4 또는 mov)입니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많습니다. 최상위 `output_format` 필드를 참고하세요. Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지로 재호스팅하고 이 필드를 다시 씁니다. 따라서 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL이며, 발급 시점에 24시간으로 서명되고 23시간짜리 메모에서 재생되므로 이후 폴링에서는 남은 시간이 1시간도 되지 않는 URL이 반환될 수 있습니다. 재호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이를 일관되게 처리하지 않기 때문에 정수가 아닌 숫자로 선언됩니다. 비디오 작업에서는 정수 초를 반환한 사례가 관찰되었고, 인접한 BytePlus 표면에서는 소수 재생 시간을 보고하므로 클라이언트는 값이 정수라고 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로서 최상위에 반환됩니다. Seedance 비디오 작업 조회가 반환하는 위치가 바로 여기입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도입니다. 예를 들어 `1080p`입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 해당 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않으며 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-mini-260615", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx new file mode 100644 index 000000000..ab9eeb421 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx @@ -0,0 +1,344 @@ +--- +title: "Comfy Router에서 Dreamina Seedance 2.5 260628 사용하기" +description: "Comfy Router를 통해 byteplus/dreamina-seedance-2-5-260628을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Dreamina Seedance 2.5 260628" +translationSourceHash: 8b6f07c0 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx +translationBlockHashes: + "_intro": a9ab3ace + "Quick start": e9d4aa36 + "Schema": d42dc4e9 + "Examples": 718a5264 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-5-260628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-5-260628`의 API 레퍼런스이며, Comfy Router가 BytePlus에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `byteplus/dreamina-seedance-2-5-260628` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-5-260628", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-5-260628", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL(wav, mp3). +Base64: data:audio/\;base64,\ 형식 +Asset ID: asset://\ 형식 + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠(type가 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64 인코딩 콘텐츠: data:image/\;base64,\ 형식이어야 합니다. +Asset ID: asset://\ 형식 + + + + 콘텐츠 항목의 역할/위치. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video(Seedance 2.5, 2.0 및 2.0 fast 전용). +오디오의 경우: reference_audio(Seedance 2.5, 2.0 및 2.0 fast 전용). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트(필수): 중국어 및 영어 문자를 사용한 생성할 비디오에 대한 설명. + +파라미터(선택): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예시: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL(mp4, mov). +Asset ID: asset://\ 형식 + + + + 비디오 재생 시간(초). Seedance 2.5: [4,30] 또는 -1(자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1(자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초). 기본값 172800(48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 화면과 동기화된 오디오가 포함되는지 여부. +true: 모델이 동기화된 오디오가 포함된 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값을 거부하며, 값을 생략한 경우에도 400으로 거부합니다. 이 값이 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문이며, 따라서 Router 호출자는 이 값을 생략합니다. + + + + Seedance 2.5 전용. 출력 비디오의 컨테이너 형식. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부.참: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 참으로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임을 다음 비디오 작업의 첫 프레임으로 사용하여 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +거짓: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리를 위한 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/dreamina-seedance-2-5-260628/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지에 다시 호스팅되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. null일 수 있습니다. BytePlus는 작업 후 24시간이 지나면 URL을 지우므로, 그 이후에 폴링한 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL에서 이미지 형식을 추론하지 마십시오. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하고, Router는 제공받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 지정합니다. `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 돌려받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하십시오. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해 반환할 때 존재합니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많습니다. 최상위 `output_format` 필드를 참고하십시오. Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 되지 않는 URL을 돌려받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드 횟수를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하십시오. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이 값에 일관성이 없기 때문에 정수가 아닌 숫자로 선언되었습니다. 비디오 작업은 정수 초를 반환하는 것이 관찰되었고, 인접한 BytePlus 표면은 소수 재생 시간을 보고합니다. 따라서 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로서 최상위에 반환됩니다. Seedance 비디오 작업 쿼리가 이를 반환하는 위치입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도입니다. 예를 들어 `1080p`입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-5-260628", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/ko/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx b/ko/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx new file mode 100644 index 000000000..2eda3d332 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx @@ -0,0 +1,460 @@ +--- +title: "Comfy Router에서 Seed 2.0 Lite 260228 사용하기" +description: "Comfy Router를 통해 byteplus/seed-2-0-lite-260228을 호출하는 방법: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seed 2.0 Lite 260228" +translationSourceHash: b3883790 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx +translationBlockHashes: + "_intro": 1571ac12 + "Quick start": dd5d6146 + "Schema": c5f06bce + "Examples": 84abd59f +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-lite-260228.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-2-0-lite-260228`에 대한 API 레퍼런스로, BytePlus에서 제공하고 Comfy Router가 서빙합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `byteplus/seed-2-0-lite-260228` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-lite-260228", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-lite-260228", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## 스키마 + +### 입력 + + + 컨텍스트 캐시 구성입니다. + + + + 참이면 공용 프리픽스 캐시만 생성하며, 모델은 응답하지 않습니다. + + + + 가능한 값: `enabled`, `disabled` + + + + 컨텍스트 창을 관리 가능한 크기로 유지하기 위해 적용되는 컨텍스트 관리 전략(`clear_thinking`, `clear_tool_uses`)입니다. + + + + `type`으로 구분되는 단일 컨텍스트 편집 전략입니다. + + + + 저장된 응답과 캐시가 만료되는 Unix 타임스탬프(초, UTC)입니다. 범위: (creation_time, creation_time + 604800]. 기본값: creation_time + 259200(3일). + + + + 추가로 포함할 출력 필드입니다. 현재 지원: `reasoning.encrypted_content`(수동 멀티턴 재사용을 위한 암호화+압축 reasoning). + + + + 모델에 제공되는 텍스트 콘텐츠 또는 입력 항목 목록입니다. + + + + 첫 번째 지시사항으로 앞에 추가되는 시스템/개발자 메시지입니다. `caching`과 호환되지 않습니다. `caching.type`이 `enabled`인 상태에서 `instructions`를 설정하면 오류가 반환됩니다. + + + + 최대 출력 토큰 수(응답 + 사고 연쇄)입니다. + + + + 범위: `1` ~ `10` + + + + 모델 ID 또는 엔드포인트 ID입니다. 모델 목록은 https://docs.byteplus.com/en/docs/ModelArk/1330310 을, 엔드포인트 ID는 https://docs.byteplus.com/en/docs/ModelArk/1099522 를 참고하세요. POST /proxy/byteplus/api/v3/responses 에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 자체 허용 목록 밖의 값은 거부하며, 값을 생략한 경우에도 400으로 거부합니다. Comfy Router 입력 스키마의 `required` 목록에는 포함되지 않는데, Router가 /v2/models/byteplus/\{model} 의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 멀티턴 대화를 이어가기 위해 사용하는 이전 응답의 ID입니다. 실패를 피하려면 요청 사이에 약 100ms를 두세요. + + + + 깊은 사고의 작업량을 제한합니다. + + + + `minimal`은 사고를 완전히 비활성화합니다. `thinking.type = +disabled`인 경우 `minimal`만 허용됩니다. + + 가능한 값: `minimal`, `low`, `medium`, `high` + + + + 참이면 응답이 저장되고 멀티턴 사용을 위해 ID로 조회할 수 있습니다. + + + + 범위: `0` ~ `2` + + 형식: `float` + + + + 출력 형식 구성입니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식 JSON 객체를 반환하며, `json_schema`는 호출자가 제공한 JSON Schema로 출력을 제한합니다. + + + + 깊은 사고 모드를 제어합니다. + + + + `enabled`: 응답하기 전에 항상 추론합니다. +`disabled`: 추가 추론 없이 응답합니다. +`auto`: 모델이 질의별로 결정합니다. + + 가능한 값: `enabled`, `disabled`, `auto` + + + + 도구 선택 모드입니다. 이 필드는 seed-1-6 모델만 지원합니다. + + + + 모델이 호출할 수 있는 도구입니다. 현재는 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 가능한 값: `function` + + + + 범위: `0` ~ `1` + + 형식: `float` + + +Router가 `GET /v2/models/byteplus/seed-2-0-lite-260228/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + 가능한 값: `enabled`, `disabled` + + + + 이 응답 중 실제로 적용된 컨텍스트 관리 전략입니다. 전략을 구성하는 요청 측 `BytePlusResponseContextManagement`와 달리, 이 필드는 서버가 호출한 전략과 정리된 항목의 개수를 그대로 반영합니다. + + + + `type`으로 구분되는 적용된 컨텍스트 편집 하나입니다. + + + + 응답이 생성된 Unix 타임스탬프(초)입니다. + + + + 오류 세부 정보입니다. 응답이 성공하면 null입니다. + + + + + + + + + + + + 저장된 응답이 만료되는 Unix 타임스탬프(초)입니다. + + + + 응답의 고유 ID입니다. 대화를 계속하려면 `previous_response_id`로 사용하세요. + + + + `status`가 `incomplete`일 때 채워집니다. + + + + 예: `max_output_tokens`, `content_filter`. + + + + 요청의 `instructions` 필드를 그대로 반영합니다. + + + + + + + + + + + + + + + + 응답을 생성한 모델 ID입니다. + + + + 가능한 값: `response` + + + + 모델이 생성한 순서대로 정렬된 출력 항목입니다. + + + + + + + + + + + + 가능한 값: `minimal`, `low`, `medium`, `high` + + + + TPM 보장 패키지 사용 여부입니다. `default`는 사용하지 않음을 의미합니다. + + 가능한 값: `default` + + + + 가능한 값: `in_progress`, `completed`, `incomplete`, `failed`, `cancelled` + + + + + + + + + + + + 형식: `float` + + + + 요청의 `text` 필드를 그대로 반영합니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식 JSON 객체를 반환하며, `json_schema`는 호출자가 제공한 JSON Schema로 출력을 제한합니다. + + + + + + + + 가능한 값: `enabled`, `disabled`, `auto` + + + + + + + + 모델이 호출할 수 있는 도구입니다. 현재는 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 가능한 값: `function` + + + + 형식: `float` + + + + 청구 및 관측을 위한 토큰 사용량 세부 내역입니다. + + + + 요청의 총 토큰 수입니다. + + + + 입력 토큰의 세부 내역(캐시 적중 등)입니다. + + + + 컨텍스트 캐시에서 제공된 토큰입니다. + + + + 모델이 생성한 총 토큰 수입니다. + + + + 출력 토큰의 세부 내역(추론 등)입니다. + + + + 사고 연쇄(chain-of-thought)에서 소비된 토큰입니다. + + + + 도구별 호출 횟수입니다. + + + + 이미지 처리 도구 호출 횟수입니다. + + + + MCP 도구 호출 횟수입니다. + + + + 웹 검색 도구 호출 횟수입니다. + + + + 하위 도구 호출 횟수의 도구별 세부 내역입니다. + + 예: `{"zoom":1,"point":1,"grounding":1}`. + + + + 예: `{"mcp_server_tos":1,"mcp_server_tls":1}`. + + + + 예: `{"toutiao":1,"moji":1,"search_engine":1}`. + + + + input_tokens + output_tokens. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-lite-260228", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx b/ko/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx new file mode 100644 index 000000000..f581d211d --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx @@ -0,0 +1,459 @@ +--- +title: "Comfy Router에서 Seed 2.0 Mini 260215 사용하기" +description: "Comfy Router를 통해 byteplus/seed-2-0-mini-260215를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seed 2.0 Mini 260215" +translationSourceHash: d31f55eb +translationFrom: development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx +translationBlockHashes: + "_intro": 8913ff52 + "Quick start": a6214085 + "Schema": 81ae34b2 + "Examples": 023957a5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-mini-260215.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +BytePlus에서 Comfy Router를 통해 제공하는 `byteplus/seed-2-0-mini-260215`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `byteplus/seed-2-0-mini-260215` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-mini-260215", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-mini-260215", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## 스키마 + +### 입력 + + + 컨텍스트 캐시 구성입니다. + + + + 참이면 공개 프리픽스 캐시만 생성하며, 모델은 응답하지 않습니다. + + + + 가능한 값: `enabled`, `disabled` + + + + 컨텍스트 창을 관리 가능한 크기로 유지하기 위해 적용되는 컨텍스트 관리 전략(`clear_thinking`, `clear_tool_uses`)입니다. + + + + `type`으로 구분되는 단일 컨텍스트 편집 전략입니다. + + + + 저장된 응답과 캐시가 만료되는 Unix 타임스탬프(초, UTC)입니다. 범위: (creation_time, creation_time + 604800]. 기본값: creation_time + 259200(3일). + + + + 포함할 추가 출력 필드입니다. 현재 지원: `reasoning.encrypted_content`(수동 다중 턴 재사용을 위한 암호화+압축 추론). + + + + 모델에 제공되는 텍스트 콘텐츠 또는 입력 항목 목록입니다. + + + + 첫 번째 지시로 앞에 추가되는 시스템/개발자 메시지입니다. `caching`과 호환되지 않습니다: `caching.type`이 `enabled`인 경우 `instructions`를 설정하면 오류가 반환됩니다. + + + + 최대 출력 토큰 수(응답 + 사고 연쇄)입니다. + + + + 범위: `1` ~ `10` + + + + 모델 ID 또는 엔드포인트 ID입니다. 모델 목록은 https://docs.byteplus.com/en/docs/ModelArk/1330310, 엔드포인트 ID는 https://docs.byteplus.com/en/docs/ModelArk/1099522를 참조하십시오. POST /proxy/byteplus/api/v3/responses에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 자체 허용 목록 밖의 값은 거부하며, 값이 누락된 경우에도 400으로 거부합니다. Comfy Router 입력 스키마의 `required` 목록에는 없습니다. Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 이전 응답의 ID로, 다중 턴 대화를 계속하는 데 사용됩니다. 실패를 방지하려면 요청 사이에 약 100ms를 삽입하십시오. + + + + 깊은 사고의 작업량을 제한합니다. + + + + `minimal`은 사고를 완전히 비활성화합니다. `thinking.type = +disabled`인 경우 `minimal`만 허용됩니다. + + 가능한 값: `minimal`, `low`, `medium`, `high` + + + + 참이면 응답이 영구 저장되며 ID로 조회하여 다중 턴에 사용할 수 있습니다. + + + + 범위: `0` ~ `2` + + 형식: `float` + + + + 출력 형식 구성입니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식 JSON 객체를 반환하며, `json_schema`는 호출자가 제공한 JSON Schema로 출력을 제한합니다. + + + + 깊은 사고 모드를 제어합니다. + + + + `enabled`: 응답하기 전에 항상 추론합니다. +`disabled`: 추가 추론 없이 응답합니다. +`auto`: 모델이 쿼리별로 결정합니다. + + 가능한 값: `enabled`, `disabled`, `auto` + + + + 도구 선택 모드입니다. 이 필드는 seed-1-6 모델만 지원합니다. + + + + 모델이 호출할 수 있는 도구입니다. 현재 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 가능한 값: `function` + + + + 범위: `0` ~ `1` + + 형식: `float` + + +`GET /v2/models/byteplus/seed-2-0-mini-260215/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 Router가 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + + + + + 가능한 값: `enabled`, `disabled` + + + + 이 응답에서 실제로 적용된 컨텍스트 관리 전략입니다. 전략을 구성하는 요청 측 `BytePlusResponseContextManagement`와 달리, 이 필드는 서버가 호출한 전략을 지워진 항목의 개수와 함께 그대로 반영합니다. + + + + `type`으로 구분되는, 적용된 컨텍스트 편집 하나입니다. + + + + 응답이 생성된 Unix 타임스탬프(초)입니다. + + + + 오류 세부 정보입니다. 응답이 성공하면 null입니다. + + + + + + + + + + + + 저장된 응답이 만료되는 Unix 타임스탬프(초)입니다. + + + + 응답의 고유 ID입니다. 대화를 계속하려면 `previous_response_id`로 사용하세요. + + + + `status`가 `incomplete`일 때 채워집니다. + + + + 예: `max_output_tokens`, `content_filter`. + + + + 요청의 `instructions` 필드를 그대로 반영한 값입니다. + + + + + + + + + + + + + + + + 응답을 생성한 모델 ID입니다. + + + + 가능한 값: `response` + + + + 모델이 생성한 순서대로 정렬된 출력 항목입니다. + + + + + + + + + + + + 가능한 값: `minimal`, `low`, `medium`, `high` + + + + TPM 보장 패키지 사용량입니다. `default`는 사용하지 않음을 의미합니다. + + 가능한 값: `default` + + + + 가능한 값: `in_progress`, `completed`, `incomplete`, `failed`, `cancelled` + + + + + + + + + + + + 형식: `float` + + + + 요청의 `text` 필드를 그대로 반영한 값입니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식의 JSON 객체를 반환하며, `json_schema`는 호출자가 제공한 JSON Schema로 출력을 제한합니다. + + + + + + + + 가능한 값: `enabled`, `disabled`, `auto` + + + + + + + + 모델이 호출할 수 있는 도구입니다. 현재는 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 가능한 값: `function` + + + + 형식: `float` + + + + 청구 및 관측을 위한 토큰 사용량 분석입니다. + + + + 요청의 총 토큰 수입니다. + + + + 입력 토큰의 분석입니다(캐시 적중 등). + + + + 컨텍스트 캐시에서 제공된 토큰입니다. + + + + 모델이 생성한 총 토큰 수입니다. + + + + 출력 토큰의 분석입니다(추론 등). + + + + 사고 연쇄(chain-of-thought)에서 소비된 토큰입니다. + + + + 도구별 호출 횟수입니다. + + + + 이미지 처리 도구 호출 횟수입니다. + + + + MCP 도구 호출 횟수입니다. + + + + 웹 검색 도구 호출 횟수입니다. + + + + 하위 도구 호출 횟수의 도구별 분석입니다. + + 예: `{"zoom":1,"point":1,"grounding":1}`. + + + + 예: `{"mcp_server_tos":1,"mcp_server_tls":1}`. + + + + 예: `{"toutiao":1,"moji":1,"search_engine":1}`. + + + + input_tokens + output_tokens. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-mini-260215", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx b/ko/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx new file mode 100644 index 000000000..1ec1e6e25 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx @@ -0,0 +1,460 @@ +--- +title: "Comfy Router에서 Seed 2.0 Pro 260328 사용하기" +description: "Comfy Router를 통해 byteplus/seed-2-0-pro-260328을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seed 2.0 Pro 260328" +translationSourceHash: 66dabb87 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx +translationBlockHashes: + "_intro": 3395e7cc + "Quick start": c2770ef5 + "Schema": 93899ca4 + "Examples": e3b39a19 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-pro-260328.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +BytePlus에서 Comfy Router가 제공하는 `byteplus/seed-2-0-pro-260328`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `byteplus/seed-2-0-pro-260328` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-pro-260328", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-pro-260328", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## 스키마 + +### 입력 + + + 컨텍스트 캐시 구성입니다. + + + + 참인 경우 공개 접두사 캐시만 생성하고 모델은 응답하지 않습니다. + + + + 가능한 값: `enabled`, `disabled` + + + + 컨텍스트 창을 관리 가능한 크기로 유지하기 위해 적용되는 컨텍스트 관리 전략(`clear_thinking`, `clear_tool_uses`)입니다. + + + + `type`으로 구분되는 단일 컨텍스트 편집 전략입니다. + + + + 저장된 응답과 캐시가 만료되는 Unix 타임스탬프(초, UTC)입니다. 범위: (creation_time, creation_time + 604800]. 기본값: creation_time + 259200(3일). + + + + 포함할 추가 출력 필드입니다. 현재 지원: `reasoning.encrypted_content`(수동 다중 턴 재사용을 위한 암호화+압축된 추론). + + + + 모델에 제공되는 텍스트 콘텐츠 또는 입력 항목 목록입니다. + + + + 첫 번째 지시로 앞에 추가되는 시스템/개발자 메시지입니다. `caching`과 호환되지 않습니다. `caching.type`이 `enabled`인 경우 `instructions`를 설정하면 오류가 반환됩니다. + + + + 최대 출력 토큰 수(응답 + 사고 사슬)입니다. + + + + 범위: `1` ~ `10` + + + + 모델 ID 또는 엔드포인트 ID입니다. 모델 목록은 https://docs.byteplus.com/en/docs/ModelArk/1330310, 엔드포인트 ID는 https://docs.byteplus.com/en/docs/ModelArk/1099522를 참조하십시오. POST /proxy/byteplus/api/v3/responses에 대한 직접 v1 호출은 반드시 이 값을 제공해야 하며, 프록시는 자체 허용 목록에 없는 값은 거부하고 값을 생략한 경우에도 400으로 거부합니다. Comfy Router 입력 스키마의 `required` 목록에는 없는 이유는 Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 이전 응답의 ID로, 다중 턴 대화를 계속하는 데 사용됩니다. 실패를 방지하려면 요청 사이에 약 100ms를 삽입하십시오. + + + + 깊은 사고의 작업량을 제한합니다. + + + + `minimal`은 사고를 완전히 비활성화합니다. `thinking.type = +disabled`인 경우 `minimal`만 허용됩니다. + + 가능한 값: `minimal`, `low`, `medium`, `high` + + + + 참인 경우 응답이 저장되고 다중 턴 사용을 위해 ID로 검색할 수 있습니다. + + + + 범위: `0` ~ `2` + + 형식: `실수` + + + + 출력 형식 구성입니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식 JSON 객체를 반환하며, `json_schema`는 출력을 호출자가 제공한 JSON Schema로 제한합니다. + + + + 깊은 사고 모드를 제어합니다. + + + + `enabled`: 응답하기 전에 항상 추론합니다. +`disabled`: 추가 추론 없이 응답합니다. +`auto`: 모델이 쿼리별로 결정합니다. + + 가능한 값: `enabled`, `disabled`, `auto` + + + + 도구 선택 모드입니다. seed-1-6 모델만 이 필드를 지원합니다. + + + + 모델이 호출할 수 있는 도구입니다. 현재 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 가능한 값: `function` + + + + 범위: `0` ~ `1` + + 형식: `실수` + + +`GET /v2/models/byteplus/seed-2-0-pro-260328/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + 사용 가능한 값: `enabled`, `disabled` + + + + 이 응답에서 실제로 적용된 컨텍스트 관리 전략입니다. 전략을 구성하는 요청 측 `BytePlusResponseContextManagement`와 달리, 여기에는 서버가 호출한 전략과 삭제된 항목의 개수가 그대로 반영됩니다. + + + + `type`으로 구분되는, 적용된 컨텍스트 편집 하나입니다. + + + + 응답이 생성된 Unix 타임스탬프(초)입니다. + + + + 오류 세부 정보입니다. 응답이 성공하면 null입니다. + + + + + + + + + + + + 저장된 응답이 만료되는 Unix 타임스탬프(초)입니다. + + + + 응답의 고유 ID입니다. 대화를 계속하려면 `previous_response_id`로 사용하세요. + + + + `status`가 `incomplete`일 때 채워집니다. + + + + 예: `max_output_tokens`, `content_filter`. + + + + 요청의 `instructions` 필드를 그대로 반영한 값입니다. + + + + + + + + + + + + + + + + 응답을 생성한 모델 ID입니다. + + + + 사용 가능한 값: `response` + + + + 모델이 생성한 순서대로 나열된 출력 항목입니다. + + + + + + + + + + + + 사용 가능한 값: `minimal`, `low`, `medium`, `high` + + + + TPM 보장 패키지 사용량입니다. `default`는 사용하지 않음을 의미합니다. + + 사용 가능한 값: `default` + + + + 사용 가능한 값: `in_progress`, `completed`, `incomplete`, `failed`, `cancelled` + + + + + + + + + + + + 형식: `float` + + + + 요청의 `text` 필드를 그대로 반영한 값입니다. + + + + `type`으로 구분되는 텍스트 출력 형식입니다. `text`는 자연어를 반환하고, `json_object`는 자유 형식 JSON 객체를 반환하며, `json_schema`는 호출자가 제공한 JSON Schema로 출력을 제한합니다. + + + + + + + + 사용 가능한 값: `enabled`, `disabled`, `auto` + + + + + + + + 모델이 호출할 수 있는 도구입니다. 현재는 `function`만 지원됩니다. + + + + + + + + + + + + 함수의 파라미터를 설명하는 JSON Schema입니다. + + + + 사용 가능한 값: `function` + + + + 형식: `float` + + + + 청구 및 관측을 위한 토큰 사용량 내역입니다. + + + + 요청의 총 토큰 수입니다. + + + + 입력 토큰의 내역입니다(캐시 적중 등). + + + + 컨텍스트 캐시에서 제공된 토큰입니다. + + + + 모델이 생성한 총 토큰 수입니다. + + + + 출력 토큰의 내역입니다(추론 등). + + + + 사고 연쇄(chain-of-thought)에 소비된 토큰입니다. + + + + 도구별 호출 횟수입니다. + + + + 이미지 처리 도구 호출 횟수입니다. + + + + MCP 도구 호출 횟수입니다. + + + + 웹 검색 도구 호출 횟수입니다. + + + + 하위 도구 호출 횟수의 도구별 내역입니다. + + 예: `{"zoom":1,"point":1,"grounding":1}`. + + + + 예: `{"mcp_server_tos":1,"mcp_server_tls":1}`. + + + + 예: `{"toutiao":1,"moji":1,"search_engine":1}`. + + + + input_tokens + output_tokens. + + +## 예제 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-pro-260328", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx b/ko/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx new file mode 100644 index 000000000..33d5641dc --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx @@ -0,0 +1,275 @@ +--- +title: "Comfy Router에서 Seed Audio 1.0 Multilingual 사용하기" +description: "Comfy Router를 통해 byteplus/seed-audio-1.0-multilingual을 호출하는 방법: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seed Audio 1.0 Multilingual" +translationSourceHash: 2ecb3379 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx +translationBlockHashes: + "_intro": 0936b282 + "Quick start": 2edf8519 + "Schema": 5e381884 + "Examples": be556f45 +--- +{/* 생성됨 파일. router-schemas/byteplus/seed-audio-1.0-multilingual.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +BytePlus에서 Comfy Router로 제공하는 `byteplus/seed-audio-1.0-multilingual`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `byteplus/seed-audio-1.0-multilingual` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0-multilingual", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0-multilingual", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## 스키마 + +### 입력 + + + 출력 오디오 구성입니다. + + + + 자막 서비스를 사용할지 여부입니다. 사용하면 응답에 발화 및 단어 수준 타임스탬프가 포함됩니다 (기본값: false). + + + + 출력 오디오 형식: wav(기본값), mp3, pcm 또는 ogg_opus. + + 가능한 값: `wav`, `mp3`, `pcm`, `ogg_opus` + + + + -50에서 100까지이며, 100은 2.0배 볼륨, -50은 0.5배 볼륨을 의미합니다 (기본값: 0). + + 범위: `-50` ~ `100` + + + + -12에서 12까지입니다 (기본값: 0). + + 범위: `-12` ~ `12` + + + + 출력 샘플 레이트: 8000, 16000, 24000(기본값), 32000, 44100 또는 48000. + + 가능한 값: `8000`, `16000`, `24000`, `32000`, `44100`, `48000` + + + + -50에서 100까지이며, 100은 2.0배 속도, -50은 0.5배 속도를 의미합니다 (기본값: 0). + + 범위: `-50` ~ `100` + + + + 모델 식별자입니다. 지원 모델: seed-audio-1.0 및 seed-audio-1.0-multilingual. POST /proxy/byteplus/api/v3/tts/create에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 누락된 값에 대해 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 참조 리소스입니다. 텍스트 전용 생성에는 생략하세요. 최대 3개의 오디오 참조(각각 최대 30초, 디코딩 시 10 MB, wav, mp3, pcm 또는 ogg_opus) 또는 정확히 1개의 이미지 참조(디코딩 시 최대 10 MB, jpeg, png 또는 webp)를 사용할 수 있습니다. 이미지 참조는 오디오 참조와 혼합할 수 없습니다. 이러한 상한은 BytePlus의 것이며, 디코딩된 바이트 기준으로 명시됩니다. base64는 자산을 약 4/3로 부풀리고, Comfy Router 호출은 전체 JSON 문서에 대해 10 MiB로 제한되므로, /v2/models/byteplus/\{model}로 전송되는 인라인 `audio_data`/`image_data` 참조는 디코딩 시 약 7.5 MB 미만이어야 합니다. 그보다 큰 경우에는 `audio_url`/`image_url`을 사용하세요. BytePlus 자체의 최대 10 MB 참조를 인라인하면 검증이 실행되기 전에 413으로 거부됩니다. + + + + Base64로 인코딩된 참조 오디오입니다. + + + + 원격 참조 오디오 파일의 URL입니다. + + + + Base64로 인코딩된 참조 이미지입니다. + + + + 원격 참조 이미지의 URL입니다. + + + + 음성 ID입니다. 지원되는 Doubao TTS 음성 또는 복제된 음성 ID일 수 있습니다. + + + + 합성할 프롬프트 또는 텍스트입니다 (1~3,000자, 빈 문자열은 거부됩니다). 오디오 참조를 제공한 경우 @Audio1, @Audio2, @Audio3을 사용하여 순서대로 참조하세요. + + + + 워터마크 구성 객체입니다. 빈 객체도 허용됩니다. + + + + 암시적 워터마크입니다. 합성된 오디오 헤더에 메타데이터를 추가합니다. + + + + 합성 서비스 공급자의 이름 또는 코드입니다. + + + + 콘텐츠 배포 서비스 공급자의 이름 또는 코드입니다. + + + + 암시적 워터마크를 사용할지 여부입니다 (기본값: false). + + + + 콘텐츠 제작 ID입니다. + + + + 콘텐츠 배포 ID입니다. + + + + 명시적 워터마크 전환입니다. 합성된 오디오 끝에 오디오 리듬 마커를 추가합니다 (기본값: false). + + +Router가 `GET /v2/models/byteplus/seed-audio-1.0-multilingual/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출 검증에 사용하는 것과 동일한 문서입니다.### 출력 + + + 생성된 오디오 데이터이며, Base64로 인코딩되어 있습니다. + + + + 상태 코드입니다. 자세한 내용은 공식 오류 코드 문서를 참조하세요. + + + + 속도 조정 또는 후처리 이후의 재생 시간(초)입니다. + + 형식: `double` + + + + 상태 세부 정보입니다. + + + + 원본 모델 출력 재생 시간(초)입니다. 과금에 사용되며 최대 120초로 제한됩니다. + + 형식: `double` + + + + 오디오의 자막 정보입니다. 요청에서 audio_config.enable_subtitle이 true로 설정된 경우에만 제공됩니다. + + + + 발화 단위 자막 정보입니다. + + + + 세그먼트 종료 시간이며, 오디오 시작점 기준 밀리초 단위입니다. + + + + 세그먼트 시작 시간이며, 오디오 시작점 기준 밀리초 단위입니다. + + + + 세그먼트의 전체 텍스트입니다. + + + + 오디오에 해당하는 자막 텍스트입니다. + + + + 단어 단위 자막 정보입니다. + + + + 세그먼트 종료 시간이며, 오디오 시작점 기준 밀리초 단위입니다. + + + + 세그먼트 시작 시간이며, 오디오 시작점 기준 밀리초 단위입니다. + + + + 세그먼트의 전체 텍스트입니다. + + + + 임시 오디오 URL이며, 2시간 동안 유효합니다. + + +## 예시 + +### 입력 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 출력 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx b/ko/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx new file mode 100644 index 000000000..0b29c3416 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx @@ -0,0 +1,275 @@ +--- +title: "Comfy Router에서 Seed Audio 1.0 사용하기" +description: "Comfy Router를 통해 byteplus/seed-audio-1.0을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Seed Audio 1.0" +translationSourceHash: 1971dfe6 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx +translationBlockHashes: + "_intro": 8371b803 + "Quick start": 20fc3b16 + "Schema": c8c3aa89 + "Examples": be556f45 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-audio-1.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-audio-1.0`의 API 레퍼런스이며, BytePlus에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 {#quick-start} + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `byteplus/seed-audio-1.0` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## 스키마 + +### 입력 + + + 출력 오디오 구성입니다. + + + + 자막 서비스를 사용할지 여부입니다. 사용하도록 설정하면 응답에 발화 및 단어 단위 타임스탬프가 포함됩니다(기본값: false). + + + + 출력 오디오 형식: wav(기본값), mp3, pcm 또는 ogg_opus. + + 가능한 값: `wav`, `mp3`, `pcm`, `ogg_opus` + + + + -50에서 100까지이며, 100은 2.0배 볼륨, -50은 0.5배 볼륨입니다(기본값: 0). + + 범위: `-50` ~ `100` + + + + -12에서 12까지입니다(기본값: 0). + + 범위: `-12` ~ `12` + + + + 출력 샘플 레이트: 8000, 16000, 24000(기본값), 32000, 44100 또는 48000. + + 가능한 값: `8000`, `16000`, `24000`, `32000`, `44100`, `48000` + + + + -50에서 100까지이며, 100은 2.0배 속도, -50은 0.5배 속도입니다(기본값: 0). + + 범위: `-50` ~ `100` + + + + 모델 식별자입니다. 지원되는 모델: seed-audio-1.0 및 seed-audio-1.0-multilingual. POST /proxy/byteplus/api/v3/tts/create에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 값이 누락된 경우를 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 참조 리소스입니다. 텍스트 전용 생성에서는 생략합니다. 최대 3개의 오디오 참조(각각 최대 30초, 디코딩 기준 10 MB, wav, mp3, pcm 또는 ogg_opus) 또는 정확히 1개의 이미지 참조(디코딩 기준 최대 10 MB, jpeg, png 또는 webp)를 사용할 수 있습니다. 이미지 참조는 오디오 참조와 함께 사용할 수 없습니다. 이러한 상한은 BytePlus의 것으로 디코딩된 바이트 기준입니다. base64는 자산을 약 4/3로 부풀리며, Comfy Router 호출은 전체 JSON 문서에 대해 10 MiB로 제한되므로 /v2/models/byteplus/\{model}로 전송되는 인라인 `audio_data`/`image_data` 참조는 디코딩 기준 약 7.5 MB 미만이어야 합니다. 그보다 큰 경우에는 `audio_url`/`image_url`을 사용하십시오. BytePlus 자체 최대치인 10 MB의 참조를 인라인으로 보내면 검증이 실행되기 이전에 413으로 거부됩니다. + + + + Base64로 인코딩된 참조 오디오입니다. + + + + 원격 참조 오디오 파일의 URL입니다. + + + + Base64로 인코딩된 참조 이미지입니다. + + + + 원격 참조 이미지의 URL입니다. + + + + 음성 ID입니다. 지원되는 Doubao TTS 음성 또는 음성 복제 음성 ID일 수 있습니다. + + + + 합성할 프롬프트 또는 텍스트입니다(1자에서 3,000자까지이며, 빈 문자열은 거부됩니다). 오디오 참조를 제공한 경우 @Audio1, @Audio2, @Audio3을 사용하여 순서대로 참조하십시오. + + + + 워터마크 구성 객체입니다. 빈 객체도 허용됩니다. + + + + 암시적 워터마크입니다. 합성된 오디오 헤더에 메타데이터를 추가합니다. + + + + 합성 서비스 공급자의 이름 또는 코드입니다. + + + + 콘텐츠 배포 서비스 공급자의 이름 또는 코드입니다. + + + + 암시적 워터마크를 사용할지 여부입니다(기본값: false). + + + + 콘텐츠 제작 ID입니다. + + + + 콘텐츠 배포 ID입니다. + + + + 명시적 워터마크 전환입니다. 합성된 오디오 끝에 오디오 리듬 표시를 추가합니다(기본값: false). + + +`GET /v2/models/byteplus/seed-audio-1.0/openapi.json`에서 Router가 제공하는 스키마, 즉 요청이 공급자에 도달하기 이전에 호출 검증에 사용하는 것과 동일한 문서에서 생성되었습니다.### 출력 + + + 생성된 오디오 데이터이며, Base64로 인코딩됩니다. + + + + 상태 코드입니다. 자세한 내용은 공식 오류 코드 문서를 참조하세요. + + + + 배속 또는 후처리 이후의 재생 시간(초)입니다. + + 형식: `double` + + + + 상태 세부 정보입니다. + + + + 원본 모델 출력 재생 시간(초)입니다. 과금에 사용되며 최대 120초로 제한됩니다. + + 형식: `double` + + + + 오디오의 자막 정보입니다. 요청에서 audio_config.enable_subtitle이 true로 설정된 경우에만 존재합니다. + + + + 발화 단위 자막 정보입니다. + + + + 세그먼트 종료 시간으로, 오디오 시작부터의 밀리초 단위입니다. + + + + 세그먼트 시작 시간으로, 오디오 시작부터의 밀리초 단위입니다. + + + + 세그먼트의 전체 텍스트입니다. + + + + 오디오에 대응하는 자막 텍스트입니다. + + + + 단어 단위 자막 정보입니다. + + + + 세그먼트 종료 시간으로, 오디오 시작부터의 밀리초 단위입니다. + + + + 세그먼트 시작 시간으로, 오디오 시작부터의 밀리초 단위입니다. + + + + 세그먼트의 전체 텍스트입니다. + + + + 임시 오디오 URL이며, 2시간 동안 유효합니다. + + +## 예시 + +### 입력 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 출력 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx b/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx new file mode 100644 index 000000000..a66c281b9 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Seedance 1.0 Lite I2V 250428 사용하기" +description: "Comfy Router를 통해 byteplus/seedance-1-0-lite-i2v-250428을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedance 1.0 Lite I2V 250428" +translationSourceHash: 90148920 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx +translationBlockHashes: + "_intro": 66c320e8 + "Quick start": 3e9c0d27 + "Schema": 0dd61406 + "Examples": d126be96 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-lite-i2v-250428.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +BytePlus에서 Comfy Router를 통해 제공하는 `byteplus/seedance-1-0-lite-i2v-250428`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**Model ID:** `byteplus/seedance-1-0-lite-i2v-250428` + +**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-i2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-i2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 입력 + + + 이 생성 작업의 결과를 받을 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하는 데 사용할 입력 콘텐츠 + + + + 입력 오디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL(wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성을 위한 이미지 콘텐츠(type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치입니다. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast 전용). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast 전용). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델의 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트(필수): 중국어 및 영어 문자를 사용한 생성할 비디오에 대한 설명입니다. + +파라미터(선택): 텍스트 프롬프트 뒤에 --[파라미터]를 추가하여 비디오 사양을 제어합니다. +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3~12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예시: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL(mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초)입니다. Seedance 2.5: [4,30] 또는 -1(자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1(자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 제한 시간 임계값(초)입니다. 기본값 172800(48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 화면과 동기화된 오디오가 포함되는지 여부입니다. +true: 모델이 동기화된 오디오가 있는 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID입니다. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율입니다. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도입니다. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p 및 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.true: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 true로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임이 다음 비디오 작업의 첫 프레임으로 사용되므로 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +false: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리를 위한 서비스 티어입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/seedance-1-0-lite-i2v-250428/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy storage로 다시 호스팅되며, 여기의 다른 모든 필드는 BytePlus의 것입니다. Nullable: BytePlus는 작업 후 24시간 뒤에 URL을 지우므로, 그 이후에 폴링된 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL에서 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하고, Router는 제공받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type이나 콘텐츠 스니핑으로 타입을 지정합니다. `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy storage로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 한 시간도 안 되는 URL을 돌려받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 대신 유지하며, BytePlus는 작업 후 24시간 뒤에 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩할 때 사용됩니다. Seedance 모델은 더 흔히 `content`의 TOP-LEVEL 형제로 반환하며(최상위 `output_format` 필드 참조), Router는 둘 중 존재하는 것을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy storage로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 한 시간도 안 되는 URL을 돌려받을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 BytePlus 자체 URL을 대신 유지하며, BytePlus는 작업 후 24시간 뒤에 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이 값에 일관성이 없기 때문에 정수가 아닌 숫자로 선언되었습니다. 비디오 작업은 정수 초를 반환하는 것이 관찰되었고, 인접한 BytePlus 표면은 소수 재생 시간을 보고하므로, 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에서 사용한 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로서 TOP LEVEL에서 반환됩니다. Seedance 비디오 작업 쿼리가 반환하는 위치가 바로 여기입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도로, 예를 들어 `1080p`입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-i2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx b/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx new file mode 100644 index 000000000..b4a099010 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Seedance 1.0 Lite T2V 250428 사용하기" +description: "Comfy Router를 통해 byteplus/seedance-1-0-lite-t2v-250428을 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Seedance 1.0 Lite T2V 250428" +translationSourceHash: 25d0588b +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx +translationBlockHashes: + "_intro": a1ec32a9 + "Quick start": bd072989 + "Schema": 060399d4 + "Examples": 7c3591f8 +--- +{/* 생성된 파일. router-schemas/byteplus/seedance-1-0-lite-t2v-250428.json에서 `pnpm code-pages:gen`으로 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 BytePlus에서 제공하는 `byteplus/seedance-1-0-lite-t2v-250428`의 API 레퍼런스입니다. + +## 빠른 시작 + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `byteplus/seedance-1-0-lite-t2v-250428` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-t2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-t2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL (wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성을 위한 이미지 콘텐츠 (type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근 가능한지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast 전용). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast 전용). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트(필수): 중국어 및 영어 문자를 사용한 생성할 비디오에 대한 설명. + +파라미터(선택): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예시: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL (mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초). Seedance 2.5: [4,30] 또는 -1 (자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1 (자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초). 기본값 172800 (48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 화면과 동기화된 오디오가 포함되는지 여부. +true: 모델이 동기화된 오디오가 포함된 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 프록시는 다른 값이나 누락된 값에 대해 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용. 출력 비디오의 컨테이너 형식. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 비율. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p 및 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부.참: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 참으로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임이 다음 비디오 작업의 첫 번째 프레임으로 사용되므로 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +거짓: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하는 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리에 사용할 서비스 등급입니다. Seedance 2.5, 2.0 & 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/seedance-1-0-lite-t2v-250428/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지로 재호스팅되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. null을 허용합니다. BytePlus는 작업 후 24시간이 지나면 URL을 지우므로, 그 이후에 폴링한 succeeded 문서에는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL로부터 이미지 형식을 추론하지 마십시오. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하지만, Router는 전달받은 바이트를 그대로 재호스팅하고 업스트림 Content-Type 또는 콘텐츠 스니핑을 통해 타입을 지정하며, `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지로 재호스팅하고 이 필드를 다시 쓰므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하십시오. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해 넣는 경우에 해당합니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많습니다(최상위 `output_format` 필드 참조). Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지로 재호스팅하고 이 필드를 다시 쓰므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 시간이 1시간도 안 되는 URL을 돌려받을 수 있습니다. 재호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드 횟수를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하십시오. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이를 일관되게 처리하지 않기 때문에 정수(integer)가 아닌 숫자(number)로 선언되었습니다. 비디오 작업에서는 정수 초를 반환하는 것이 관찰되었고, 인접한 BytePlus 인터페이스에서는 소수 재생 시간을 보고하기도 하므로, 클라이언트는 값이 정수라고 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로 최상위 레벨에 반환됩니다. Seedance 비디오 작업 쿼리가 반환하는 위치가 바로 여기입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도로, 예를 들어 `1080p`입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-t2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx b/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx new file mode 100644 index 000000000..064ca6c6e --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Seedance 1.0 Pro 250528 사용하기" +description: "Comfy Router를 통해 byteplus/seedance-1-0-pro-250528을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedance 1.0 Pro 250528" +translationSourceHash: 662d9fd0 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx +translationBlockHashes: + "_intro": 7a940f76 + "Quick start": e301b36e + "Schema": 0a7ca1d5 + "Examples": 2ace8cc9 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-pro-250528.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-250528`에 대한 API 레퍼런스이며, Comfy Router가 BytePlus에서 제공합니다. + +## 빠른 시작 + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기 하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `byteplus/seedance-1-0-pro-250528` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-250528", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-250528", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업의 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL (wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠 (type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다 +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치입니다. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast만 해당). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast만 해당). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트 (필수): 중국어 및 영어 문자를 사용해 생성할 비디오에 대한 설명입니다. + +파라미터 (선택 사항): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예시: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL (mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초)입니다. Seedance 2.5: [4,30] 또는 -1 (자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1 (자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초)입니다. 기본값 172800(48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 시각 요소와 동기화된 오디오가 포함되는지 여부입니다. +true: 모델이 동기화된 오디오가 있는 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID입니다. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율입니다. Seedance 2.0 및 2.0 fast, 1.5 pro의 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도입니다. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite의 기본값: 720p. Seedance 1.0 pro 및 pro-fast의 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.true: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 true로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이는 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임을 다음 비디오 작업의 첫 프레임으로 사용하여 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +false: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리를 위한 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/seedance-1-0-pro-250528/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지로 다시 호스팅(RE-HOSTED)되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. Nullable: BytePlus는 작업 후 24시간이 지나면 URL을 지우며, 그 이후에 조회된 succeeded 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL에서 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하지만, Router는 전달받은 바이트를 그대로 다시 호스팅하고 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별하며, `image/jpeg`는 둘 다 실패했을 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 조회하면 남은 시간이 1시간도 되지 않을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지웁니다. 어느 경우든 링크가 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해 넣는 경우입니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많으며(최상위 `output_format` 필드 참고), Router는 둘 중 존재하는 값을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지로 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 조회하면 남은 시간이 1시간도 되지 않을 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우에는 이 필드가 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 경우든 링크가 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이 값에 대해 일관성이 없기 때문에 정수 대신 숫자로 선언되었습니다. 비디오 작업이 정수 초를 반환한 사례가 관측되었고, 인접한 BytePlus 표면에서는 소수 재생 시간을 보고하기도 하므로, 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에서 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제로 최상위에 반환됩니다. Seedance 비디오 작업 조회가 반환하는 위치입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도, 예: `1080p`. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청의 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-250528", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx b/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx new file mode 100644 index 000000000..9792a645b --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx @@ -0,0 +1,344 @@ +--- +title: "Comfy Router에서 Seedance 1.0 Pro Fast 251015 사용하기" +description: "Comfy Router를 통해 byteplus/seedance-1-0-pro-fast-251015를 호출하는 방법: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedance 1.0 Pro Fast 251015" +translationSourceHash: fe17d7dd +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx +translationBlockHashes: + "_intro": b414baf3 + "Quick start": 39685b9b + "Schema": dfc9d47b + "Examples": f5cd7d00 +--- +{/* 생성된 파일. router-schemas/byteplus/seedance-1-0-pro-fast-251015.json에서 `pnpm code-pages:gen`으로 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-fast-251015`에 대한 API 레퍼런스: BytePlus에서 제공하며 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `byteplus/seedance-1-0-pro-fast-251015` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-fast-251015", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-fast-251015", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 단독으로 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL (wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠 (type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast만 해당). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast만 해당). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트 (필수): 중국어와 영어 문자를 사용한 생성할 비디오에 대한 설명. + +파라미터 (선택): 비디오 사양을 제어하려면 텍스트 프롬프트 뒤에 --[parameters]를 추가하세요: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL (mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초). Seedance 2.5: [4,30] 또는 -1 (자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1 (자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초). 기본값 172800 (48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 화면과 동기화된 오디오가 포함되는지 여부. +true: 모델이 동기화된 오디오가 있는 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + Seedance 2.5 전용. 출력 비디오의 컨테이너 형식. +mp4: 범용 컨테이너 (H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너 (H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부.참: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 참으로 설정하면 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이고, 픽셀 너비와 높이는 생성된 비디오와 동일하며, 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임을 다음 비디오 작업의 첫 프레임으로 사용하여 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +거짓: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 무작위성을 제어하기 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1`부터 `4294967295`까지 + + + + 처리를 위한 서비스 등급입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/seedance-1-0-pro-fast-251015/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 대상과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url` 모두 Comfy 스토리지에 다시 호스팅되며, 여기의 다른 모든 필드는 BytePlus의 자체 필드입니다. Null 허용 - BytePlus는 작업 후 24시간이 지나면 URL을 삭제하므로, 그 이후에 폴링한 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL로 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하고, Router는 전달받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별하고, `image/jpeg`는 둘 다 실패할 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 유효 시간이 1시간도 되지 않을 수 있습니다. 재호스팅을 수행할 수 없었을 때는 이 필드가 대신 BytePlus의 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 삭제합니다. 어느 경우든 링크가 만료되므로, URL을 저장하지 말고 프레임을 다운로드하세요. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩해 반환하는 경우입니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많으므로 최상위 `output_format` 필드를 참고하세요. Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 유효 시간이 1시간도 되지 않을 수 있습니다. 재호스팅을 수행할 수 없었을 때는 이 필드가 대신 BytePlus의 자체 URL을 유지하며, BytePlus는 작업 후 24시간이 지나면 이를 삭제하고 일부 모델에서는 다운로드 횟수를 100회로 제한합니다. 어느 경우든 링크가 만료되므로, URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이를 일관되게 처리하지 않기 때문에 정수가 아닌 숫자로 선언됩니다. 비디오 작업에서는 정수 초를 반환하는 것이 관찰되었고, 이와 유사한 BytePlus 인터페이스에서는 소수 재생 시간을 보고하기도 하므로, 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus의 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제 필드로 최상위 레벨에서 반환됩니다. Seedance 비디오 작업 조회가 반환하는 위치입니다. BytePlus의 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도로, 예를 들어 `1080p`입니다. BytePlus의 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus의 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청에 대한 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 0으로 기본 설정됩니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-fast-251015", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/ko/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx b/ko/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx new file mode 100644 index 000000000..4f765197f --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx @@ -0,0 +1,345 @@ +--- +title: "Comfy Router로 Seedance 1.5 Pro 251215 사용하기" +description: "Comfy Router를 통해 byteplus/seedance-1-5-pro-251215를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedance 1.5 Pro 251215" +translationSourceHash: 1317f7bd +translationFrom: development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx +translationBlockHashes: + "_intro": c67f4c25 + "Quick start": f31d9e26 + "Schema": 0ba08868 + "Examples": ec5f82bf +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/byteplus/seedance-1-5-pro-251215.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +BytePlus에서 Comfy Router를 통해 제공되는 `byteplus/seedance-1-5-pro-251215`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**Model ID:** `byteplus/seedance-1-5-pro-251215` + +**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-5-pro-251215", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-5-pro-251215", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 스키마 + +### 입력 + + + 이 생성 작업 결과에 대한 콜백 알림 주소 + + 형식: `uri` + + + + 모델이 비디오를 생성하기 위한 입력 콘텐츠 + + + + 입력 오디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 오디오 입력을 지원합니다. Seedance 2.0 및 2.0 fast는 오디오만 사용할 수 없으며, 최소 1개의 이미지 또는 비디오를 포함해야 합니다. Seedance 2.5는 오디오만 입력하는 것을 지원합니다. + + + + 오디오 URL, Base64 인코딩 또는 Asset ID. +오디오 URL: 오디오의 공개 URL(wav, mp3). +Base64: 형식 data:audio/\;base64,\ +Asset ID: 형식 asset://\ + + + + + + + + 이미지 기반 비디오 생성용 이미지 콘텐츠(type이 "image_url"인 경우) +이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +Base64 인코딩 콘텐츠: 형식은 data:image/\;base64,\여야 합니다. +Asset ID: 형식 asset://\ + + + + 콘텐츠 항목의 역할/위치입니다. +이미지의 경우: first_frame, last_frame 또는 reference_image. +비디오의 경우: reference_video (Seedance 2.5, 2.0 및 2.0 fast만 해당). +오디오의 경우: reference_audio (Seedance 2.5, 2.0 및 2.0 fast만 해당). + + 가능한 값: `first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 모델에 대한 입력 텍스트 정보입니다. 텍스트 프롬프트와 선택적 파라미터를 포함합니다. + +텍스트 프롬프트(필수): 중국어 및 영어 문자를 사용하여 생성할 비디오에 대한 설명입니다. + +파라미터(선택 사항): 텍스트 프롬프트 뒤에 --[parameters]를 추가하여 비디오 사양을 제어합니다: +- --resolution (--rs): 480p, 720p, 1080p (기본값: 720p) +- --ratio (--rt): 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21, adaptive (기본값: 16:9 또는 adaptive) +- --duration (--dur): 3-12초 (기본값: 5) +- --framepersecond (--fps): 24 (기본값: 24) +- --watermark (--wm): true/false (기본값: false) +- --seed (--seed): -1 ~ 2^32-1 (기본값: -1) +- --camerafixed (--cf): true/false (기본값: false) + +예: "A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 입력 콘텐츠의 유형 + + 가능한 값: `text`, `image_url`, `video_url`, `audio_url` + + + + 입력 비디오 객체입니다. Seedance 2.5, 2.0 및 2.0 fast만 비디오 입력을 지원합니다. + + + + 비디오 URL 또는 Asset ID. +비디오 URL: 비디오의 공개 URL(mp4, mov). +Asset ID: 형식 asset://\ + + + + 비디오 재생 시간(초)입니다. Seedance 2.5: [4,30] 또는 -1(자동, 비디오 편집 작업은 -1만 지원). Seedance 2.0 및 2.0 fast: [4,15] 또는 -1(자동). Seedance 1.5 pro: [4,12] 또는 -1. Seedance 1.0: [2,12]. + + 범위: `2` ~ `30` + + + + 작업 타임아웃 임계값(초)입니다. 기본값 172800(48시간). 범위: [3600, 259200]. + + 범위: `3600` ~ `259200` + + + + Seedance 2.5, 2.0, 2.0 fast 및 1.5 pro에서 지원됩니다. 생성된 비디오에 시각 요소와 동기화된 오디오가 포함되는지 여부입니다. +true: 모델이 동기화된 오디오가 포함된 비디오를 출력합니다. +false: 모델이 무음 비디오를 출력합니다. + + + + 호출할 모델의 ID입니다. 지원되는 모델: seedance-1-5-pro-251215, seedance-1-0-pro-250528, seedance-1-0-pro-fast-251015, seedance-1-0-lite-t2v-250428, seedance-1-0-lite-i2v-250428, dreamina-seedance-2-0-260128, dreamina-seedance-2-0-fast-260128, dreamina-seedance-2-0-mini 및 dreamina-seedance-2-5-260628. POST /proxy/byteplus/api/v3/contents/generations/tasks를 직접 v1로 호출하는 경우 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 값이 누락된 경우 400으로 거부합니다. 이 스키마의 `required` 목록에는 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문이며, 따라서 Router 호출자는 이를 생략합니다. + + + + Seedance 2.5 전용입니다. 출력 비디오의 컨테이너 형식입니다. +mp4: 범용 컨테이너(H.264/AAC, yuv420p)로 호환성이 넓고 파일 크기가 더 작습니다. +mov: 전문가용 컨테이너(H.264 High 4:4:4 Predictive/PCM, yuv444p)로 색상 정밀도가 높아 후반 작업에 적합하지만 파일 크기가 더 큽니다. + + 가능한 값: `mp4`, `mov` + + + + 생성된 비디오의 화면 비율입니다. Seedance 2.0 및 2.0 fast, 1.5 pro 기본값: adaptive. + + 가능한 값: `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 비디오 해상도입니다. Seedance 2.5, 2.0 및 2.0 fast, 1.5 pro, 1.0 lite 기본값: 720p. Seedance 1.0 pro 및 pro-fast 기본값: 1080p. +참고: Seedance 2.0 및 2.0 fast는 1080p를 지원하지 않습니다. Seedance 2.5는 480p, 720p, 1080p를 지원합니다. + + 가능한 값: `480p`, `720p`, `1080p`, `4k` + + + + 생성된 비디오의 마지막 프레임 이미지를 반환할지 여부입니다.참: 생성된 비디오의 마지막 프레임 이미지를 반환합니다. 이 매개변수를 참으로 설정한 이후에는 비디오 생성 작업 정보 조회를 호출하여 마지막 프레임 이미지를 얻을 수 있습니다. 마지막 프레임 이미지는 PNG 형식이며, 픽셀 너비와 높이가 생성된 비디오와 동일하고 워터마크가 포함되지 않습니다. 이 매개변수를 사용하면 여러 개의 연속된 비디오를 생성할 수 있습니다. 이전에 생성된 비디오의 마지막 프레임을 다음 비디오 작업의 첫 프레임으로 사용하여 여러 개의 연속된 비디오를 빠르게 생성할 수 있습니다. +거짓: 생성된 비디오의 마지막 프레임 이미지를 반환하지 않습니다. + + + + 난수 제어를 위한 시드 정수입니다. 범위: [-1, 2^32-1]. -1은 무작위 시드를 사용합니다. + + 범위: `-1` ~ `4294967295` + + + + 처리를 위한 서비스 티어입니다. Seedance 2.5, 2.0 및 2.0 fast는 flex(오프라인 추론)를 지원하지 않습니다. + + 가능한 값: `default`, `flex` + + + + 생성된 비디오에 워터마크가 포함되는지 여부입니다. + + +Router가 `GET /v2/models/byteplus/seedance-1-5-pro-251215/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 비디오 생성 작업이 완료된 후의 출력으로, 출력 비디오의 다운로드 URL과 BytePlus가 반환하는 경우 마지막 프레임의 다운로드 URL을 포함합니다. `video_url`과 `last_frame_url`은 모두 Comfy 스토리지에 다시 호스팅(RE-HOSTED)되며, 여기의 다른 모든 필드는 BytePlus 자체 필드입니다. Nullable: BytePlus는 작업 24시간 후 URL을 지우므로, 그 이후에 폴링된 성공 문서는 `content`가 없거나 null일 수 있습니다. + + + + 생성된 비디오의 마지막 프레임에 대한 다운로드 URL로, 요청에서 `return_last_frame`을 설정한 경우 반환됩니다. 이 URL에서 이미지 형식을 추론하지 마세요. BytePlus는 요청 측에서 마지막 프레임을 PNG로 문서화하고, Router는 전달받은 바이트를 그대로 다시 호스팅하며 업스트림 Content-Type 또는 콘텐츠 스니핑으로 형식을 판별합니다. `image/jpeg`는 둘 다 실패할 때의 최후 수단 폴백일 뿐입니다. Router는 마지막 프레임을 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 씁니다. 따라서 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL이며, 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로 나중에 폴링하면 남은 시간이 한 시간도 안 될 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 24시간 후 이를 지웁니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 프레임을 다운로드하세요. + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, BytePlus가 이를 `content` 안에 중첩할 때 제공됩니다. Seedance 모델은 이를 `content`의 최상위 형제 필드로 반환하는 경우가 더 많으며(최상위 `output_format` 필드 참고), Router는 둘 중 존재하는 쪽을 읽습니다. + + + + 출력 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 씁니다. 따라서 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL이며, 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로 나중에 폴링하면 남은 시간이 한 시간도 안 될 수 있습니다. 다시 호스팅을 수행할 수 없었던 경우 이 필드는 대신 BytePlus 자체 URL을 유지하며, BytePlus는 작업 24시간 후 이를 지우고 일부 모델에서는 다운로드를 100회로 제한합니다. 어느 쪽이든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + + + 작업이 생성된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. BytePlus가 이를 일관되게 처리하지 않기 때문에 정수가 아닌 숫자로 선언됩니다. 비디오 작업이 정수 초를 반환하는 것이 관측되었고, 인접한 BytePlus 인터페이스는 소수점 재생 시간을 보고합니다. 따라서 클라이언트는 정수 값을 가정해서는 안 됩니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 오류 정보입니다. 작업이 성공하면 null이 반환됩니다. 작업이 실패하면 오류 정보가 반환됩니다. + + + + 오류 코드 + + + + 오류 메시지 + + + + 비디오 생성 작업의 ID + + + + 작업에 사용된 모델의 이름과 버전 + + + + 생성된 비디오의 컨테이너 형식(mp4 또는 mov)으로, `content`의 형제 필드로 최상위에 반환됩니다. Seedance 비디오 작업 조회가 이를 반환하는 위치입니다. BytePlus 자체 필드로, 변경 없이 전달됩니다. + + + + 생성된 비디오의 해상도입니다(예: `1080p`). BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + + + 작업에 실제로 사용된 생성 시드입니다. BytePlus 자체 필드로, 성공한 비디오 작업에서 반환되며 변경 없이 전달됩니다. + + 형식: `int64` + + + + 작업의 상태 + + 가능한 값: `queued`, `running`, `cancelled`, `succeeded`, `failed`, `expired` + + + + 작업이 마지막으로 업데이트된 시간입니다. 값은 초 단위의 UNIX 타임스탬프입니다. + + + + 요청에 대한 토큰 사용량 + + + + 모델이 생성한 토큰 수 + + + + 비디오 생성 모델의 경우 입력 토큰 수는 계산되지 않고 기본값이 0입니다. 따라서 total_tokens = completion_tokens입니다. + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 출력 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-5-pro-251215", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx b/ko/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx new file mode 100644 index 000000000..4f3a9d269 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router로 Seededit 3.0 I2I 250628 사용하기" +description: "Comfy Router를 통해 byteplus/seededit-3-0-i2i-250628을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seededit 3.0 I2I 250628" +translationSourceHash: ac63c117 +translationFrom: development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx +translationBlockHashes: + "_intro": b2e7faed + "Quick start": 133e47db + "Schema": fe63d102 + "Examples": 130ffbde +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seededit-3-0-i2i-250628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seededit-3-0-i2i-250628`의 API 레퍼런스입니다. 이 모델은 BytePlus에서 제공하며 Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기 하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `byteplus/seededit-3-0-i2i-250628` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seededit-3-0-i2i-250628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seededit-3-0-i2i-250628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 스키마 + +### 입력 + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 기본값은 2.5, seededit-3-0-i2i-250628의 기본값은 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `float` + + + + Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0과 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력하세요. Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(멀티 이미지 블렌딩 예시 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +• Base64 인코딩: 형식은 data:image/\;base64,\이어야 합니다. 참고: \은 소문자여야 합니다(예: data:image/png;base64,\). + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함하여 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 제한을 초과할 수 있는 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다: +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 webp, bmp, tiff, gif도 지원하며, seedream-5.0-pro는 heic와 heif도 지원합니다) +• 가로세로 비율(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5 및 4.0의 경우 [1/16, 16] 범위, seededit-3.0-i2i의 경우 [1/3, 3] 범위 +• 너비와 높이(px): > 14 +• 크기: 10 MB 이하(seedream-5.0-pro의 경우 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000(36,000,000 px) 이하 +• 참조 이미지 최대 14개(seedream-5.0-pro의 경우 10개) + +레이어 분리 시나리오에서는(layer_decomposition 활성화) image가 필수이며 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic와 heif는 지원되지 않음), 최대 30 MB이고, 총 픽셀이 [512x512, 6000x6000] 범위이며 가로세로 비율이 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리를 활성화할지 여부를 제어합니다. seedream-5.0-pro만 이 매개변수를 지원합니다. +true: 레이어 분리 모드입니다. 모델은 단일 입력 이미지를 하나의 기본 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치와 콘텐츠 정보를 반환합니다. 여기에는 쌓임 순서(z_index), 바운딩 박스(bounding_box), 이름(name) 및 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며 레이어 분리를 수행하지 않습니다. +레이어 분리 모드 관련 참고 사항: 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 단일 레이어라도 생성에 실패하면 전체 요청이 실패합니다. 부분 성공은 지원되지 않습니다. 반환되는 이미지는 최대 17개(기본 이미지 1개 + 레이어 16개)입니다. sequential_image_generation, sequential_image_generation_options, tools 및 stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원되는 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128 및 seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 값이 누락된 경우 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + 프롬프트 최적화 기능에 대한 구성입니다. seedream-5.0-pro/5.0-lite/4.5(표준 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 평균적인 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 기본 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(layer_decomposition이 활성화된 seedream-5.0-pro)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답에 반환되는 생성된 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5 및 4.0에서만 지원됩니다(seedream-5.0-pro에서는 지원되지 않음). 유효한 값: +auto: 자동 모드에서는 사용자의 프롬프트를 기반으로 모델이 여러 이미지를 반환할지 여부와 포함할 이미지 수를 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 하나의 이미지만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). +배치 이미지 생성 기능에 대한 설정입니다. 이 파라미터는 sequential_image_generation이 auto로 설정된 경우에만 적용됩니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성된 이미지의 크기(픽셀 단위의 너비 x 높이)를 지정합니다. [512x512, 2048x2048] 사이여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이 픽셀입니다. 현재는 adaptive만 지원합니다. +"seedream-4-0-250828": 생성할 이미지의 규격을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [1024x1024, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, ~3072x3072], 가로세로 비율: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다(함께 사용할 수 없음). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 가로세로 비율, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 1024x1024, 총 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 가로세로 비율: [1/16, 16] +layer_decomposition이 활성화된 "seedream-5-0-pro-260628": 해상도 수준의 방법만 지원합니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 가로세로 비율로 지정된 해상도에 출력되며, 각 레이어는 원본 이미지에서의 가로세로 비율을 유지한 채 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 가로세로 비율을 기준으로 출력합니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로 출력되며, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 캡처하기 때문에 명시적으로 전달된 stream 플래그를 false로 확정합니다. v1 프록시에서 이 필드는 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). false = 모든 출력 이미지가 한 번에 반환됩니다. true = 각 출력 이미지가 생성되는 즉시 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. false = 워터마크 없음, true = 'AI generated' 라벨이 있는 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seededit-3-0-i2i-250628/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 요청이 생성된 시간을 나타내는 Unix 타임스탬프(초 단위) + + + + 생성된 이미지에 대한 정보를 포함합니다. +레이어 분리 시나리오에서는 배열의 첫 번째 요소가 베이스 이미지(z_index=0)이고, 그다음 요소들은 레이어이며 z_index가 증가하는 순서로 정렬됩니다. + + + + Base64로 인코딩된 이미지 데이터(response_format이 "b64_json"인 경우) + + + + 현재 레이어가 베이스 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 이 필드는 레이어만 반환하며, 베이스 이미지는 캔버스 전체를 덮으므로 bounding_box를 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 레이어 바운딩 박스의 절대 픽셀 좌표로, 왼쪽 위 모서리가 (0, 0)인 출력 베이스 이미지의 좌표계를 기준으로 합니다. 좌표 형식: [left, top, right, bottom]. + + + + 베이스 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑된, 레이어 바운딩 박스의 천분율(per-mille) 양자화(정규화) 좌표이며, 최대 1000에서 잘립니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(색상, 상태, 재질 등)을 제공합니다. 이 필드는 레이어만 반환하며, 베이스 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 대상의 특성으로부터 모델이 자동으로 생성합니다. 이 필드는 레이어만 반환하며, 베이스 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. 이 필드는 seedream-5.0-pro만 지원합니다. + + + + 이미지의 너비와 높이(픽셀)이며, 형식은 \x\입니다. 이 매개변수는 seedream-5.0-pro, 5.0-lite, 4.5, 4.0만 지원합니다. + + + + 이미지 다운로드 URL(response_format이 "url"인 경우) + + 형식: `uri` + + + + 레이어의 적층 순서로, 아래에서 위로 갈수록 증가합니다. 0은 가장 아래 레이어(베이스 이미지)이고, 값이 클수록 위에 위치합니다. 레이어를 올바른 적층 순서로 다시 조합해 완성된 이미지로 만들 때 사용합니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 오류 정보(있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID + + + + + + + + 모델이 생성한 이미지 수 + + + + 모델에 입력된 이미지 수입니다. 이 필드는 seedream-5.0-pro만 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seededit-3-0-i2i-250628", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx b/ko/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx new file mode 100644 index 000000000..58e2a3025 --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router로 Seedream 3.0 T2I 250415 사용하기" +description: "Comfy Router를 통해 byteplus/seedream-3-0-t2i-250415를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seedream 3.0 T2I 250415" +translationSourceHash: 0f41197b +translationFrom: development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx +translationBlockHashes: + "_intro": dafe6167 + "Quick start": 42b1f4f6 + "Schema": c6abe2a5 + "Examples": 61ceb30b +--- +{/* 생성된 파일. router-schemas/byteplus/seedream-3-0-t2i-250415.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 BytePlus에서 제공하는 `byteplus/seedream-3-0-t2i-250415`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `byteplus/seedream-3-0-t2i-250415` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-3-0-t2i-250415", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-3-0-t2i-250415", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 스키마 + +### 입력 + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지를 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 기본값은 2.5이고 seededit-3-0-i2i-250628의 기본값은 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `float` + + + + Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0, 그리고 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력합니다. Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(다중 이미지 블렌딩 예시 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL이 접근 가능한지 확인하세요. +• Base64 인코딩: 형식은 data:image/\;base64,\이어야 합니다. 참고: \은 소문자여야 합니다. 예: data:image/png;base64,\. + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함한 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 한도를 초과하는 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다. +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 webp, bmp, tiff, gif도 지원하며, seedream-5.0-pro는 heic와 heif도 지원합니다) +• 가로세로 비율(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5 및 4.0의 경우 [1/16, 16] 범위, seededit-3.0-i2i의 경우 [1/3, 3] 범위 +• 너비와 높이(px): > 14 +• 크기: 10 MB 이하 (seedream-5.0-pro는 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000(36,000,000 px) 이하 +• 참조 이미지 최대 14개 (seedream-5.0-pro는 10개) + +레이어 분리 시나리오(layer_decomposition 활성화)에서는 image가 필수이며 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic와 heif는 지원되지 않음), 최대 30 MB이고 총 픽셀이 [512x512, 6000x6000] 범위, 가로세로 비율이 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리 활성화 여부를 제어합니다. seedream-5.0-pro만 이 매개변수를 지원합니다. +true: 레이어 분리 모드입니다. 모델이 단일 입력 이미지를 하나의 기본 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치와 콘텐츠 정보를 반환합니다. 여기에는 스태킹 순서(z_index), 바운딩 박스(bounding_box), 이름(name) 및 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며 레이어 분리를 수행하지 않습니다. +레이어 분리 모드 참고 사항: 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 개별 레이어 생성이 하나라도 실패하면 전체 요청이 실패하며 부분 성공은 지원되지 않습니다. 최대 17개 이미지(기본 이미지 1개 + 레이어 16개)가 반환됩니다. sequential_image_generation, sequential_image_generation_options, tools 및 stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128 및 seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations로의 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우기 때문에 Router 호출자는 생략하기 때문입니다. + + + + 프롬프트 최적화 기능에 대한 설정입니다. seedream-5.0-pro/5.0-lite/4.5(standard 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 평균 수준의 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 기본 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(layer_decomposition이 활성화된 seedream-5.0-pro)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답으로 반환되는 생성된 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5 및 4.0에서만 지원됩니다(seedream-5.0-pro는 지원되지 않음). 유효한 값: +auto: 자동 모드에서 모델이 사용자의 프롬프트에 따라 여러 이미지를 반환할지와 몇 개의 이미지를 포함할지를 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 하나의 이미지만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0에서만 이 매개변수를 지원합니다(seedream-5.0-pro에서는 지원되지 않음). +배치 이미지 생성 기능에 대한 설정입니다. 이 매개변수는 sequential_image_generation이 auto로 설정된 경우에만 적용됩니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성할 이미지의 크기(픽셀 단위 너비 x 높이)를 지정합니다. [512x512, 2048x2048] 사이여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이(픽셀)입니다. 현재는 adaptive만 지원합니다. +"seedream-4-0-250828": 생성할 이미지의 규격을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [1024x1024, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, ~3072x3072], 가로세로 비율: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다(함께 사용할 수는 없습니다). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 가로세로 비율, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 1024x1024, 총 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 가로세로 비율: [1/16, 16] +layer_decomposition이 활성화된 "seedream-5-0-pro-260628": 해상도 단위 방법만 지원합니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 가로세로 비율로 지정된 해상도로 출력되며, 각 레이어는 원본 이미지에서 가졌던 가로세로 비율을 유지하면서 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 가로세로 비율을 기준으로 출력합니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 캡처하므로 명시적으로 전달된 stream 플래그를 거짓으로 처리합니다. v1 프록시에서는 이 필드가 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0에서만 이 매개변수를 지원합니다(seedream-5.0-pro에서는 지원되지 않음). false = 모든 출력 이미지가 한 번에 반환됩니다. true = 각 출력 이미지가 생성된 직후 즉시 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. false = 워터마크 없음, true = 'AI generated' 라벨이 포함된 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seedream-3-0-t2i-250415/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + 요청이 생성된 시간을 나타내는 Unix 타임스탬프(초 단위) + + + + 생성된 이미지에 대한 정보를 포함합니다. +레이어 분리 시나리오에서 배열의 첫 번째 요소는 기본 이미지(z_index=0)이며, 그 뒤의 요소들은 z_index가 커지는 순서로 정렬된 레이어입니다. + + + + Base64로 인코딩된 이미지 데이터(response_format이 "b64_json"인 경우) + + + + 현재 레이어가 기본 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 레이어만 이 필드를 반환하며, 기본 이미지는 전체 캔버스를 차지하므로 bounding_box를 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 왼쪽 위 모서리를 (0, 0)으로 하는 출력 기본 이미지의 좌표계를 기준으로 한, 레이어 바운딩 박스의 절대 픽셀 좌표입니다. 좌표 형식: [left, top, right, bottom]. + + + + 기본 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑하고 최대 1000에서 잘라낸, 레이어 바운딩 박스의 천분율로 양자화된(정규화된) 좌표입니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(색상, 상태, 재질 등)을 제공합니다. 레이어만 이 필드를 반환하며 기본 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 대상의 특성으로부터 모델이 자동으로 생성합니다. 레이어만 이 필드를 반환하며 기본 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 이미지의 너비와 높이(픽셀)이며, 형식은 \x\입니다. seedream-5.0-pro, 5.0-lite, 4.5, 4.0만 이 매개변수를 지원합니다. + + + + 이미지 다운로드용 URL(response_format이 "url"인 경우) + + 형식: `uri` + + + + 레이어의 쌓임 순서로, 아래에서 위로 갈수록 커집니다. 0은 가장 아래 레이어(기본 이미지)이며 값이 클수록 더 위에 놓입니다. 레이어를 올바른 쌓임 순서로 다시 조합해 완전한 이미지로 만들 때 사용합니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 오류 정보(있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID + + + + + + + + 모델이 생성한 이미지 수 + + + + 모델에 입력된 이미지 수입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-3-0-t2i-250415", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx b/ko/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx new file mode 100644 index 000000000..5fe55e08d --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router에서 Seedream 4.0 250828 사용하기" +description: "Comfy Router를 통해 byteplus/seedream-4-0-250828을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Seedream 4.0 250828" +translationSourceHash: 5f0d0629 +translationFrom: development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx +translationBlockHashes: + "_intro": 6d2bb0be + "Quick start": aadf580d + "Schema": 38af2b63 + "Examples": c5d15057 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/byteplus/seedream-4-0-250828.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 BytePlus에서 제공하는 `byteplus/seedream-4-0-250828`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `byteplus/seedream-4-0-250828` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-0-250828", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-0-250828", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 스키마 + +### 입력 + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 기본값은 2.5이고 seededit-3-0-i2i-250628은 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5, 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `실수` + + + + Seedream-5.0-pro, 5.0-lite, 4.5, 4.0 및 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력합니다. Seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(멀티 이미지 블렌딩 예시 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +• Base64 인코딩: 형식은 `data:image/\;base64,\`이어야 합니다. 참고: `\`은 소문자여야 합니다(예: `data:image/png;base64,\`). + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함하여 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 한도를 초과하는 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다: +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 webp, bmp, tiff, gif도 지원하며, seedream-5.0-pro는 heic와 heif도 지원합니다) +• 가로세로 비율(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 [1/16, 16] 범위, seededit-3.0-i2i는 [1/3, 3] 범위 +• 너비와 높이(px): > 14 +• 크기: 10 MB 이하 (seedream-5.0-pro는 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000(36,000,000 px) 이하 +• 참조 이미지 최대 14개 (seedream-5.0-pro는 10개) + +레이어 분리 시나리오(layer_decomposition 활성화)에서는 image가 필수이며 단일 입력 이미지만 지원됩니다(여러 이미지를 전달하면 오류가 반환됩니다). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic와 heif는 지원되지 않음), 최대 30 MB이고 총 픽셀은 [512x512, 6000x6000] 범위, 가로세로 비율은 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리 사용 여부를 제어합니다. seedream-5.0-pro만 이 매개변수를 지원합니다. +true: 레이어 분리 모드입니다. 모델은 단일 입력 이미지를 하나의 기본 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치 및 콘텐츠 정보를 반환합니다. 여기에는 적층 순서(z_index), 바운딩 박스(bounding_box), 이름(name), 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며, 레이어 분리가 수행되지 않습니다. +레이어 분리 모드 참고 사항: 단일 입력 이미지만 지원됩니다(여러 이미지를 전달하면 오류가 반환됨). 단일 레이어라도 생성에 실패하면 전체 요청이 실패하며, 부분 성공은 지원되지 않습니다. 반환되는 이미지는 최대 17개(기본 이미지 1개 + 레이어 16개)입니다. sequential_image_generation, sequential_image_generation_options, tools, stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원되는 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128, seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 값을 생략한 경우 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문이며, 따라서 Router 호출자는 이를 생략합니다. + + + + 프롬프트 최적화 기능에 대한 구성입니다. seedream-5.0-pro/5.0-lite/4.5(표준 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 평균 수준의 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 기본 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(layer_decomposition이 활성화된 seedream-5.0-pro)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답으로 반환되는 생성 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5, 4.0에서만 지원됩니다(seedream-5.0-pro는 지원하지 않음). 유효한 값: +auto: 자동 모드에서는 모델이 사용자의 프롬프트를 기반으로 여러 이미지를 반환할지 여부와 포함할 이미지 수를 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 하나의 이미지만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0만 이 매개변수를 지원합니다 (seedream-5.0-pro는 지원하지 않습니다). +배치 이미지 생성 기능에 대한 설정입니다. 이 매개변수는 sequential_image_generation이 auto로 설정된 경우에만 유효합니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성할 이미지의 크기(픽셀 단위의 너비 x 높이)를 지정합니다. [512x512, 2048x2048] 사이여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이(픽셀)입니다. 현재 adaptive만 지원합니다. +"seedream-4-0-250828": 생성할 이미지의 사양을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [1024x1024, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, ~3072x3072], 가로세로 비율: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다 (함께 사용할 수 없음). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 가로세로 비율, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 1024x1024, 총 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 가로세로 비율: [1/16, 16] +layer_decomposition이 활성화된 "seedream-5-0-pro-260628": 해상도 수준의 방법만 지원됩니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 가로세로 비율로 지정된 해상도에서 출력되며, 각 레이어는 원본 이미지에서 가졌던 가로세로 비율을 유지하면서 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 가로세로 비율을 기준으로 출력됩니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 캡처하기 때문에 명시적으로 전달된 stream 플래그를 false로 고정합니다. v1 프록시에서 이 필드는 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0만 이 매개변수를 지원합니다 (seedream-5.0-pro는 지원하지 않습니다). false = 모든 출력 이미지가 한 번에 반환됩니다. true = 각 출력 이미지가 생성된 직후 즉시 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. false = 워터마크 없음, true = 'AI generated' 라벨이 있는 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seedream-4-0-250828/openapi.json`에서 제공하는 스키마를 기반으로 생성된 문서이며, 요청이 공급자에게 도달하기 전에 호출을 검증할 때 사용하는 문서와 동일합니다.### 출력 + + + 요청이 생성된 시간을 나타내는 Unix 타임스탬프(초 단위) + + + + 생성된 이미지에 대한 정보를 포함합니다. +레이어 분리 시나리오에서는 배열의 첫 번째 요소가 기본 이미지(z_index=0)이고, 그 뒤의 요소들은 z_index가 증가하는 순서로 정렬된 레이어입니다. + + + + Base64로 인코딩된 이미지 데이터 (response_format이 "b64_json"인 경우) + + + + 현재 레이어가 기본 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 이 필드는 레이어만 반환하며, 기본 이미지는 전체 캔버스를 차지하므로 bounding_box를 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 레이어 바운딩 박스의 절대 픽셀 좌표로, 좌측 상단 모서리를 (0, 0)으로 하는 출력 기본 이미지의 좌표계를 사용합니다. 좌표 형식: [left, top, right, bottom]. + + + + 레이어 바운딩 박스의 천분율(per-mille) 양자화(정규화) 좌표로, 기본 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑되며 최대 1000에서 잘립니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(색상, 상태, 재질 등)을 제공합니다. 이 필드는 레이어만 반환하며, 기본 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 대상의 특성으로부터 모델이 자동으로 생성합니다. 이 필드는 레이어만 반환하며, 기본 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 이미지의 너비와 높이(픽셀)로, \x\ 형식입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0만 이 파라미터를 지원합니다. + + + + 이미지 다운로드 URL (response_format이 "url"인 경우) + + 형식: `uri` + + + + 레이어의 적층 순서로, 아래에서 위로 갈수록 증가합니다. 0은 가장 아래 레이어(기본 이미지)이며, 값이 클수록 위에 놓입니다. 이를 사용해 레이어를 올바른 적층 순서로 재구성하여 완전한 이미지로 만들 수 있습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 오류 정보 (있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID + + + + + + + + 모델이 생성한 이미지 수 + + + + 모델에 입력된 이미지 수입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-0-250828", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx b/ko/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx new file mode 100644 index 000000000..98063825f --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router에서 Seedream 4.5 251128 사용하기" +description: "Comfy Router를 통해 byteplus/seedream-4-5-251128을 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedream 4.5 251128" +translationSourceHash: efa9ee24 +translationFrom: development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx +translationBlockHashes: + "_intro": 598e0279 + "Quick start": 8ba3ab6e + "Schema": 9685e55c + "Examples": 3fde19f6 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/byteplus/seedream-4-5-251128.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-4-5-251128`에 대한 API 레퍼런스이며, Comfy Router가 BytePlus에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `byteplus/seedream-4-5-251128` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-5-251128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-5-251128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### Input + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지를 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 기본값은 2.5이고 seededit-3-0-i2i-250628은 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5, 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `float` + + + + Seedream-5.0-pro, 5.0-lite, 4.5, 4.0 및 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력하세요. Seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(다중 이미지 블렌딩 예제 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +• Base64 인코딩: 형식은 data:image/\;base64,\이어야 합니다. 참고: \은 소문자여야 합니다(예: data:image/png;base64,\). + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함하여 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 한도를 초과하는 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다: +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 webp, bmp, tiff, gif도 지원하며, seedream-5.0-pro는 heic와 heif도 지원합니다) +• 가로세로 비율(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 [1/16, 16] 범위, seededit-3.0-i2i는 [1/3, 3] 범위 +• 너비와 높이(px): 14 초과 +• 크기: 10 MB 이하 (seedream-5.0-pro는 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000(36,000,000 px) 이하 +• 최대 14개의 참조 이미지 (seedream-5.0-pro는 10개) + +레이어 분리 시나리오(layer_decomposition 활성화)에서는 image가 필수이며 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic와 heif는 지원되지 않음), 최대 30 MB이고 총 픽셀은 [512x512, 6000x6000] 범위, 가로세로 비율은 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리 사용 여부를 제어합니다. 이 매개변수는 seedream-5.0-pro만 지원합니다. +true: 레이어 분리 모드입니다. 모델이 단일 입력 이미지를 하나의 기본 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치 및 콘텐츠 정보를 반환합니다. 여기에는 적층 순서(z_index), 바운딩 박스(bounding_box), 이름(name), 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며 레이어 분리를 수행하지 않습니다. +레이어 분리 모드 참고 사항: 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 개별 레이어 하나라도 생성에 실패하면 전체 요청이 실패하며, 부분 성공은 지원되지 않습니다. 최대 17개의 이미지가 반환됩니다(기본 이미지 1개 + 레이어 16개). sequential_image_generation, sequential_image_generation_options, tools 및 stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원되는 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128, seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문이며, 따라서 Router 호출자는 이를 생략합니다. + + + + 프롬프트 최적화 기능에 대한 구성입니다. seedream-5.0-pro/5.0-lite/4.5(표준 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 평균 수준의 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 기본 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(seedream-5.0-pro에서 layer_decomposition 활성화)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답으로 반환되는 생성된 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 난수 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5, 4.0에서만 지원됩니다(seedream-5.0-pro는 지원하지 않음). 유효한 값: +auto: 자동 모드에서는 사용자의 프롬프트에 따라 여러 이미지를 반환할지 여부와 포함될 이미지 수를 모델이 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 하나의 이미지만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). +배치 이미지 생성 기능에 대한 설정입니다. 이 파라미터는 sequential_image_generation이 auto로 설정된 경우에만 적용됩니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성된 이미지의 크기(픽셀 단위의 너비 x 높이)를 지정합니다. [512x512, 2048x2048] 사이여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이 픽셀입니다. 현재는 adaptive만 지원합니다. +"seedream-4-0-250828": 생성된 이미지의 사양을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [1024x1024, 4096x4096], 종횡비: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, 4096x4096], 종횡비: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, ~3072x3072], 종횡비: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다(함께 사용할 수는 없음). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 종횡비, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 1024x1024, 총 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 종횡비: [1/16, 16] +layer_decomposition이 활성화된 "seedream-5-0-pro-260628": 해상도 수준의 방법만 지원합니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 종횡비로 지정된 해상도에서 출력됩니다. 각 레이어는 원본 이미지에서 가졌던 종횡비를 유지하면서 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 종횡비를 기준으로 출력합니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로 출력되며, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 캡처하기 때문에 명시적으로 제공된 stream 플래그를 거짓으로 고정합니다. v1 프록시에서 이 필드는 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). 거짓 = 모든 출력 이미지를 한 번에 반환합니다. 참 = 각 출력 이미지가 생성된 직후 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. 거짓 = 워터마크 없음, 참 = 'AI generated' 라벨이 있는 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seedream-4-5-251128/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + 요청이 생성된 시각을 나타내는 Unix 타임스탬프(초 단위)입니다. + + + + 생성된 이미지에 대한 정보를 담고 있습니다. +레이어 분리 시나리오에서는 배열의 첫 번째 요소가 베이스 이미지(z_index=0)이고, 이후 요소들은 z_index가 증가하는 순서로 정렬된 레이어입니다. + + + + Base64로 인코딩된 이미지 데이터입니다(response_format이 "b64_json"인 경우). + + + + 현재 레이어가 베이스 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 레이어만 이 필드를 반환하며, 베이스 이미지는 전체 캔버스를 차지하므로 bounding_box를 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 레이어 바운딩 박스의 절대 픽셀 좌표로, 좌측 상단 모서리를 (0, 0)으로 하는 출력 베이스 이미지의 좌표계를 기준으로 합니다. 좌표 형식: [left, top, right, bottom]. + + + + 레이어 바운딩 박스의 천분율로 양자화된(정규화된) 좌표로, 베이스 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑되며 최대 1000에서 잘립니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(예: 색상, 상태, 재질)을 제공합니다. 레이어만 이 필드를 반환하며, 베이스 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 대상의 특성을 바탕으로 모델이 자동 생성합니다. 레이어만 이 필드를 반환하며, 베이스 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 이미지의 너비와 높이(픽셀)로, 형식은 \x\입니다. seedream-5.0-pro, 5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다. + + + + 이미지 다운로드용 URL입니다(response_format이 "url"인 경우). + + 형식: `uri` + + + + 레이어의 적층 순서로, 아래에서 위로 갈수록 증가합니다. 0은 가장 아래의 레이어(베이스 이미지)이며, 값이 클수록 위에 놓입니다. 올바른 적층 순서로 레이어를 다시 합쳐 완전한 이미지를 만들 때 사용합니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 오류 정보(있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID입니다. + + + + + + + + 모델이 생성한 이미지 수입니다. + + + + 모델에 입력된 이미지 수입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-5-251128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx b/ko/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx new file mode 100644 index 000000000..2c9d6cbce --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "Comfy Router로 Seedream 5.0 260128 사용하기" +description: "Comfy Router를 통해 byteplus/seedream-5-0-260128을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seedream 5.0 260128" +translationSourceHash: 2791f0e2 +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx +translationBlockHashes: + "_intro": 7058e811 + "Quick start": e3755750 + "Schema": 66ac7717 + "Examples": 70b6a1f5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-5-0-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 BytePlus에서 제공하는 `byteplus/seedream-5-0-260128`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `byteplus/seedream-5-0-260128` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-260128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-260128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### Input + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 기본값은 2.5이고 seededit-3-0-i2i-250628의 기본값은 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `실수` + + + + Seedream-5.0-pro, 5.0-lite, 4.5, 4.0 및 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력하세요. Seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(다중 이미지 블렌딩 예제 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL에 접근할 수 있는지 확인하세요. +• Base64 인코딩: 형식은 data:image/\;base64,\이어야 합니다. 참고: \은 소문자여야 합니다. 예: data:image/png;base64,\. + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함하여 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 한도를 초과하는 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다: +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5, 4.0은 webp, bmp, tiff, gif도 지원하며, seedream-5.0-pro는 heic와 heif도 지원합니다) +• 가로세로 비율(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5, 4.0의 경우 [1/16, 16] 범위, seededit-3.0-i2i의 경우 [1/3, 3] 범위 +• 너비와 높이(px): > 14 +• 크기: 10 MB 이하 (seedream-5.0-pro의 경우 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000 (36,000,000 px) 이하 +• 참조 이미지 최대 14개 (seedream-5.0-pro의 경우 10개) + +레이어 분리 시나리오(layer_decomposition 활성화)에서는 image가 필수이며 단일 입력 이미지만 지원됩니다(여러 이미지를 전달하면 오류가 반환됩니다). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic와 heif는 지원되지 않음), 최대 30 MB이고 총 픽셀이 [512x512, 6000x6000] 범위, 가로세로 비율이 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리 활성화 여부를 제어합니다. seedream-5.0-pro만 이 매개변수를 지원합니다. +true: 레이어 분리 모드입니다. 모델은 단일 입력 이미지를 하나의 기본 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치 및 콘텐츠 정보를 반환합니다. 여기에는 쌓이는 순서(z_index), 바운딩 박스(bounding_box), 이름(name), 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며 레이어 분리를 수행하지 않습니다. +레이어 분리 모드 참고 사항: 단일 입력 이미지만 지원합니다(여러 이미지를 전달하면 오류가 반환됩니다). 단일 레이어라도 생성에 실패하면 전체 요청이 실패합니다. 부분 성공은 지원되지 않습니다. 최대 17개의 이미지가 반환됩니다(기본 이미지 1개 + 레이어 16개). sequential_image_generation, sequential_image_generation_options, tools, stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원되는 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128, seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400으로 거부합니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 값을 채우기 때문이며, 따라서 Router 호출자는 이를 생략합니다. + + + + 프롬프트 최적화 기능에 대한 구성입니다. seedream-5.0-pro/5.0-lite/4.5(standard 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 평균 수준의 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 기본 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(layer_decomposition이 활성화된 seedream-5.0-pro)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답으로 반환되는 생성 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 랜덤 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5, 4.0에서만 지원됩니다(seedream-5.0-pro에서는 지원되지 않습니다). 유효한 값: +auto: 자동 모드에서는 모델이 사용자의 프롬프트를 기반으로 여러 이미지를 반환할지 여부와 포함할 이미지 수를 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 이미지 하나만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). +배치 이미지 생성 기능 설정입니다. 이 파라미터는 sequential_image_generation이 auto로 설정된 경우에만 적용됩니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성된 이미지의 크기(너비 x 높이, 픽셀)를 지정합니다. [512x512, 2048x2048] 범위여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이 픽셀입니다. 현재는 adaptive만 지원합니다. +"seedream-4-0-250828": 생성할 이미지의 사양을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀로 지정합니다. 기본값: 2048x2048, 총 픽셀: [1024x1024, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀로 지정합니다. 기본값: 2048x2048, 총 픽셀: [2560x1440, ~3072x3072], 가로세로 비율: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다(함께 사용할 수 없음). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 가로세로 비율, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀로 지정합니다. 기본값: 1024x1024, 총 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 가로세로 비율: [1/16, 16] +layer_decomposition이 활성화된 "seedream-5-0-pro-260628": 해상도 수준의 방법만 지원합니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 가로세로 비율로 지정된 해상도에 출력되며, 각 레이어는 원본 이미지에서 가지던 가로세로 비율을 유지한 채 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 가로세로 비율을 기준으로 출력합니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로 출력되며, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 수집하기 때문에 명시적으로 전달된 stream 플래그를 거짓으로 고정합니다. v1 프록시에서는 이 필드가 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0만 이 파라미터를 지원합니다(seedream-5.0-pro는 지원하지 않음). 거짓 = 모든 출력 이미지가 한 번에 반환됩니다. 참 = 각 출력 이미지가 생성된 직후 즉시 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. 거짓 = 워터마크 없음, 참 = 'AI generated' 라벨이 있는 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seedream-5-0-260128/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + 요청이 생성된 시각을 나타내는 Unix 타임스탬프(초 단위) + + + + 생성된 이미지에 대한 정보를 담고 있습니다. +레이어 분리 시나리오에서는 배열의 첫 번째 요소가 기본 이미지(z_index=0)이고, 그 뒤의 요소들은 z_index가 증가하는 순서로 정렬된 레이어입니다. + + + + Base64로 인코딩된 이미지 데이터(response_format이 "b64_json"인 경우) + + + + 현재 레이어가 기본 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 레이어만 이 필드를 반환하며, 기본 이미지는 전체 캔버스를 차지하므로 bounding_box를 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 좌측 상단 모서리를 (0, 0)으로 하는 출력 기본 이미지의 좌표계에서 레이어 바운딩 박스의 절대 픽셀 좌표입니다. 좌표 형식: [left, top, right, bottom]. + + + + 기본 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑되고 최대 1000에서 잘린, 레이어 바운딩 박스의 천분율(per-mille) 양자화(정규화) 좌표입니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(색상, 상태, 재질 등)을 제공합니다. 레이어만 이 필드를 반환하며, 기본 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 피사체의 특성으로부터 모델이 자동으로 생성합니다. 레이어만 이 필드를 반환하며, 기본 이미지는 반환하지 않습니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 이미지의 너비와 높이(픽셀)이며, \x\ 형식입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0만 이 매개변수를 지원합니다. + + + + 이미지 다운로드용 URL(response_format이 "url"인 경우) + + 형식: `uri` + + + + 레이어의 적층 순서로, 아래에서 위로 갈수록 증가합니다. 0은 가장 아래 레이어(기본 이미지)이고, 값이 클수록 위에 위치합니다. 레이어를 올바른 적층 순서로 재구성하여 완전한 이미지로 만들 때 사용합니다. layer_decomposition이 true인 경우에만 반환됩니다. + + + + 오류 정보(있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID + + + + + + + + 모델이 생성한 이미지 수 + + + + 모델에 입력된 이미지 수입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-260128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx b/ko/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx new file mode 100644 index 000000000..b13223a4d --- /dev/null +++ b/ko/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx @@ -0,0 +1,312 @@ +--- +title: "Comfy Router로 Seedream 5.0 Pro 260628 사용하기" +description: "Comfy Router를 통해 byteplus/seedream-5-0-pro-260628을 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Seedream 5.0 Pro 260628" +translationSourceHash: 0171cc6c +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx +translationBlockHashes: + "_intro": f8a92639 + "Quick start": aae3b073 + "Schema": 0936e6ef + "Examples": 60b5bdba +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/byteplus/seedream-5-0-pro-260628.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-5-0-pro-260628`의 API 레퍼런스입니다. Comfy Router가 BytePlus에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `byteplus/seedream-5-0-pro-260628` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-pro-260628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-pro-260628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### Input + + + 출력 이미지가 입력 프롬프트에 얼마나 밀접하게 부합하는지를 제어합니다. 범위 [1, 10]. 값이 높을수록 프롬프트 준수가 강해집니다. seedream-3-0-t2i-250415의 경우 기본값이 2.5이고 seededit-3-0-i2i-250628의 경우 5.5입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0에서는 지원되지 않습니다. + + 범위: `1` ~ `10` + + 형식: `float` + + + + Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0과 seededit-3.0-i2i가 이 매개변수를 지원합니다. + +편집할 이미지의 Base64 인코딩 또는 접근 가능한 URL을 입력합니다. Seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 단일 이미지 또는 여러 이미지 입력을 지원하며(멀티 이미지 블렌딩 예시 참조), seededit-3.0-i2i는 단일 이미지 입력만 지원합니다. + +• 이미지 URL: 이미지 URL에 접근 가능한지 확인하세요. +• Base64 인코딩: 형식은 data:image/\;base64,\이어야 합니다. 참고: \은 소문자여야 합니다. 예: data:image/png;base64,\. + +Comfy Router는 base64 확장과 모든 참조 이미지를 포함하여 전체 JSON 요청을 10 MiB로 제한합니다. 이 전송 한도를 초과할 입력에는 URL을 사용하세요. + +입력 이미지는 다음 요구 사항을 충족해야 합니다: +• 이미지 형식: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5 및 4.0은 webp, bmp, tiff 및 gif도 지원하며, seedream-5.0-pro는 heic 및 heif도 지원) +• 종횡비(너비/높이): seedream-5.0-pro, 5.0-lite, 4.5 및 4.0의 경우 [1/16, 16] 범위, seededit-3.0-i2i의 경우 [1/3, 3] +• 너비 및 높이(px): > 14 +• 크기: 10 MB 이하 (seedream-5.0-pro의 경우 30 MB) +• 총 픽셀: seedream-5.0-pro의 경우 6000x6000 (36,000,000 px) 이하 +• 최대 14개의 참조 이미지 (seedream-5.0-pro의 경우 10개) + +레이어 분리 시나리오(layer_decomposition 활성화)에서는 image가 필수이며 단일 입력 이미지만 지원됩니다(여러 이미지를 전달하면 오류가 반환됨). 입력 이미지는 png, jpeg, webp, bmp, tiff 또는 gif여야 하며(heic 및 heif는 지원되지 않음), 최대 30 MB이고 총 픽셀은 [512x512, 6000x6000] 범위, 종횡비는 [1/16, 16] 범위여야 합니다. + + + + 레이어 분리 활성화 여부를 제어합니다. seedream-5.0-pro만 이 매개변수를 지원합니다. +true: 레이어 분리 모드입니다. 모델이 단일 입력 이미지를 하나의 베이스 이미지와 여러 레이어(최대 16개)로 분해하고, 생성된 각 레이어의 위치와 콘텐츠 정보를 반환합니다. 여기에는 스태킹 순서(z_index), 바운딩 박스(bounding_box), 이름(name) 및 설명(description)이 포함됩니다. +false: 표준 이미지 생성 모드이며, 레이어 분리를 수행하지 않습니다. +레이어 분리 모드 관련 참고 사항: 단일 입력 이미지만 지원됩니다(여러 이미지를 전달하면 오류가 반환됨). 단일 레이어라도 생성에 실패하면 전체 요청이 실패하며, 부분 성공은 지원되지 않습니다. 최대 17개의 이미지가 반환됩니다(베이스 이미지 1개 + 레이어 16개). sequential_image_generation, sequential_image_generation_options, tools 및 stream을 전달하면 오류가 반환됩니다. + + + + 모델 식별자입니다. 지원 모델: seedream-3-0-t2i-250415, seededit-3-0-i2i-250628, seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128 및 seedream-5-0-pro-260628. POST /proxy/byteplus/api/v3/images/generations에 대한 직접 v1 호출은 반드시 이를 제공해야 합니다. 프록시는 다른 값이나 누락된 값을 400과 함께 거부합니다. 이 스키마의 `required` 목록에 포함되지 않은 이유는 Comfy Router가 /v2/models/byteplus/\{model}의 `{model}` 경로 세그먼트에서 이를 채우기 때문에 Router 호출자는 이를 생략하기 때문입니다. + + + + 프롬프트 최적화 기능의 구성입니다. seedream-5.0-pro/5.0-lite/4.5(표준 모드만 지원)와 seedream-4.0만 이 매개변수를 지원합니다. + + + + 프롬프트 최적화 기능의 모드를 설정합니다. standard = 더 높은 품질, 더 긴 생성 시간. fast = 더 빠르지만 다소 평균적인 품질. + + 가능한 값: `standard`, `fast` + + + + 출력 이미지의 형식을 지정합니다. seedream-5.0-pro와 5.0-lite만 이 매개변수를 지원합니다. 레이어 분리 시나리오에서 output_format은 베이스 이미지의 형식만 제어하며, 모든 레이어는 항상 png로 출력됩니다. + + 가능한 값: `png`, `jpeg` + + + + 이미지 생성 또는 변환을 위한 텍스트 설명입니다. +레이어 분리 시나리오(seedream-5.0-pro에서 layer_decomposition 활성화)에서는 선택 사항입니다. 프롬프트를 제공하면 모델이 프롬프트 의도에 따라 지정한 요소를 인식하고 분리합니다. 프롬프트를 제공하지 않으면 모델이 이미지의 모든 주요 요소를 자동으로 감지하여 독립적인 레이어로 분리합니다. + + + + 응답으로 반환되는 생성 이미지의 형식을 지정합니다 + + 가능한 값: `url`, `b64_json` + + + + 이미지 생성의 무작위성을 제어하는 랜덤 시드입니다. 범위: [-1, 2147483647]. 지정하지 않으면 시드가 자동으로 생성됩니다. 동일한 출력을 재현하려면 동일한 시드 값을 사용하세요. + + 범위: `-1` ~ `2147483647` + + + + 배치 생성 기능을 비활성화할지 여부를 제어합니다. 이 매개변수는 seedream-5.0-lite, 4.5 및 4.0에서만 지원됩니다(seedream-5.0-pro는 지원하지 않음). 유효한 값: +auto: 자동 모드에서는 사용자의 프롬프트를 기반으로 모델이 여러 이미지를 반환할지 여부와 포함할 이미지 수를 자동으로 결정합니다. +disabled: 배치 생성 기능을 비활성화합니다. 모델은 하나의 이미지만 생성합니다. + + 가능한 값: `auto`, `disabled` + + + + seedream-5.0-lite, 4.5, 4.0만 이 매개변수를 지원합니다 (seedream-5.0-pro는 지원하지 않음). +배치 이미지 생성 기능에 대한 설정입니다. 이 매개변수는 sequential_image_generation이 auto로 설정된 경우에만 적용됩니다. + + + + 이 요청에서 생성할 최대 이미지 수를 지정합니다. 입력 참조 이미지 수 + 생성된 이미지 수 ≤ 15. + + 범위: `1` ~ `15` + + + + "seedream-3-0-t2i-250415": 생성된 이미지의 크기(픽셀 단위의 너비 x 높이)를 지정합니다. [512x512, 2048x2048] 사이여야 합니다. +"seededit-3-0-i2i-250628": 생성된 이미지의 너비와 높이(픽셀)입니다. 현재는 adaptive만 지원합니다. +"seedream-4-0-250828": 생성된 이미지의 사양을 설정합니다. 두 가지 방법을 사용할 수 있지만 함께 사용할 수는 없습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 1K, 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 전체 픽셀: [1024x1024, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-4-5-251128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 4K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 전체 픽셀: [2560x1440, 4096x4096], 가로세로 비율: [1/16, 16] +"seedream-5-0-260128": 두 가지 방법을 사용할 수 있습니다. + 방법 1 | 해상도를 지정합니다. 선택 가능한 값: 2K, 3K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 2048x2048, 전체 픽셀: [2560x1440, ~3072x3072], 가로세로 비율: [1/16, 16] +"seedream-5-0-pro-260628": 두 가지 방법을 사용할 수 있습니다 (함께 사용할 수는 없음). + 방법 1 | 해상도를 지정하고 프롬프트에 이미지의 가로세로 비율, 형태 또는 용도를 설명합니다. 최종 크기는 모델이 결정합니다. 선택 가능한 값: 1K, 2K + 방법 2 | 너비와 높이를 픽셀 단위로 지정합니다. 기본값: 1024x1024, 전체 픽셀: [1024x1024 (1048576), 2048x2048 (4194304)], 가로세로 비율: [1/16, 16] +layer_decomposition을 활성화한 "seedream-5-0-pro-260628": 해상도 수준의 방법만 지원합니다. 선택 가능한 값: 1K, 1.5K, 2K, auto. 기본값: auto. + 기본 이미지는 원본 입력 이미지의 가로세로 비율로 지정된 해상도에서 출력되며, 각 레이어는 원본 이미지에서 가진 가로세로 비율을 유지하면서 지정된 해상도에 가깝게 출력됩니다. + auto: 입력 이미지의 크기와 가로세로 비율을 기준으로 출력됩니다. [1280x720, ~2048x2048] 범위의 입력은 원본 입력 크기로 출력되고, 1K보다 작은 입력은 1K로, 2K보다 큰 입력은 2K로 출력됩니다. + + + + Comfy Router는 완전한 JSON 결과를 캡처하기 때문에 명시적으로 전달된 stream 플래그를 false로 고정합니다. v1 프록시에서 이 필드는 스트리밍 출력 모드를 활성화할지 여부를 제어합니다. seedream-5.0-lite, 4.5, 4.0만 이 매개변수를 지원합니다 (seedream-5.0-pro는 지원하지 않음). false = 모든 출력 이미지가 한 번에 반환됩니다. true = 각 출력 이미지가 생성된 직후 즉시 반환됩니다. + + + + 생성된 이미지에 워터마크를 추가할지 여부를 지정합니다. false = 워터마크 없음, true = 'AI generated' 레이블이 포함된 워터마크 추가 + + +Router가 `GET /v2/models/byteplus/seedream-5-0-pro-260628/openapi.json`에서 제공하는 스키마, 즉 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서에서 생성되었습니다.### 출력 + + + 요청이 생성된 시각을 나타내는 Unix 타임스탬프(초 단위)입니다. + + + + 생성된 이미지에 대한 정보를 담고 있습니다. +레이어 분리 시나리오에서는 배열의 첫 번째 요소가 베이스 이미지(z_index=0)이고, 그다음 요소들은 z_index가 증가하는 순서로 정렬된 레이어입니다. + + + + Base64로 인코딩된 이미지 데이터입니다(response_format이 "b64_json"인 경우). + + + + 현재 레이어가 베이스 이미지 내에서 차지하는 영역의 바운딩 박스 정보입니다. 레이어만 이 필드를 반환하며, 베이스 이미지는 전체 캔버스를 차지하므로 bounding_box를 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 레이어 바운딩 박스의 절대 픽셀 좌표로, 왼쪽 위 모서리를 (0, 0)으로 하는 출력 베이스 이미지의 좌표계를 기준으로 합니다. 좌표 형식: [left, top, right, bottom]. + + + + 레이어 바운딩 박스의 천분율로 양자화된(정규화된) 좌표로, 베이스 이미지 크기를 기준으로 [0, 1000]의 이산 정수 범위에 비례적으로 매핑되며 최대 1000에서 잘립니다. 좌표 형식: [left, top, right, bottom]. + + + + 현재 분리된 요소에 대한 상세 설명으로, name보다 풍부한 레이어 특성(예: 색상, 상태, 재질)을 제공합니다. 레이어만 이 필드를 반환하며 베이스 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 현재 분리된 요소의 이름/레이블로, 분리된 대상의 특성으로부터 모델이 자동으로 생성합니다. 레이어만 이 필드를 반환하며 베이스 이미지는 반환하지 않습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 출력 이미지의 파일 형식입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 이미지의 너비와 높이(픽셀)로, \x\ 형식입니다. seedream-5.0-pro, 5.0-lite, 4.5 및 4.0만 이 파라미터를 지원합니다. + + + + 이미지 다운로드 URL입니다(response_format이 "url"인 경우). + + 형식: `uri` + + + + 레이어의 적층 순서로, 아래에서 위로 갈수록 증가합니다. 0은 가장 아래 레이어(베이스 이미지)이며, 값이 클수록 위에 위치합니다. 이 값을 사용해 레이어를 올바른 적층 순서로 다시 합성하여 완전한 이미지로 만들 수 있습니다. layer_decomposition이 참인 경우에만 반환됩니다. + + + + 오류 정보(있는 경우) + + + + 오류 코드 + + + + 오류 메시지 + + + + 요청에 사용된 모델 ID + + + + + + + + 모델이 생성한 이미지 수 + + + + 모델에 입력된 이미지 수입니다. seedream-5.0-pro만 이 필드를 지원합니다. + + + + 모델이 생성한 그림에 사용된 토큰 수입니다. + + + + 이 요청에서 소비된 총 토큰 수입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-pro-260628", + "usage": { + "generated_images": 1 + } +} +``` + + diff --git a/ko/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx b/ko/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx new file mode 100644 index 000000000..47b5e238c --- /dev/null +++ b/ko/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx @@ -0,0 +1,123 @@ +--- +title: "Comfy Router로 Eleven Sfx V2 사용하기" +description: "Comfy Router를 통해 elevenlabs/eleven_sfx_v2를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Eleven Sfx V2" +translationSourceHash: cd7478d8 +translationFrom: development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx +translationBlockHashes: + "_intro": 776f30c7 + "Quick start": 7e465cc1 + "Schema": fc56be8b + "Examples": 6f6a9333 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/elevenlabs/eleven_sfx_v2.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Elevenlabs가 제공하고 Comfy Router가 서비스하는 `elevenlabs/eleven_sfx_v2`의 API 레퍼런스입니다. + +## 빠른 시작 + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `elevenlabs/eleven_sfx_v2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_sfx_v2", + { + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_sfx_v2", { + duration_seconds: 5, + text: "A distant rumble of thunder rolling across a valley.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration_seconds\": 5, \"text\": \"A distant rumble of thunder rolling across a valley.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성될 사운드의 재생 시간(초)입니다. +최소 0.5, 최대 30이어야 합니다. +이 라우트에서는 필수입니다. 필드가 null일 때 최적의 재생 시간을 추정하는 업스트림 ElevenLabs API와 달리, 이 라우트는 이 필드를 생략한 요청을 400 "Duration is required"로 거부합니다. +이 필드가 nullable로 남아 있는 이유는 명시적 null이 올바른 형식의 문서가 되도록 하기 위함일 뿐이며, 그래도 여전히 거부됩니다. +이 값은 요청이 과금되는 기준 수량입니다. + + 범위: `0.5` ~ `30` + + 형식: `double` + + + + 부드럽게 반복되는 사운드 효과를 생성할지 여부입니다. +ElevenLabs는 이 옵션이 'eleven_text_to_sound_v2' 모델에서만 사용 가능하다고 문서화하고 있는데, 이 라우트는 해당 모델을 허용하지 않으므로(model_id 참조) 여기에서는 아무 효과가 없을 수 있습니다. + + + + 사운드 생성에 사용할 모델 ID입니다. 이 라우트는 'eleven_sfx_v2'만 허용하며, 그 외의 값은 요청이 ElevenLabs에 도달하기 전에 400으로 거부됩니다. 이 스키마의 `required` 목록에 포함되지 않은 이유는 Comfy Router가 /v2/models/elevenlabs/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략하기 때문입니다. + + + + prompt influence가 높을수록 생성 결과가 프롬프트를 더 밀접하게 따르며, 생성 결과의 변동성도 줄어듭니다. +0과 1 사이의 값이어야 합니다. 기본값은 0.3입니다. + + 범위: `0` ~ `1` + + 형식: `double` + + + + 사운드 효과로 변환될 텍스트입니다. + + +Router가 `GET /v2/models/elevenlabs/eleven_sfx_v2/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + +Router는 이 모델에 대한 출력 스키마를 게시하지 않습니다. + +## 예시 + +### 입력 + +```json +{ + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley." +} +``` + + + diff --git a/ko/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx b/ko/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx new file mode 100644 index 000000000..0f445afac --- /dev/null +++ b/ko/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx @@ -0,0 +1,174 @@ +--- +title: "Comfy Router에서 Eleven V3 사용하기" +description: "Comfy Router를 통해 elevenlabs/eleven_v3 호출: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Eleven V3" +translationSourceHash: c122bb0a +translationFrom: development/comfy-router/models/elevenlabs/eleven-v3/code.mdx +translationBlockHashes: + "_intro": df41671e + "Quick start": 9120bea9 + "Schema": fa6daefe + "Examples": ef5fbb0e +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/elevenlabs/eleven_v3.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Elevenlabs에서 제공하며 Comfy Router를 통해 서비스되는 `elevenlabs/eleven_v3`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `elevenlabs/eleven_v3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_v3", + { + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_v3", { + inputs: [ + { + text: "Hello from Comfy Router.", + voice_id: "21m00Tcm4TlvDq8ikWAM", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"inputs\": [{\"text\":\"Hello from Comfy Router.\",\"voice_id\":\"21m00Tcm4TlvDq8ikWAM\"}]}" +``` + + +## 스키마 + +### 입력 + + + 세 가지 모드로 텍스트 정규화를 제어합니다: +'auto' - 시스템이 텍스트 정규화 적용 여부를 자동으로 결정합니다 +'on' - 텍스트 정규화가 항상 적용됩니다 +'off' - 텍스트 정규화를 건너뜁니다 + + 가능한 값: `auto`, `on`, `off` + + + + 각각 텍스트와 음성 ID를 포함하는 대화 입력 목록으로, 음성으로 변환됩니다. +고유 음성 ID의 최대 개수는 10개입니다. + + + + 음성으로 변환할 텍스트입니다. + + + + 생성에 사용할 음성의 ID입니다. + + + + 모델과 텍스트 정규화에 언어를 강제 적용하는 데 사용되는 언어 코드(ISO 639-1)입니다. +모델이 제공된 언어 코드를 지원하지 않으면 오류가 반환됩니다. + + + + 사용할 모델의 식별자입니다. 이 경로는 +'eleven_v3'만 허용하며, 다른 값은 요청이 ElevenLabs에 +도달하기 전에 400으로 거부됩니다. +사용 가능한 모델 집합을 조회하려면 GET /v1/models를 사용하라는 +ElevenLabs의 업스트림 안내는 하나의 모델만 제공하는 이 경로를 +설명하지 않습니다. +Comfy Router가 +/v2/models/elevenlabs/\{model}의 `{model}` 경로 세그먼트에서 이 값을 +채우므로 Router 호출자는 이를 생략하기 때문에, 이 스키마의 `required` 목록에 +포함되어 있지 않습니다. + + + + 텍스트에 적용할 발음 사전 로케이터(id, version_id) 목록입니다. +순서대로 적용됩니다. 요청당 최대 3개의 로케이터를 사용할 수 있습니다. + + + + 발음 사전의 ID + + + + 발음 사전의 버전 ID + + + + 지정하면 시스템이 결정론적으로 샘플링하기 위해 최선을 다합니다. +동일한 시드와 파라미터로 반복된 요청은 동일한 결과를 반환해야 합니다. +0에서 4294967295 사이의 정수여야 합니다. + + 범위: `0`~`4294967295` + + + + 대화 생성을 제어하는 설정 + + + + 음성이 얼마나 안정적인지, 그리고 각 생성 간의 무작위성을 결정합니다. +값이 낮을수록 음성의 감정 범위가 넓어집니다. +값이 높을수록 감정이 제한된 단조로운 음성이 될 수 있습니다. + + 형식: `double` + + +Router가 `GET /v2/models/elevenlabs/eleven_v3/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + +Router는 이 모델에 대한 출력 스키마를 게시하지 않습니다. + +## 예시 + +### 입력 + +```json +{ + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/fal/h3-max-turbo/code.mdx b/ko/development/comfy-router/models/fal/h3-max-turbo/code.mdx new file mode 100644 index 000000000..f513a0144 --- /dev/null +++ b/ko/development/comfy-router/models/fal/h3-max-turbo/code.mdx @@ -0,0 +1,169 @@ +--- +title: "Comfy Router로 H3 Max Turbo 사용하기" +description: "Comfy Router를 통해 fal/h3-max-turbo를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "H3 Max Turbo" +translationSourceHash: 4587bb42 +translationFrom: development/comfy-router/models/fal/h3-max-turbo/code.mdx +translationBlockHashes: + "_intro": 000b76c4 + "Quick start": 3f4586dc + "Schema": fa803ecb + "Examples": 53e0f9d0 +--- +{/* GENERATED FILE. `pnpm code-pages:gen`에 의해 router-schemas/fal/h3-max-turbo.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +fal에서 Comfy Router가 제공하는 `fal/h3-max-turbo`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `fal/h3-max-turbo` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/fal/h3-max-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max-turbo", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max-turbo", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## Schema + +### 입력 + + + 화면 비율: 21:9, 16:9, 4:3, 1:1, 3:4 또는 9:16. + + + + 생성된 비디오의 재생 시간(초)입니다. + + + + 안전 검사기를 활성화합니다. + + + + 비디오 생성을 위한 텍스트 프롬프트입니다. + + + + 생성 이전에 프롬프트를 다시 작성하는 데 들이는 노력의 정도: balanced 또는 quality. + + + + 생성된 비디오의 해상도: 480P 또는 768P. + + + + 랜덤 시드. 생략하면 임의의 시드가 선택됩니다. + + + + 생성된 비디오를 CDN URL 대신 base64로 반환합니다. + + +`GET /v2/models/fal/h3-max-turbo/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 Router가 호출을 검증하는 대상과 동일한 문서입니다. + +### 출력 + + + 확장 이후 모델로 전송된 프롬프트입니다. + + + + 종단 간 타이밍 분석(초)입니다. + + + + 생성된 비디오 파일입니다. + + + + 비디오 파일의 MIME 타입입니다. + + + + 비디오 파일의 이름입니다. + + + + 비디오 파일의 크기(바이트)입니다. + + + + URL of the generated video. + + +## 예시 + +### 입력 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 출력 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + diff --git a/ko/development/comfy-router/models/fal/h3-max/code.mdx b/ko/development/comfy-router/models/fal/h3-max/code.mdx new file mode 100644 index 000000000..cee0a98f1 --- /dev/null +++ b/ko/development/comfy-router/models/fal/h3-max/code.mdx @@ -0,0 +1,169 @@ +--- +title: "Comfy Router로 H3 Max 사용하기" +description: "Comfy Router를 통해 fal/h3-max를 호출하는 방법: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "H3 Max" +translationSourceHash: 3c959af9 +translationFrom: development/comfy-router/models/fal/h3-max/code.mdx +translationBlockHashes: + "_intro": 9639e44f + "Quick start": 09bfe825 + "Schema": 9d6db301 + "Examples": 53e0f9d0 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/h3-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`fal/h3-max`에 대한 API 레퍼런스로, Comfy Router가 fal에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `fal/h3-max` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/fal/h3-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## 스키마 + +### 입력 + + + 화면 비율: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 중 하나입니다. + + + + 생성되는 비디오의 재생 시간(초)입니다. + + + + 안전 검사기를 활성화합니다. + + + + 비디오 생성을 위한 텍스트 프롬프트입니다. + + + + 생성 전에 프롬프트를 다시 작성하는 데 들일 노력의 정도입니다: balanced 또는 quality. + + + + 생성되는 비디오의 해상도입니다: 480P 또는 768P. + + + + 랜덤 시드입니다. 생략하면 무작위 시드가 선택됩니다. + + + + 생성된 비디오를 CDN URL 대신 base64로 반환합니다. + + +`GET /v2/models/fal/h3-max/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 확장된 이후의 프롬프트로, 모델에 전송된 그대로입니다. + + + + 종단 간 타이밍 분석(초)입니다. + + + + 생성된 비디오 파일입니다. + + + + 비디오 파일의 MIME 타입입니다. + + + + 비디오 파일의 이름입니다. + + + + 비디오 파일의 크기(바이트)입니다. + + + + 생성된 비디오의 URL입니다. + + +## 예시 + +### 입력 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 출력 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + diff --git a/ko/development/comfy-router/models/fal/patina/code.mdx b/ko/development/comfy-router/models/fal/patina/code.mdx new file mode 100644 index 000000000..61cae7256 --- /dev/null +++ b/ko/development/comfy-router/models/fal/patina/code.mdx @@ -0,0 +1,157 @@ +--- +title: "Comfy Router에서 Patina 사용하기" +description: "Comfy Router를 통해 fal/patina를 호출하는 방법: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Patina" +translationSourceHash: fcac0478 +translationFrom: development/comfy-router/models/fal/patina/code.mdx +translationBlockHashes: + "_intro": 325742dd + "Quick start": 834ddc5c + "Schema": 44320e46 + "Examples": a3177476 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/patina.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`fal/patina`에 대한 API 레퍼런스이며, Comfy Router가 fal에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `fal/patina` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/fal/patina` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/patina", + { + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/patina", { + image_url: "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/patina \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png\"}" +``` + + +## 스키마 + +### 입력 + + + 이미지에 대한 안전 검사기를 활성화합니다. + + + + 입력 이미지(사진 또는 렌더)의 URL입니다. + + + + 예측할 PBR 맵을 지정합니다. 기본값은 다섯 가지 모두입니다. + + + + 출력 이미지 형식: jpeg, png, webp. + + + + 재현 가능한 디노이징을 위한 랜덤 시드입니다. + + + + 참이면 이미지를 CDN URL 대신 data URI로 반환합니다. + + +Router가 `GET /v2/models/fal/patina/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 생성된 타일링 가능한 텍스처 이미지와 예측된 PBR 재질 맵입니다. 기본 텍스처에는 url만 있으며, 각 맵 항목에는 map_type도 함께 포함됩니다. + + + + PBR 맵 유형(basecolor, normal, roughness, metalness, height)입니다. 기본 텍스처 이미지에는 없습니다. + + + + 생성된 이미지의 URL입니다. + + + + 텍스처 생성에 사용된 프롬프트(확장되었을 수 있음)입니다. + + + + 텍스처 생성에 사용된 시드입니다. + + + + 엔드투엔드 타이밍 분석(초)입니다. + + +## 예시 + +### 입력 + +```json +{ + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png" +} +``` + +### 출력 + +```json +{ + "images": [ + { + "map_type": "basecolor", + "url": "https://example.invalid/fal/patina/basecolor.png" + }, + { + "map_type": "normal", + "url": "https://example.invalid/fal/patina/normal.png" + }, + { + "map_type": "roughness", + "url": "https://example.invalid/fal/patina/roughness.png" + } + ], + "prompt": "weathered copper roof tiles", + "seed": 1234567, + "timings": { + "inference": 6.25 + } +} +``` + + diff --git a/ko/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx b/ko/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx new file mode 100644 index 000000000..4ab88860e --- /dev/null +++ b/ko/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx @@ -0,0 +1,164 @@ +--- +title: "Comfy Router로 AI Image Upscaler Precision V2 사용하기" +description: "Comfy Router를 통해 freepik/ai-image-upscaler-precision-v2를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "AI Image Upscaler Precision V2" +translationSourceHash: f85f4df6 +translationFrom: development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx +translationBlockHashes: + "_intro": 6951b8f3 + "Quick start": 6df99e76 + "Schema": 88d38911 + "Examples": a5cb63c4 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/freepik/ai-image-upscaler-precision-v2.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`freepik/ai-image-upscaler-precision-v2`의 API 레퍼런스이며, Comfy Router가 Freepik에서 제공합니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `freepik/ai-image-upscaler-precision-v2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-image-upscaler-precision-v2", + { + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-image-upscaler-precision-v2", { + image: "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + scale_factor: 8, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80\", \"scale_factor\": 8}" +``` + + +## 스키마 + +### 입력 + + + 이미지 처리 flavor: +- sublime: 예술적이고 일러스트레이션 느낌의 이미지에 최적화 +- photo: 사진 이미지에 최적화 +- photo_denoiser: 노이즈 감소가 필요한 사진에 특화 + + 가능한 값: `sublime`, `photo`, `photo_denoiser` + + + + 업스케일할 소스 이미지. 다음 중 하나를 사용할 수 있습니다: +- 이미지를 가리키는 공개적으로 접근 가능한 HTTPS URL +- base64로 인코딩된 이미지 문자열 + + + + 이미지 스케일링 계수. 입력 대비 출력이 얼마나 커질지 결정합니다. + + 범위: `2` ~ `16` + + + + 이미지 선명도 강도 제어. 값이 높을수록 윤곽이 더 뚜렷하고 선명해집니다. + + 범위: `0` ~ `100` + + + + 지능형 그레인/텍스처 강화. 값이 높을수록 더 미세한 텍스처가 추가됩니다. + + 범위: `0` ~ `100` + + + + 초고세부 디테일 강화 수준. 값이 높을수록 더 정교한 세부 정보가 생성됩니다. + + 범위: `0` ~ `100` + + + + 업스케일링 작업이 완료될 때 비동기 알림을 받을 선택적 콜백 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/freepik/ai-image-upscaler-precision-v2/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + 완료된 생성의 이미지 URL입니다. Router가 반환하는 문서에 항상 존재하며 비어 있지 않습니다. 이 목록이 곧 결과입니다. 링크는 Freepik 자체 링크이며 만료됩니다. + + + + 가능한 값: `COMPLETED` + + + + 형식: `uuid` + + +## 예제 + +### 입력 + +```json +{ + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8 +} +``` + +### 출력 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-image-upscaler-precision-v2/upscaled.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx new file mode 100644 index 000000000..044df15f9 --- /dev/null +++ b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx @@ -0,0 +1,135 @@ +--- +title: "Comfy Router로 AI Skin Enhancer Creative 사용하기" +description: "Comfy Router를 통해 freepik/ai-skin-enhancer-creative를 호출합니다: endpoint, 요청 형태, Router가 반환하는 응답입니다." +sidebarTitle: "AI Skin Enhancer Creative" +translationSourceHash: d3af36a1 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx +translationBlockHashes: + "_intro": e723a5f3 + "Quick start": c26388b9 + "Schema": 914d2ba2 + "Examples": f51546bd +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-creative.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-creative`의 API 레퍼런스입니다. Comfy Router가 Freepik에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `freepik/ai-skin-enhancer-creative` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-creative", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-creative", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## 스키마 + +### 입력 + + + 입력 이미지. Base64 인코딩 또는 HTTPS URL을 지원합니다 (공개적으로 접근 가능해야 함). + + + + 샤프닝 강도 + + 범위: `0` ~ `100` + + + + 스마트 그레인 강도 + + 범위: `0` ~ `100` + + + + 비동기 알림을 위한 선택적 콜백 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/freepik/ai-skin-enhancer-creative/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + 완료된 생성의 이미지 URL입니다. Router가 반환하는 문서에서 항상 존재하며 비어 있지 않습니다. 이 목록이 곧 결과입니다. 링크는 Freepik 자체 링크이며 만료됩니다. + + + + 가능한 값: `COMPLETED` + + + + 형식: `uuid` + + +## 예시 + +### 입력 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 출력 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-creative/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + diff --git a/ko/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx new file mode 100644 index 000000000..411db671a --- /dev/null +++ b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx @@ -0,0 +1,142 @@ +--- +title: "Comfy Router로 AI Skin Enhancer Faithful 사용하기" +description: "Comfy Router를 통해 freepik/ai-skin-enhancer-faithful을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "AI Skin Enhancer Faithful" +translationSourceHash: 676f6483 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx +translationBlockHashes: + "_intro": 79e82606 + "Quick start": 42aab383 + "Schema": dd345c18 + "Examples": b81e3b45 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-faithful.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-faithful`의 API 레퍼런스이며, Comfy Router가 Freepik에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `freepik/ai-skin-enhancer-faithful` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-faithful", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-faithful", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## Schema + +### 입력 + + + 입력 이미지. Base64 인코딩 또는 HTTPS URL(공개적으로 접근 가능해야 함)을 지원합니다. + + + + 샤프닝 강도 + + 범위: `0` ~ `100` + + + + 피부 디테일 향상 수준 + + 범위: `0` ~ `100` + + + + 스마트 그레인 강도 + + 범위: `0` ~ `100` + + + + 비동기 알림을 위한 선택적 콜백 URL입니다. + + 형식: `uri` + + +Router가 `GET /v2/models/freepik/ai-skin-enhancer-faithful/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + + + + + 완료된 생성 결과의 이미지 URL입니다. Router가 반환하는 문서에서 존재하며 비어 있지 않습니다. 이 목록이 곧 결과입니다. 링크는 Freepik 자체 링크이며 만료됩니다. + + + + 가능한 값: `COMPLETED` + + + + 형식: `uuid` + + +## 예시 + +### 입력 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 출력 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-faithful/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx new file mode 100644 index 000000000..5bb317d5c --- /dev/null +++ b/ko/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx @@ -0,0 +1,142 @@ +--- +title: "Comfy Router로 AI Skin Enhancer Flexible 사용하기" +description: "Comfy Router를 통해 freepik/ai-skin-enhancer-flexible을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "AI Skin Enhancer Flexible" +translationSourceHash: b75efd69 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx +translationBlockHashes: + "_intro": d6c2cb7e + "Quick start": 394b124a + "Schema": 70d4c10f + "Examples": 4255df63 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-flexible.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-flexible`에 대한 API 레퍼런스입니다. Freepik의 모델을 Comfy Router에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `freepik/ai-skin-enhancer-flexible` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-flexible", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-flexible", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## 스키마 + +### 입력 + + + 입력 이미지. Base64 인코딩 또는 HTTPS URL(공개적으로 접근 가능해야 함)을 지원합니다. + + + + flexible skin enhancer의 최적화 대상 + + 사용 가능한 값: `enhance_skin`, `improve_lighting`, `enhance_everything`, `transform_to_real`, `no_make_up` + + + + 샤프닝 강도 + + 범위: `0` ~ `100` + + + + 스마트 그레인 강도 + + 범위: `0` ~ `100` + + + + 비동기 알림을 위한 선택적 콜백 URL. + + 형식: `uri` + + +Router가 `GET /v2/models/freepik/ai-skin-enhancer-flexible/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + 완료된 생성 작업의 이미지 URL입니다. Router가 반환하는 문서에 존재하며 비어 있지 않습니다. 이 목록이 곧 결과입니다. 링크는 Freepik 자체의 것이며 만료됩니다. + + + + 사용 가능한 값: `COMPLETED` + + + + 형식: `uuid` + + +## 예시 + +### 입력 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 출력 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-flexible/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx b/ko/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx new file mode 100644 index 000000000..6336b442a --- /dev/null +++ b/ko/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx @@ -0,0 +1,237 @@ +--- +title: "Comfy Router에서 Gemini Omni 1.1 Flash 사용하기" +description: "Comfy Router를 통해 gemini-interactions/gemini-omni-1.1-flash를 호출하는 방법: endpoint, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Gemini Omni 1.1 Flash" +translationSourceHash: 511d9d6a +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx +translationBlockHashes: + "_intro": 491ed41c + "Quick start": 5b337d94 + "Schema": 3db003f3 + "Examples": 02c0f0cf +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/gemini-interactions/gemini-omni-1.1-flash.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-1.1-flash`에 대한 API 레퍼런스로, Comfy Router가 Gemini Interactions에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP로 동일한 호출을 수행합니다. + +**모델 ID:** `gemini-interactions/gemini-omni-1.1-flash` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-1.1-flash", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-1.1-flash", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 문자열 또는 타입이 지정된 콘텐츠 파트(텍스트, 이미지, 오디오, 비디오, 문서)의 배열입니다. + + + + Gemini 모델 식별자입니다(예: `gemini-omni-flash-preview`). Comfy Router 경로 `POST /v2/models/gemini-interactions/{model}`에서는 경로에서 제공되므로 생략할 수 있습니다. 이 작업이 처리하는 표기, 즉 Comfy Router가 `gemini-interactions/`로 주소 지정하는 집합은 gemini-omni-flash-preview와 gemini-omni-1.1-flash(supportedGeminiInteractionModels)입니다. 여기서는 enum으로 제한하지 않고 그대로 나열했는데, 프록시가 모델 자체를 검증하고 자신이 처리하지 않는 표기에 대해서는 자체적으로 400을 응답하기 때문입니다. + + + + 이전에 저장된 상호작용의 ID로, 상태를 유지하는 다중 턴 비디오 편집을 가능하게 합니다. + + +Router가 `GET /v2/models/gemini-interactions/gemini-omni-1.1-flash/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + Router 응답에서는 항상 `completed`입니다. 공급자의 다른 상태(`in_progress`, `requires_action`, `failed`, `cancelled`, `incomplete`, `budget_exceeded`)는 Router를 통해 호출자에게 200으로 전달되지 않습니다. 이들은 공급자의 본문을 담은 Comfy Router 오류로 반환됩니다. + + 가능한 값: `completed` + + + + 상호작용 타임라인이며 순서대로 나열됩니다. 출력 리프를 주소 지정할 수 있도록 `GeminiInteraction`의 타입이 지정되지 않은 `steps`에서 여기서 좁혀 정의했습니다. 공급자가 계속 단계 유형을 추가하므로 항목은 `additionalProperties: true`이며, Router 호출자가 읽는 필드만 선언됩니다. + + + + 이 단계의 타입이 지정된 콘텐츠 블록입니다. + + + + 인라인으로 전달되는 미디어 블록에서 Base64로 인코딩된 인라인 미디어입니다. Google은 인라인 미디어를 4 MB로 제한하며, 이를 초과하면 `delivery: uri`를 요구합니다. + + + + 미디어 블록에서 `data` 또는 `uri`의 미디어 타입입니다. + + + + 생성된 텍스트입니다. `text` 블록에 존재하며, 최신 테스트 버전(nightly) Router SDK 케이스가 검증하는 리프입니다. 구체적으로 `model_output` 단계에서입니다(`steps[type=model_output].content[].text`). + + + + 블록 종류: `text`, `image`, `audio`, `video` 또는 `document`. + + + + 대역 외로 전달되는 미디어에 대한 참조이며, 호출자가 해당 URI에서 가져옵니다. + + + + 단계 종류입니다. `model_output`은 생성된 답변이고, `user_input`은 검색 경로가 되돌려주는 호출자 자신의 턴이며, `thought`는 내부 추론입니다. 도구 단계(`function_call`, `function_result`, `code_execution_call`, `google_search_call`, ...)는 개방형이며 Google이 계속 추가합니다. + + + + Gemini 상호작용의 토큰 사용량입니다. + + + + 하나의 모달리티에 대한 토큰 수입니다. + + + + `text`, `image`, `audio`, `video`, `document` 중 하나입니다. + + + + + + + + 하나의 모달리티에 대한 토큰 수입니다. + + + + `text`, `image`, `audio`, `video`, `document` 중 하나입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 출력 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx b/ko/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx new file mode 100644 index 000000000..cb64eb66a --- /dev/null +++ b/ko/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx @@ -0,0 +1,237 @@ +--- +title: "Comfy Router와 함께 Gemini Omni Flash Preview 사용하기" +description: "Comfy Router를 통해 gemini-interactions/gemini-omni-flash-preview를 호출하는 방법을 설명합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Gemini Omni Flash Preview" +translationSourceHash: fa5114f1 +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx +translationBlockHashes: + "_intro": 57398175 + "Quick start": bc6cb831 + "Schema": 32f6dbfb + "Examples": 02c0f0cf +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/gemini-interactions/gemini-omni-flash-preview.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-flash-preview`의 API 레퍼런스이며, Gemini Interactions에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `gemini-interactions/gemini-omni-flash-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-flash-preview", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-flash-preview", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 문자열 또는 타입이 지정된 콘텐츠 파트(텍스트, 이미지, 오디오, 비디오, 문서)의 배열입니다. + + + + Gemini 모델 식별자입니다(예: `gemini-omni-flash-preview`). Comfy Router 경로 `POST /v2/models/gemini-interactions/{model}`에서는 경로에서 제공되므로 생략할 수 있습니다. 이 작업이 처리하는 표기, 즉 Comfy Router가 `gemini-interactions/`로 주소를 지정하는 집합은 gemini-omni-flash-preview와 gemini-omni-1.1-flash(supportedGeminiInteractionModels)입니다. 여기서는 열거형으로 제한하지 않고 그대로 나열하는데, 이는 프록시가 모델 자체를 검증하고 자신이 처리하지 않는 표기에 대해서는 자체적인 400을 반환하기 때문입니다. + + + + 이전에 저장된 상호작용의 ID로, 상태를 유지하는 다중 턴 비디오 편집을 가능하게 합니다. + + +Router가 `GET /v2/models/gemini-interactions/gemini-omni-flash-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + Router 응답에서는 항상 `completed`입니다. 공급자의 다른 상태(`in_progress`, `requires_action`, `failed`, `cancelled`, `incomplete`, `budget_exceeded`)는 Router를 통해 200으로 호출자에게 전달되지 않습니다. 이들은 공급자의 본문을 담은 Comfy Router 오류로 반환됩니다. + + 가능한 값: `completed` + + + + 상호작용 타임라인으로, 순서대로 나열됩니다. `GeminiInteraction`의 타입이 지정되지 않은 `steps`에서 여기서 좁혀 출력 리프를 주소 지정할 수 있게 합니다. 공급자는 계속해서 단계 유형을 추가하므로 항목은 `additionalProperties: true`이며, Router 호출자가 읽는 필드만 선언됩니다. + + + + 이 단계의 타입이 지정된 콘텐츠 블록입니다. + + + + 인라인으로 전달되는 미디어 블록에서 Base64로 인코딩된 인라인 미디어입니다. Google은 인라인 미디어를 4MB로 제한하며, 그 이상은 `delivery: uri`를 요구합니다. + + + + 미디어 블록에서 `data` 또는 `uri`의 미디어 유형입니다. + + + + 생성된 텍스트입니다. `text` 블록에 존재하며, 이는 최신 테스트 버전(nightly) Router SDK 케이스가 검증하는 리프입니다. 구체적으로 `model_output` 단계에서입니다(`steps[type=model_output].content[].text`). + + + + 블록 종류: `text`, `image`, `audio`, `video` 또는 `document`. + + + + 대역 외로 전달되는 미디어에 대한 참조로, 호출자가 지정한 URI에서 가져옵니다. + + + + 단계 종류입니다. `model_output`은 생성된 답변이고, `user_input`은 검색 경로에서 되돌려 보내는 호출자 자신의 턴이며, `thought`는 내부 추론입니다. 도구 단계(`function_call`, `function_result`, `code_execution_call`, `google_search_call`, ...)는 개방형이며 Google이 계속 추가합니다. + + + + Gemini 상호작용의 토큰 사용량입니다. + + + + 하나의 모달리티에 대한 토큰 수입니다. + + + + `text`, `image`, `audio`, `video`, `document` 중 하나입니다. + + + + + + + + 하나의 모달리티에 대한 토큰 수입니다. + + + + `text`, `image`, `audio`, `video`, `document` 중 하나입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 출력 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx b/ko/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx new file mode 100644 index 000000000..9f12b4d93 --- /dev/null +++ b/ko/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx @@ -0,0 +1,574 @@ +--- +title: "Comfy Router로 Gemini 2.5 Flash Image 사용하기" +description: "Comfy Router를 통해 vertexai/gemini-2.5-flash-image를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Gemini 2.5 Flash Image" +translationSourceHash: 8517e433 +translationFrom: development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx +translationBlockHashes: + "_intro": 825f99d2 + "Quick start": d08e1cfe + "Examples": 19258aaa +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-2.5-flash-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-2.5-flash-image`에 대한 API 레퍼런스입니다. Google의 Comfy Router에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `vertexai/gemini-2.5-flash-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash-image", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash-image", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## Schema + +### Input + + + The content of the current conversation with the model. For single-turn queries, this is a single instance. For multi-turn queries, this is a repeated field that contains conversation history and the latest request. + + + + + + + + URI based data. + + + + URI + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + Inline data in raw bytes. For gemini-2.0-flash-lite and gemini-2.0-flash, you can specify up to 3000 images by using inlineData. + + + + The base64 encoding of the image, PDF, or video to include inline in the prompt. When including media inline, you must also specify the media type (mimeType) of the data. Size limit: 20MB + + Format: `byte` + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + A text prompt or code snippet. + + + + Indicates this part is a thinking/reasoning step from the model. + + + + Possible values: `user`, `model` + + + + Sampling, length and output settings for the generation. Every field is optional: the fields below that declare a `default` apply it when omitted, and the rest fall back to the model's own behaviour. + + + + Configuration for image generation + + + + Aspect ratio for generated images + + + + Optional. The image output format for generated images. + + + + Optional. The compression quality of the output image. + + + + Optional. The image format that the output should be saved as. + + + + Optional. Specifies the size of generated images. Supported values are 1K, 2K, 4K. If not specified, the model will use default value 1K. + + + + Maximum number of tokens that can be generated in the response. A token is approximately 4 characters. 100 tokens correspond to roughly 60-80 words. + + Range: `16` to `65536` + + + + + + + + When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. Deterministic output isn't guaranteed. Also, changing the model or parameter settings, such as the temperature, can cause variations in the response even when you use the same seed value. By default, a random seed value is used. Available for the following models:, gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + + The temperature is used for sampling during response generation, which occurs when topP and topK are applied. Temperature controls the degree of randomness in token selection. Lower temperatures are good for prompts that require a less open-ended or creative response, while higher temperatures can lead to more diverse or creative results. A temperature of 0 means that the highest probability tokens are always selected. In this case, responses for a given prompt are mostly deterministic, but a small amount of variation is still possible. If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature + + Range: `0` to `2` + + Format: `float` + + + + Optional. Configuration for thinking features. Thinking is a process where the model breaks down a complex task into smaller steps to generate a higher-quality response. + + + + Optional. If true, the model will include its thoughts in the response. + + + + Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. + + + + Optional. The thinking level for the model. + + Possible values: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K changes how the model selects tokens for output. A top-K of 1 means the next selected token is the most probable among all tokens in the model's vocabulary. A top-K of 3 means that the next token is selected from among the 3 most probable tokens by using temperature. + + Range: `1` to `…` + + + + If specified, nucleus sampling is used. +Top-P changes how the model selects tokens for output. Tokens are selected from the most (see top-K) to least probable until the sum of their probabilities equals the top-P value. For example, if tokens A, B, and C have a probability of 0.3, 0.2, and 0.1 and the top-P value is 0.5, then the model will select either A or B as the next token by using temperature and excludes C as a candidate. +Specify a lower value for less random responses and a higher value for more random responses. + + Range: `0` to `1` + + Format: `float` + + + + Per request settings for blocking unsafe content. Enforced on GenerateContentResponse.candidates. + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + Possible values: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + Instructions for the model to steer it toward better performance. For example, "Answer as concisely as possible" or "Don't use technical terms in your response". The text strings count toward the token limit. The role field of systemInstruction is ignored and doesn't affect the performance of the model. Note: Only text should be used in parts and content in each part should be in a separate paragraph. + + + + A list of ordered parts that make up a single message. Different parts may have different IANA MIME types. For limits on the inputs, such as the maximum number of tokens or the number of images, see the model specifications on the Google models page. + + + + A text prompt or code snippet. + + + + The identity of the entity that creates the message. The following values are supported: user: This indicates that the message is sent by a real person, typically a user-generated message. model: This indicates that the message is generated by the model. The model value is used to insert messages from the model into the conversation during multi-turn conversations. For non-multi-turn conversations, this field can be left blank or unset. + + Possible values: `user`, `model` + + + + A piece of code that enables the system to interact with external systems to perform an action, or set of actions, outside of knowledge and scope of the model. See Function calling. + + + + + + + + + + + + + + + + JSON schema for the function parameters + + + + If true, generated images will be uploaded to cloud storage and returned as signed URLs instead of inline base64 data. The URLs expire after 24 hours. + + + + For video input, the start and end offset of the video in Duration format. For example, to specify a 10 second clip starting at 1:00, set "startOffset": \{ "seconds": 60 } and "endOffset": \{ "seconds": 70 }. The metadata should only be specified while the video data is presented in inlineData or fileData. + + + + Represents a duration offset for video timeline positions. + + + + Signed fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values. + + Range: `0` to `999999999` + + + + Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. + + Range: `-315576000000` to `315576000000` + + + + Represents a duration offset for video timeline positions. + + + + Signed fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values. + + Range: `0` to `999999999` + + + + Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. + + Range: `-315576000000` to `315576000000` + + +Generated from the schema Router serves at `GET /v2/models/vertexai/gemini-2.5-flash-image/openapi.json`, the same document it validates a call against before the request reaches the provider. + +### Output + + + + + + + + + + + + + + + + + + + + + + + + + + + Format: `date` + + + + + + + + + + + + + + + + The content of the current conversation with the model. For single-turn queries, this is a single instance. For multi-turn queries, this is a repeated field that contains conversation history and the latest request. + + + + + + + + URI based data. + + + + URI + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + Inline data in raw bytes. For gemini-2.0-flash-lite and gemini-2.0-flash, you can specify up to 3000 images by using inlineData. + + + + The base64 encoding of the image, PDF, or video to include inline in the prompt. When including media inline, you must also specify the media type (mimeType) of the data. Size limit: 20MB + + Format: `byte` + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + A text prompt or code snippet. + + + + Indicates this part is a thinking/reasoning step from the model. + + + + Possible values: `user`, `model` + + + + + + + + + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + The probability that the content violates the specified safety category + + Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + Timestamp when the response was created. + + + + The model version used to generate the response. + + + + + + + + + + + + + + + + + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + The probability that the content violates the specified safety category + + Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + Unique identifier for the response. + + + + + + + + Output only. Number of tokens in the cached part in the input (the cached content). + + + + Number of tokens in the response(s). + + + + Breakdown of candidate tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens in the request. When cachedContent is set, this is still the total effective prompt size meaning this includes the number of tokens in the cached content. + + + + Breakdown of prompt tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens present in thoughts output. + + + + Number of tokens present in tool-use prompt(s). + + + + Total number of tokens (prompt + candidates). + + + + Traffic type used for the request (e.g., PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "inlineData": { + "data": "PGJhc2U2ND4=", + "mimeType": "image/png" + } + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-2.5-flash-image", + "responseId": "7c6b5a49-3827-1605-f4e3-d2c1b0a99887", + "usageMetadata": { + "candidatesTokenCount": 1290, + "promptTokenCount": 11, + "totalTokenCount": 1301 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx b/ko/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx new file mode 100644 index 000000000..9366b1627 --- /dev/null +++ b/ko/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx @@ -0,0 +1,565 @@ +--- +title: "Comfy Router로 Gemini 3.1 Flash Lite 사용하기" +description: "Comfy Router를 통해 vertexai/gemini-3.1-flash-lite를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Gemini 3.1 Flash Lite" +translationSourceHash: 442db7a1 +translationFrom: development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx +translationBlockHashes: + "_intro": 063db100 + "Quick start": 963c53e7 + "Schema": c1f3ccb6 + "Examples": 2ebce337 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-3.1-flash-lite.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google가 Comfy Router를 통해 제공하는 `vertexai/gemini-3.1-flash-lite`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `vertexai/gemini-3.1-flash-lite` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## Schema + +### Input + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite와 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite와 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite와 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성에 대한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 기본값이 적용되고, 나머지는 모델 자체 동작을 따릅니다. + + + + 이미지 생성 구성 + + + + 생성된 이미지의 가로세로 비율 + + + + 선택 사항. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항. 출력 이미지의 압축 품질입니다. + + + + 선택 사항. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 약 4자입니다. 100토큰은 대략 60~80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드를 특정 값으로 고정하면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정론적 출력은 보장되지 않습니다. 또한 동일한 시드 값을 사용하더라도 모델이나 temperature와 같은 매개변수 설정을 변경하면 응답이 달라질 수 있습니다. 기본적으로 임의의 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +temperature는 응답 생성 중 샘플링에 사용되며, 이는 topP와 topK가 적용될 때 발생합니다. temperature는 토큰 선택의 무작위성 정도를 제어합니다. 낮은 temperature는 덜 개방적이거나 창의적인 응답이 필요한 프롬프트에 적합하고, 높은 temperature는 더 다양하거나 창의적인 결과로 이어질 수 있습니다. temperature가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 주어진 프롬프트에 대한 응답은 대부분 결정적이지만, 약간의 변동은 여전히 가능합니다. 모델이 너무 일반적이거나 너무 짧은 응답을 반환하거나 대체 응답을 제공한다면 temperature를 높여 보세요. + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항입니다. 사고(thinking) 기능에 대한 구성입니다. 사고란 모델이 더 높은 품질의 응답을 생성하기 위해 복잡한 작업을 더 작은 단계로 나누는 과정입니다. + + + + 선택 사항입니다. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항입니다. 모델의 사고 과정에 대한 토큰 예산입니다. 모델은 이 예산을 넘지 않도록 최선을 다합니다. + + + + 선택 사항입니다. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 다음에 선택되는 토큰은 모델 어휘 전체에서 확률이 가장 높은 토큰입니다. Top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰을 선택합니다. + + 범위: `1` ~ `…` + + + + 지정하면 nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 top-P 값과 같아질 때까지 확률이 가장 높은 것부터(top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5라면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답을 원하면 더 낮은 값을, 무작위성이 큰 응답을 원하면 더 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델을 더 나은 성능으로 이끌기 위한 지침입니다. 예를 들어 "Answer as concisely as possible" 또는 "Don't use technical terms in your response"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 role 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 content는 별도의 단락으로 구성해야 합니다. + + + + 하나의 메시지를 구성하는 순서가 있는 parts 목록입니다. part마다 IANA MIME 타입이 다를 수 있습니다. 최대 토큰 수나 이미지 수와 같은 입력 제한에 대해서는 Google 모델 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 메시지를 생성하는 주체의 정체성입니다. 다음 값이 지원됩니다. user: 메시지가 실제 사람이 보낸 것임을 나타내며, 일반적으로 사용자가 생성한 메시지입니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 멀티턴 대화 중에 모델의 메시지를 대화에 삽입할 때 사용됩니다. 멀티턴이 아닌 대화에서는 이 필드를 비워 두거나 설정하지 않아도 됩니다. + + 가능한 값: `user`, `model` + + + + 모델의 지식과 범위를 벗어난 작업 또는 일련의 작업을 수행하기 위해 시스템이 외부 시스템과 상호 작용할 수 있게 하는 코드 조각입니다. 함수 호출(Function calling)을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, Duration 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 }, "endOffset": \{ "seconds": 70 }으로 설정합니다. 메타데이터는 비디오 데이터가 inlineData 또는 fileData로 제공되는 동안에만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현된 부호 있는 초의 소수부입니다. 소수부를 가진 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000 이상 +315,576,000,000 이하여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현된 부호 있는 초의 소수부입니다. 소수부를 가진 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000 이상 +315,576,000,000 이하여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + +Router가 `GET /v2/models/vertexai/gemini-3.1-flash-lite/openapi.json`에서 제공하는 스키마에서 생성된 문서이며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 멀티턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용입니다. 입력에서 캐시된 부분(캐시된 콘텐츠)에 있는 토큰 수입니다. + + + + 응답에 있는 토큰 수입니다. + + + + 모달리티별 후보 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + 요청에 있는 토큰 수입니다. cachedContent가 설정된 경우에도 이 값은 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + 사고 출력에 포함된 토큰 수입니다. + + + + 도구 사용 프롬프트에 포함된 토큰 수입니다. + + + + 총 토큰 수입니다(프롬프트 + 후보). + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.1-flash-lite", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/google/gemini-3-7-flash/code.mdx b/ko/development/comfy-router/models/google/gemini-3-7-flash/code.mdx new file mode 100644 index 000000000..baaaa8c79 --- /dev/null +++ b/ko/development/comfy-router/models/google/gemini-3-7-flash/code.mdx @@ -0,0 +1,564 @@ +--- +title: "Gemini 3.7 Flash를 Comfy Router와 함께 사용하기" +description: "Comfy Router를 통해 vertexai/gemini-3.7-flash를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Gemini 3.7 Flash" +translationSourceHash: 34f567fc +translationFrom: development/comfy-router/models/google/gemini-3-7-flash/code.mdx +translationBlockHashes: + "_intro": bb1d4fb3 + "Quick start": 99a8441f + "Schema": 5b123ea5 + "Examples": 1da8dd0c +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/vertexai/gemini-3.7-flash.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google이 제공하고 Comfy Router가 서비스하는 `vertexai/gemini-3.7-flash`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `vertexai/gemini-3.7-flash` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.7-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.7-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 콘텐츠는 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 타입(mimeType)도 함께 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 콘텐츠는 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성에 대한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 값이 적용되고, 나머지는 모델 자체 동작을 따릅니다. + + + + 이미지 생성을 위한 구성입니다. + + + + 생성된 이미지의 가로세로 비율입니다. + + + + 선택 사항. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항. 출력 이미지의 압축 품질입니다. + + + + 선택 사항. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값인 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 약 4자에 해당합니다. 100토큰은 대략 60~80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드를 특정 값으로 고정하면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정적 출력은 보장되지 않습니다. 또한 동일한 시드 값을 사용하더라도 모델이나 temperature와 같은 파라미터 설정을 변경하면 응답이 달라질 수 있습니다. 기본적으로는 무작위 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +temperature는 응답 생성 중 샘플링에 사용되며, 이는 topP와 topK가 적용될 때 발생합니다. temperature는 토큰 선택의 무작위성 정도를 제어합니다. 낮은 temperature는 개방적이지 않거나 창의적이지 않은 응답이 필요한 프롬프트에 적합하고, 높은 temperature는 더 다양하거나 창의적인 결과를 만들 수 있습니다. temperature가 0이면 항상 확률이 가장 높은 토큰이 선택됩니다. 이 경우 주어진 프롬프트에 대한 응답은 대부분 결정적이지만, 약간의 변동은 여전히 가능합니다. 모델이 너무 일반적이거나 너무 짧은 응답을 반환하거나 대체 응답을 제공한다면 temperature를 높여 보세요. + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항입니다. 사고 기능에 대한 설정입니다. 사고는 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항입니다. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항입니다. 모델의 사고 과정에 대한 토큰 예산입니다. 모델은 이 예산을 넘지 않도록 최선을 다합니다. + + + + 선택 사항입니다. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 다음에 선택되는 토큰은 모델 어휘 전체에서 가장 확률이 높은 토큰입니다. Top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰이 선택됩니다. + + 범위: `1` ~ `…` + + + + 지정하면 nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. 토큰은 확률이 가장 높은 것( top-K 참조)부터 시작하여 확률의 합이 top-P 값과 같아질 때까지 낮은 쪽으로 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5라면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답에는 낮은 값을, 무작위성이 큰 응답에는 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델이 더 나은 성능을 내도록 이끄는 지침입니다. 예를 들어 "가능한 한 간결하게 답하세요" 또는 "응답에 전문 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 역할 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 content는 별도의 단락에 있어야 합니다. + + + + 하나의 메시지를 구성하는 순서가 있는 part 목록입니다. part마다 서로 다른 IANA MIME 유형을 가질 수 있습니다. 최대 토큰 수나 이미지 개수와 같은 입력 제한에 대해서는 Google models 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 메시지를 생성하는 주체의 정체성입니다. 다음 값이 지원됩니다: user: 메시지가 실제 사람에 의해 전송되었음을 나타내며, 일반적으로 사용자가 생성한 메시지입니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입할 때 사용됩니다. 다중 턴이 아닌 대화에서는 이 필드를 비워 두거나 설정하지 않아도 됩니다. + + 가능한 값: `user`, `model` + + + + 시스템이 모델의 지식과 범위를 벗어나 외부 시스템과 상호작용하여 하나 또는 일련의 작업을 수행할 수 있게 하는 코드 조각입니다. Function calling을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, 재생 시간(Duration) 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에서 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }으로 설정합니다. 메타데이터는 비디오 데이터가 inlineData 또는 fileData로 제공되는 동안에만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + +`GET /v2/models/vertexai/gemini-3.7-flash/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 시점의 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용. 입력에서 캐시된 부분(캐시된 콘텐츠)의 토큰 수입니다. + + + + 응답의 토큰 수입니다. + + + + 모달리티별 후보 토큰의 분석입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 지정된 모달리티의 토큰 수입니다. + + + + 요청의 토큰 수입니다. cachedContent가 설정된 경우에도 이는 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 분석입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 지정된 모달리티의 토큰 수입니다. + + + + 사고 출력에 존재하는 토큰 수입니다. + + + + 도구 사용 프롬프트에 존재하는 토큰 수입니다. + + + + 총 토큰 수(프롬프트 + 후보)입니다. + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.7-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + diff --git a/ko/development/comfy-router/models/google/gemini-3-8-flash/code.mdx b/ko/development/comfy-router/models/google/gemini-3-8-flash/code.mdx new file mode 100644 index 000000000..dcf95796c --- /dev/null +++ b/ko/development/comfy-router/models/google/gemini-3-8-flash/code.mdx @@ -0,0 +1,565 @@ +--- +title: "Comfy Router로 Gemini 3.8 Flash 사용하기" +description: "Comfy Router를 통해 vertexai/gemini-3.8-flash를 호출합니다: endpoint, 요청 형태, Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Gemini 3.8 Flash" +translationSourceHash: 7422d325 +translationFrom: development/comfy-router/models/google/gemini-3-8-flash/code.mdx +translationBlockHashes: + "_intro": 9675ac82 + "Quick start": 2223913a + "Schema": ddb5baa0 + "Examples": 48b9d5db +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-3.8-flash.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Google에서 제공하는 `vertexai/gemini-3.8-flash`의 API 레퍼런스입니다. + +## 빠른 시작 {#quick-start} + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `vertexai/gemini-3.8-flash` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.8-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.8-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 내용입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참고하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 함께 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참고하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성에 대한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 기본값이 적용되고, 나머지는 모델 자체 동작을 따릅니다. + + + + 이미지 생성 구성 + + + + 생성된 이미지의 가로세로 비율 + + + + 선택 사항입니다. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항입니다. 출력 이미지의 압축 품질입니다. + + + + 선택 사항입니다. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항입니다. 생성되는 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 약 4자에 해당합니다. 100 토큰은 대략 60~80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드를 특정 값으로 고정하면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정적 출력은 보장되지 않습니다. 또한 동일한 시드 값을 사용하더라도 모델이나 temperature와 같은 매개변수 설정을 변경하면 응답이 달라질 수 있습니다. 기본적으로 무작위 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +temperature는 topP와 topK가 적용될 때 발생하는 응답 생성 과정의 샘플링에 사용됩니다. temperature는 토큰 선택의 무작위성 정도를 제어합니다. 낮은 temperature는 덜 개방적이거나 창의적인 응답이 필요한 프롬프트에 적합하고, 높은 temperature는 더 다양하거나 창의적인 결과로 이어질 수 있습니다. temperature가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 결정적이지만, 약간의 변동은 여전히 가능합니다. 모델이 너무 일반적이거나 너무 짧은 응답을 반환하거나 대체 응답을 제공한다면 temperature를 높여 보세요 + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항입니다. 사고(thinking) 기능에 대한 구성입니다. 사고란 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항입니다. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항입니다. 모델의 사고 과정을 위한 토큰 예산입니다. 모델은 이 예산을 넘지 않도록 최선을 다합니다. + + + + 선택 사항입니다. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. top-K가 1이면 다음에 선택되는 토큰은 모델 어휘의 모든 토큰 중에서 확률이 가장 높은 토큰입니다. top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰이 선택됩니다. + + 범위: `1` ~ `…` + + + + 지정하면 nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 top-P 값과 같아질 때까지 확률이 가장 높은 것(top-K 참조)부터 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5라면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답을 원하면 더 낮은 값을, 무작위성이 큰 응답을 원하면 더 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델을 더 나은 성능으로 이끌기 위한 지침입니다. 예를 들어 "가능한 한 간결하게 답하세요" 또는 "응답에 전문 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 role 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 content는 별도의 단락에 있어야 합니다. + + + + 하나의 메시지를 구성하는 순서가 있는 part 목록입니다. part마다 서로 다른 IANA MIME 유형을 가질 수 있습니다. 최대 토큰 수나 이미지 수와 같은 입력 제한은 Google 모델 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 메시지를 생성하는 주체의 역할입니다. 다음 값이 지원됩니다. user: 메시지가 실제 사람이 보낸 것임을 나타내며, 일반적으로 사용자가 생성한 메시지입니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입하는 데 사용됩니다. 다중 턴 대화가 아닌 경우 이 필드는 비워 두거나 설정하지 않을 수 있습니다. + + 가능한 값: `user`, `model` + + + + 시스템이 모델의 지식과 범위를 벗어난 작업 또는 일련의 작업을 수행하기 위해 외부 시스템과 상호작용할 수 있게 하는 코드 조각입니다. 함수 호출(Function calling)을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, 비디오의 시작 및 종료 오프셋을 Duration 형식으로 지정합니다. 예를 들어 1:00에서 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }으로 설정합니다. 메타데이터는 비디오 데이터가 inlineData 또는 fileData로 제공되는 동안에만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000 이상 +315,576,000,000 이하이어야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000 이상 +315,576,000,000 이하이어야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + +Router가 `GET /v2/models/vertexai/gemini-3.8-flash/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 멀티턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 콘텐츠는 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 타입(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 콘텐츠는 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용. 입력에서 캐시된 부분(캐시된 콘텐츠)의 토큰 수입니다. + + + + 응답에 포함된 토큰 수입니다. + + + + 모달리티별 후보 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + 요청에 포함된 토큰 수입니다. cachedContent가 설정된 경우에도 이는 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + thoughts 출력에 포함된 토큰 수입니다. + + + + 도구 사용 프롬프트에 포함된 토큰 수입니다. + + + + 총 토큰 수(프롬프트 + 후보)입니다. + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.8-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/google/gemini/code.mdx b/ko/development/comfy-router/models/google/gemini/code.mdx new file mode 100644 index 000000000..909fba029 --- /dev/null +++ b/ko/development/comfy-router/models/google/gemini/code.mdx @@ -0,0 +1,787 @@ +--- +title: "Comfy Router로 Google Gemini 사용하기" +description: "Comfy Router를 통해 HTTP로 Google Gemini 텍스트 모델을 호출하는 Python, TypeScript, cURL 코드 조각과 요청 필드 및 결과 형태" +sidebarTitle: "Google Gemini" +translationSourceHash: 9ed5f7bd +translationFrom: development/comfy-router/models/google/gemini/code.mdx +translationBlockHashes: + "_intro": 9975ebcd + "Quick start": 96c7cde8 + "Schema": 226eecab + "Examples": 4bb73c12 +--- +{/* 생성된 파일. 이 디렉터리의 code.yaml을 편집한 뒤 `pnpm code-pages:gen`을 실행하세요. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google Gemini API 레퍼런스. Google Gemini는 Google의 멀티모달 텍스트 모델 제품군으로, Flash 및 Pro 등급에 걸쳐 빠른 초안 작성부터 심층 추론까지 아우릅니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +호출할 모델을 선택하세요. 이 모델들은 하나의 요청 및 응답 형태를 공유하며, 아래에서 한 번만 설명합니다. + + +**모델 ID:** `vertexai/gemini-3.1-pro-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-pro-preview", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-pro-preview", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**모델 ID:** `vertexai/gemini-3.5-flash` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**모델 ID:** `vertexai/gemini-2.5-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-pro", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-pro", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**모델 ID:** `vertexai/gemini-2.5-flash` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 내용입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 해당 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 사용 가능한 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성에 대한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 기본값이 적용되고, 나머지는 모델 자체 동작을 따릅니다. + + + + 이미지 생성 설정 + + + + 생성된 이미지의 가로세로 비율 + + + + 선택 사항입니다. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항입니다. 출력 이미지의 압축 품질입니다. + + + + 선택 사항입니다. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항입니다. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값인 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 대략 4자에 해당합니다. 100토큰은 대략 60~80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드를 특정 값으로 고정하면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정론적 출력은 보장되지 않습니다. 또한 동일한 시드 값을 사용하더라도 모델이나 temperature와 같은 파라미터 설정을 변경하면 응답에 차이가 발생할 수 있습니다. 기본적으로 무작위 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + + Temperature는 응답 생성 중 샘플링에 사용되며, 이는 topP와 topK가 적용될 때 발생합니다. Temperature는 토큰 선택의 무작위성 정도를 제어합니다. + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항. 사고 기능에 대한 설정입니다. 사고는 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항. 모델의 사고 과정을 위한 토큰 예산입니다. 모델은 이 예산을 지키기 위해 최선을 다합니다. + + + + 선택 사항. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력을 위해 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 다음으로 선택되는 토큰은 모델의 어휘 전체에서 가장 확률이 높은 토큰입니다. Top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰이 선택됩니다. + + 범위: `1` ~ `…` + + + + 지정한 경우, nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력을 위해 토큰을 선택하는 방식을 변경합니다. 확률의 합이 top-P 값과 같아질 때까지 확률이 가장 높은 토큰( top-K 참조)부터 가장 낮은 토큰 순으로 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5라면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답에는 낮은 값을, 무작위성이 큰 응답에는 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델이 더 나은 성능을 내도록 유도하는 지침입니다. 예를 들어 "가능한 한 간결하게 답변하세요" 또는 "응답에 기술 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 role 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 content는 별도의 단락으로 작성해야 합니다. + + + + 하나의 메시지를 구성하는 순서가 지정된 part 목록입니다. part마다 IANA MIME 유형이 다를 수 있습니다. 최대 토큰 수나 이미지 수와 같은 입력 제한은 Google 모델 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 메시지를 생성하는 주체의 정체성입니다. 다음 값이 지원됩니다. user: 메시지가 실제 사람에 의해 전송되었음을 나타내며, 일반적으로 사용자가 생성한 메시지입니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입할 때 사용됩니다. 다중 턴이 아닌 대화에서는 이 필드를 비워 두거나 설정하지 않아도 됩니다. + + 가능한 값: `user`, `model` + + + + 시스템이 모델의 지식과 범위를 벗어난 작업 또는 일련의 작업을 수행하기 위해 외부 시스템과 상호 작용할 수 있게 하는 코드 조각입니다. Function calling을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, Duration 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }으로 설정하세요. 메타데이터는 비디오 데이터가 inlineData 또는 fileData에 제공될 때만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초의 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000에서 +315,576,000,000까지(양 끝 포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초의 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000에서 +315,576,000,000까지(양 끝 포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + +Router가 `GET /v2/models/vertexai/gemini-3.1-pro-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 기준이 되는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 제한에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 타입(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고, 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 제한에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용. 입력의 캐시된 부분(캐시된 콘텐츠)에 있는 토큰 수입니다. + + + + 응답에 있는 토큰 수입니다. + + + + 모달리티별 candidate 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 지정된 모달리티의 토큰 수입니다. + + + + 요청에 있는 토큰 수입니다. cachedContent가 설정된 경우에도 이는 여전히 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 지정된 모달리티의 토큰 수입니다. + + + + thoughts 출력에 있는 토큰 수입니다. + + + + 도구 사용 프롬프트에 있는 토큰 수입니다. + + + + 총 토큰 수입니다(프롬프트 + candidates). + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence." + } + ] + } + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256 + } +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "text": "A single red maple leaf rests on a plain white background, its edges sharp and its color deep." + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 18, + "candidatesTokenCount": 24 + } +} +``` + + diff --git a/ko/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx b/ko/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..d7029ae19 --- /dev/null +++ b/ko/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx @@ -0,0 +1,201 @@ +--- +title: "Comfy Router로 Imagen 3.0 Fast Generate 001 사용하기" +description: "Comfy Router를 통해 vertexai/imagen-3.0-fast-generate-001을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Imagen 3.0 Fast Generate 001" +translationSourceHash: e525f52a +translationFrom: development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 7d487c80 + "Quick start": 00063379 + "Schema": 60702cd0 + "Examples": eb746872 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/vertexai/imagen-3.0-fast-generate-001.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google이 제공하고 Comfy Router가 서비스하는 `vertexai/imagen-3.0-fast-generate-001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `vertexai/imagen-3.0-fast-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-fast-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + + + + + + + + + 가능한 값: `1:1`, `9:16`, `16:9`, `3:4`, `4:3` + + + + + + + + + + + + + + + + + + + + 범위: `0` ~ `100` + + + + 가능한 값: `image/png`, `image/jpeg` + + + + 가능한 값: `dont_allow`, `allow_adult`, `allow_all` + + + + 가능한 값: `block_most`, `block_some`, `block_few`, `block_fewest` + + + + 범위: `1` ~ `4` + + + + 형식: `uint32` + + + + + + +Router가 `GET /v2/models/vertexai/imagen-3.0-fast-generate-001/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 콘텐츠 + + 형식: `byte` + + + + 생성된 이미지의 MIME 타입 + + + + 이 이미지를 생성하는 데 사용된, 향상되거나 다시 작성된 프롬프트 + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx b/ko/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx new file mode 100644 index 000000000..6b7e2ca36 --- /dev/null +++ b/ko/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx @@ -0,0 +1,201 @@ +--- +title: "Comfy Router로 Imagen 3.0 Generate 001 사용하기" +description: "Comfy Router를 통해 vertexai/imagen-3.0-generate-001을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Imagen 3.0 Generate 001" +translationSourceHash: 43b01e2e +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 71b466b2 + "Quick start": 1c03feb4 + "Schema": c1d82edb + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google이 Comfy Router를 통해 제공하는 `vertexai/imagen-3.0-generate-001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 전송합니다. + +**모델 ID:** `vertexai/imagen-3.0-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + + + + + + + + + 가능한 값: `1:1`, `9:16`, `16:9`, `3:4`, `4:3` + + + + + + + + + + + + + + + + + + + + 범위: `0` ~ `100` + + + + 가능한 값: `image/png`, `image/jpeg` + + + + 가능한 값: `dont_allow`, `allow_adult`, `allow_all` + + + + 가능한 값: `block_most`, `block_some`, `block_few`, `block_fewest` + + + + 범위: `1` ~ `4` + + + + 형식: `uint32` + + + + + + +`GET /v2/models/vertexai/imagen-3.0-generate-001/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용되는 동일한 문서입니다. + +### 출력 + + + + + + + Base64 인코딩된 이미지 콘텐츠 + + 형식: `byte` + + + + 생성된 이미지의 MIME 타입 + + + + 이 이미지를 생성하는 데 사용된 향상되거나 재작성된 프롬프트 + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx b/ko/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx new file mode 100644 index 000000000..e7a5037c9 --- /dev/null +++ b/ko/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx @@ -0,0 +1,200 @@ +--- +title: "Comfy Router로 Imagen 3.0 Generate 002 사용하기" +description: "Comfy Router를 통해 vertexai/imagen-3.0-generate-002를 호출합니다. endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Imagen 3.0 Generate 002" +translationSourceHash: 63ccef44 +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx +translationBlockHashes: + "_intro": 0286732d + "Quick start": d6972ab3 + "Schema": 187e4020 + "Examples": eb746872 +--- +{/* GENERATED FILE. router-schemas/vertexai/imagen-3.0-generate-002.json에서 `pnpm code-pages:gen`으로 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Google에서 Comfy Router로 제공하는 `vertexai/imagen-3.0-generate-002`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `vertexai/imagen-3.0-generate-002` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-002", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-002", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + + + + + + + + + 가능한 값: `1:1`, `9:16`, `16:9`, `3:4`, `4:3` + + + + + + + + + + + + + + + + + + + + 범위: `0` ~ `100` + + + + 가능한 값: `image/png`, `image/jpeg` + + + + 가능한 값: `dont_allow`, `allow_adult`, `allow_all` + + + + 가능한 값: `block_most`, `block_some`, `block_few`, `block_fewest` + + + + 범위: `1` ~ `4` + + + + 형식: `uint32` + + + + + + +Router가 `GET /v2/models/vertexai/imagen-3.0-generate-002/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 전달되기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 콘텐츠 + + 형식: `byte` + + + + 생성된 이미지의 MIME 타입 + + + + 이 이미지를 생성하는 데 사용된, 향상되거나 재작성된 프롬프트 + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/google/nano-banana-2-lite/code.mdx b/ko/development/comfy-router/models/google/nano-banana-2-lite/code.mdx new file mode 100644 index 000000000..6f342e0b8 --- /dev/null +++ b/ko/development/comfy-router/models/google/nano-banana-2-lite/code.mdx @@ -0,0 +1,588 @@ +--- +title: "Comfy Router로 Nano Banana 2 Lite 사용하기" +description: "Comfy Router를 통해 HTTP로 Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)로 이미지를 생성하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Nano Banana 2 Lite" +translationSourceHash: 18fa4c40 +translationFrom: development/comfy-router/models/google/nano-banana-2-lite/code.mdx +translationBlockHashes: + "_intro": a8ccbe06 + "Quick start": 882b3026 + "Schema": bc5fa507 + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Nano Banana 2 Lite에 대한 API 레퍼런스입니다. Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)는 Google의 Nano Banana 이미지 생성 제품군 중 Flash-Lite 등급으로, 더 낮은 지연 시간과 비용에 맞춰 조정되었습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `vertexai/gemini-3.1-flash-lite-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성을 위한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 값을 적용하고, 나머지는 모델 자체 동작으로 대체됩니다. + + + + 이미지 생성 구성 + + + + 생성된 이미지의 가로세로 비율 + + + + 선택 사항. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항. 출력 이미지의 압축 품질입니다. + + + + 선택 사항. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 대략 4자입니다. 100토큰은 대략 60-80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드가 특정 값으로 고정되면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정적 출력은 보장되지 않습니다. 또한 temperature와 같은 모델 또는 매개변수 설정을 변경하면 동일한 시드 값을 사용하더라도 응답에 변동이 발생할 수 있습니다. 기본적으로 임의의 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + + temperature는 응답 생성 중 샘플링에 사용되며, topP와 topK가 적용될 때 실행됩니다. temperature는 토큰 선택의 무작위성 정도를 제어합니다. + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항. 사고(thinking) 기능에 대한 구성입니다. 사고는 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항. 모델의 사고 과정에 대한 토큰 예산입니다. 모델은 이 예산을 넘지 않도록 최선을 다합니다. + + + + 선택 사항. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 다음에 선택되는 토큰은 모델 어휘의 모든 토큰 중에서 확률이 가장 높은 토큰입니다. Top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰이 선택됩니다. + + 범위: `1` ~ `…` + + + + 지정하면 nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력할 토큰을 선택하는 방식을 변경합니다. 토큰은 확률이 가장 높은 것(top-K 참조)부터 확률의 합이 top-P 값과 같아질 때까지 확률이 낮은 순서로 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5이면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답을 원하면 낮은 값을, 무작위성이 많은 응답을 원하면 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델을 더 나은 성능으로 이끌기 위한 지침입니다. 예를 들어 "가능한 한 간결하게 답변하세요" 또는 "응답에 기술 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 역할(role) 필드는 무시되며 모델 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 콘텐츠는 별도의 단락에 있어야 합니다. + + + + 하나의 메시지를 구성하는 순서가 있는 part 목록입니다. part마다 서로 다른 IANA MIME 유형을 가질 수 있습니다. 최대 토큰 수나 이미지 수와 같은 입력 제한은 Google 모델 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 메시지를 생성하는 주체의 정체성입니다. 다음 값이 지원됩니다. user: 메시지가 실제 사람, 일반적으로 사용자가 생성한 메시지임을 나타냅니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입하는 데 사용됩니다. 다중 턴이 아닌 대화에서는 이 필드를 비워 두거나 설정하지 않아도 됩니다. + + 가능한 값: `user`, `model` + + + + 시스템이 모델의 지식과 범위를 벗어난 작업 또는 일련의 작업을 수행하기 위해 외부 시스템과 상호작용할 수 있게 하는 코드 조각입니다. 함수 호출을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, Duration 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }으로 설정합니다. 메타데이터는 비디오 데이터가 inlineData 또는 fileData에 제공될 때만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현되는 초의 부호 있는 소수 부분입니다. 소수 부분을 가진 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현되는 초의 부호 있는 소수 부분입니다. 소수 부분을 가진 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0` ~ `999999999` + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000` ~ `315576000000` + + +Router가 `GET /v2/models/vertexai/gemini-3.1-flash-lite-image/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 멀티 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형태의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 타입(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + Unique identifier for the response. + + + + + + + + Output only. Number of tokens in the cached part in the input (the cached content). + + + + Number of tokens in the response(s). + + + + Breakdown of candidate tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens in the request. When cachedContent is set, this is still the total effective prompt size meaning this includes the number of tokens in the cached content. + + + + Breakdown of prompt tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens present in thoughts output. + + + + Number of tokens present in tool-use prompt(s). + + + + Total number of tokens (prompt + candidates). + + + + Traffic type used for the request (e.g., PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +기본적으로 생성된 이미지 part는 `inlineData.data`에 base64 바이트를, `inlineData.mimeType`에 미디어 타입을 포함합니다. 바이트를 디코딩하여 파일로 저장하세요. `uploadImagesToStorage: true`인 경우, 업로드된 이미지는 대신 `fileData.fileUri`에 서명된 URL을, `fileData.mimeType`에 미디어 타입을 사용합니다. 이 이미지들은 URL이 생성된 이후 24시간 뒤에 만료되므로 그 이전에 다운로드하세요. 업로드에 실패하면 해당 이미지는 인라인으로 남으므로, 각 part에서 `inlineData` 또는 `fileData`를 확인해야 합니다. 텍스트 part도 나타날 수 있으며, 이미지가 첫 번째 part라는 보장은 없습니다. + + diff --git a/ko/development/comfy-router/models/google/nano-banana-2/code.mdx b/ko/development/comfy-router/models/google/nano-banana-2/code.mdx new file mode 100644 index 000000000..f7f014711 --- /dev/null +++ b/ko/development/comfy-router/models/google/nano-banana-2/code.mdx @@ -0,0 +1,587 @@ +--- +title: "Comfy Router로 Nano Banana 2 사용하기" +description: "Comfy Router를 통해 HTTP로 Nano Banana 2(Gemini 3.1 Flash Image)로 이미지를 생성하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Nano Banana 2" +translationSourceHash: 56517d1b +translationFrom: development/comfy-router/models/google/nano-banana-2/code.mdx +translationBlockHashes: + "_intro": 8a65bc55 + "Quick start": 8373c3fb + "Schema": 5391bdc4 + "Examples": a15177bb +--- +{/* 생성된 파일입니다. 이 디렉터리의 code.yaml을 편집한 뒤 `pnpm code-pages:gen`을 실행하세요. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Nano Banana 2에 대한 API 레퍼런스입니다. Nano Banana 2(Gemini 3.1 Flash Image)는 텍스트로부터 이미지를 생성하며, 입력 이미지가 제공되면 해당 이미지를 편집합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `vertexai/gemini-3.1-flash-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 질의의 경우 단일 인스턴스입니다. 멀티 턴 질의의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성에 대한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 기본값이 적용되고, 나머지는 모델 자체의 동작을 따릅니다. + + + + 이미지 생성을 위한 구성입니다. + + + + 생성된 이미지의 가로세로 비율입니다. + + + + 선택 사항입니다. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항입니다. 출력 이미지의 압축 품질입니다. + + + + 선택 사항입니다. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항입니다. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값인 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰 하나는 약 4자에 해당합니다. 100개의 토큰은 대략 60~80단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드를 특정 값으로 고정하면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정론적 출력은 보장되지 않습니다. 또한 temperature와 같은 모델 또는 매개변수 설정을 변경하면 동일한 시드 값을 사용하더라도 응답에 변화가 생길 수 있습니다. 기본적으로 무작위 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +temperature는 응답 생성 중 샘플링에 사용되며, 이는 topP와 topK가 적용될 때 발생합니다. temperature는 토큰 선택의 무작위성 정도를 제어합니다. 낮은 temperature는 덜 개방적이거나 창의적인 응답이 필요한 프롬프트에 적합하고, 높은 temperature는 더 다양하거나 창의적인 결과를 낼 수 있습니다. temperature가 0이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 주어진 프롬프트에 대한 응답은 대부분 결정적이지만, 약간의 변동은 여전히 가능합니다. 모델이 너무 일반적이거나 너무 짧은 응답을 반환하거나 대체 응답을 제공한다면 temperature를 높여 보세요 + + 범위: `0`부터 `2`까지 + + 형식: `float` + + + + 선택 사항입니다. 사고(thinking) 기능에 대한 설정입니다. 사고는 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항입니다. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항입니다. 모델의 사고 과정을 위한 토큰 예산입니다. 모델은 이 예산을 넘지 않도록 최선을 다합니다. + + + + 선택 사항입니다. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력을 위해 토큰을 선택하는 방식을 변경합니다. Top-K가 1이면 다음에 선택되는 토큰은 모델 어휘의 모든 토큰 중에서 확률이 가장 높은 토큰입니다. Top-K가 3이면 temperature를 사용하여 확률이 가장 높은 3개의 토큰 중에서 다음 토큰이 선택됩니다. + + 범위: `1`부터 `…`까지 + + + + 지정하면 nucleus 샘플링이 사용됩니다. +Top-P는 모델이 출력을 위해 토큰을 선택하는 방식을 변경합니다. 토큰은 확률이 가장 높은 것(top-K 참조)부터 가장 낮은 것까지 선택되며, 확률의 합이 top-P 값과 같아질 때까지 진행됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5이면, 모델은 temperature를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답에는 낮은 값을, 무작위성이 큰 응답에는 높은 값을 지정하세요. + + 범위: `0`부터 `1`까지 + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델을 더 나은 성능으로 이끌기 위한 지침입니다. 예를 들어 "가능한 한 간결하게 답변하세요" 또는 "응답에 전문 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 토큰 한도에 포함됩니다. systemInstruction의 역할 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 콘텐츠는 별도의 단락에 있어야 합니다. + + + + 하나의 메시지를 구성하는 순서가 있는 part 목록입니다. part마다 IANA MIME 유형이 다를 수 있습니다. 최대 토큰 수나 이미지 수와 같은 입력 제한에 대해서는 Google 모델 페이지의 모델 사양을 참조하세요. + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 메시지를 생성하는 주체의 정체성입니다. 다음 값이 지원됩니다. user: 메시지가 실제 사람이 보낸 것으로, 일반적으로 사용자가 생성한 메시지임을 나타냅니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입할 때 사용됩니다. 다중 턴이 아닌 대화에서는 이 필드를 비워 두거나 설정하지 않을 수 있습니다. + + 가능한 값: `user`, `model` + + + + 시스템이 모델의 지식과 범위를 벗어난 작업 또는 일련의 작업을 수행하기 위해 외부 시스템과 상호 작용할 수 있게 해 주는 코드 조각입니다. 함수 호출(Function calling)을 참조하세요. + + + + + + + + + + + + + + + + 함수 파라미터에 대한 JSON 스키마입니다. + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, 재생 시간 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }을 설정하세요. 메타데이터는 비디오 데이터가 inlineData 또는 fileData로 제공되는 동안에만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현되는 초의 부호 있는 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0`부터 `999999999`까지 + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000`부터 `315576000000`까지 + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도로 표현되는 초의 부호 있는 소수 부분입니다. 소수 부분이 있는 음수 초 값이라도 나노초 값은 음수가 아니어야 합니다. + + 범위: `0`부터 `999999999`까지 + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000`부터 `315576000000`까지 + + +Router가 `GET /v2/models/vertexai/gemini-3.1-flash-image/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 다중 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 없음)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 시점의 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다.Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용입니다. 입력의 캐시된 부분(캐시된 콘텐츠)에 있는 토큰 수입니다. + + + + 응답에 있는 토큰 수입니다. + + + + 모달리티별 후보 토큰의 세부 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + 요청에 있는 토큰 수입니다. cachedContent가 설정된 경우에도 이는 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 세부 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + thoughts 출력에 있는 토큰 수입니다. + + + + 도구 사용 프롬프트에 있는 토큰 수입니다. + + + + 총 토큰 수입니다(프롬프트 + 후보). + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +기본적으로 생성된 이미지 파트는 `inlineData.data`에 base64 바이트를, `inlineData.mimeType`에 미디어 타입을 담고 있습니다. 바이트를 디코딩하여 파일로 저장하세요. `uploadImagesToStorage: true`를 사용하면 업로드된 이미지는 대신 서명된 URL을 위한 `fileData.fileUri`와 미디어 타입을 위한 `fileData.mimeType`을 사용합니다. 이러한 이미지는 생성된 이후 24시간 뒤에 URL이 만료되므로 그 이전에 다운로드하세요. 업로드가 실패하면 해당 이미지는 인라인으로 남으므로, 각 파트에서 `inlineData` 또는 `fileData`를 확인하세요. 텍스트 파트가 함께 나타날 수도 있으며, 이미지가 첫 번째 파트라고 보장되지는 않습니다. + + diff --git a/ko/development/comfy-router/models/google/nano-banana-pro/code.mdx b/ko/development/comfy-router/models/google/nano-banana-pro/code.mdx new file mode 100644 index 000000000..ff9fb2d1c --- /dev/null +++ b/ko/development/comfy-router/models/google/nano-banana-pro/code.mdx @@ -0,0 +1,586 @@ +--- +title: "Comfy Router로 Nano Banana Pro 사용하기" +description: "Comfy Router를 통해 HTTP로 Nano Banana Pro(Gemini 3 Pro Image)로 이미지를 생성하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Nano Banana Pro" +translationSourceHash: 3c4ad72a +translationFrom: development/comfy-router/models/google/nano-banana-pro/code.mdx +translationBlockHashes: + "_intro": a2c404c6 + "Quick start": bf1dcb2a + "Schema": fff3776b + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Nano Banana Pro API 레퍼런스입니다. Nano Banana Pro(Gemini 3 Pro Image)는 Google의 Nano Banana 이미지 생성 제품군 가운데 Pro 티어로, 복잡한 장면과 읽기 쉬운 텍스트를 겨냥합니다. + +## 빠른 시작 {#quick-start} + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `vertexai/gemini-3-pro-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3-pro-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3-pro-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## 스키마 + +### 입력 + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 멀티 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 타입(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 타입입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + 생성을 위한 샘플링, 길이 및 출력 설정입니다. 모든 필드는 선택 사항입니다. 아래에서 `default`를 선언한 필드는 생략 시 해당 값을 적용하고, 나머지는 모델 자체 동작으로 대체됩니다. + + + + 이미지 생성을 위한 구성 + + + + 생성된 이미지의 가로세로 비율 + + + + 선택 사항입니다. 생성된 이미지의 이미지 출력 형식입니다. + + + + 선택 사항입니다. 출력 이미지의 압축 품질입니다. + + + + 선택 사항입니다. 출력을 저장할 이미지 형식입니다. + + + + 선택 사항입니다. 생성된 이미지의 크기를 지정합니다. 지원되는 값은 1K, 2K, 4K입니다. 지정하지 않으면 모델은 기본값 1K를 사용합니다. + + + + 응답에서 생성할 수 있는 최대 토큰 수입니다. 토큰은 대략 4자입니다. 100 토큰은 대략 60-80 단어에 해당합니다. + + 범위: `16` ~ `65536` + + + + + + + + 시드가 특정 값으로 고정되면 모델은 반복 요청에 대해 동일한 응답을 제공하기 위해 최선을 다합니다. 결정론적 출력은 보장되지 않습니다. 또한 temperature와 같은 모델 또는 매개변수 설정을 변경하면 동일한 시드 값을 사용하더라도 응답에 변동이 생길 수 있습니다. 기본적으로 임의의 시드 값이 사용됩니다. 다음 모델에서 사용할 수 있습니다: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + + +Temperature는 응답 생성 중 샘플링에 사용되며, 이는 topP와 topK가 적용될 때 발생합니다. Temperature는 token 선택의 무작위성 정도를 제어합니다. 낮은 temperature는 덜 개방적이거나 창의적인 응답이 필요한 프롬프트에 적합하고, 높은 temperature는 더 다양하거나 창의적인 결과를 낼 수 있습니다. Temperature가 0이면 항상 확률이 가장 높은 token이 선택됩니다. 이 경우 주어진 프롬프트에 대한 응답은 대부분 결정적이지만, 약간의 변동은 여전히 가능합니다. 모델이 너무 일반적이거나 너무 짧은 응답을 반환하거나 대체 응답(fallback)을 제공하는 경우 temperature를 높여 보세요. + + 범위: `0` ~ `2` + + 형식: `float` + + + + 선택 사항. 사고(thinking) 기능에 대한 설정입니다. 사고는 모델이 복잡한 작업을 더 작은 단계로 나누어 더 높은 품질의 응답을 생성하는 과정입니다. + + + + 선택 사항. 참이면 모델이 응답에 자신의 사고 내용을 포함합니다. + + + + 선택 사항. 모델의 사고 과정에 대한 token 예산입니다. 모델은 이 예산을 지키기 위해 최선을 다합니다. + + + + 선택 사항. 모델의 사고 수준입니다. + + 가능한 값: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K는 모델이 출력할 token을 선택하는 방식을 변경합니다. Top-K가 1이면 다음에 선택되는 token은 모델 어휘 전체에서 가장 확률이 높은 token입니다. Top-K가 3이면 다음 token은 확률이 가장 높은 3개의 token 중에서 temperature를 사용해 선택됩니다. + + 범위: `1` ~ `…` + + + + 지정된 경우 nucleus sampling이 사용됩니다. +Top-P는 모델이 출력할 token을 선택하는 방식을 변경합니다. 확률의 합이 top-P 값과 같아질 때까지 확률이 가장 높은(see top-K) token부터 가장 낮은 token까지 선택됩니다. 예를 들어 token A, B, C의 확률이 각각 0.3, 0.2, 0.1이고 top-P 값이 0.5라면, 모델은 temperature를 사용해 A 또는 B를 다음 token으로 선택하고 C는 후보에서 제외합니다. +무작위성이 적은 응답을 원하면 더 낮은 값을, 무작위성이 큰 응답을 원하면 더 높은 값을 지정하세요. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 안전하지 않은 콘텐츠를 차단하기 위한 요청별 설정입니다. GenerateContentResponse.candidates에 적용됩니다. + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 가능한 값: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + 모델을 더 나은 성능으로 이끌기 위한 지침입니다. 예를 들어 "가능한 한 간결하게 답하세요" 또는 "응답에 전문 용어를 사용하지 마세요"와 같습니다. 텍스트 문자열은 token 한도에 포함됩니다. systemInstruction의 역할(role) 필드는 무시되며 모델의 성능에 영향을 주지 않습니다. 참고: parts에는 텍스트만 사용해야 하며, 각 part의 콘텐츠는 별도의 단락에 있어야 합니다. + + + + 하나의 메시지를 구성하는 순서가 지정된 part 목록입니다. part마다 서로 다른 IANA MIME 유형을 가질 수 있습니다. 최대 token 수나 이미지 수와 같은 입력 제한은 Google 모델 페이지의 모델 사양을 참고하세요. + + + + 텍스트 프롬프트 또는 코드 조각입니다. + + + + 메시지를 생성하는 주체의 identity입니다. 다음 값이 지원됩니다: user: 메시지가 실제 사람에 의해 전송되었음을 나타내며, 일반적으로 사용자가 생성한 메시지입니다. model: 메시지가 모델에 의해 생성되었음을 나타냅니다. model 값은 다중 턴 대화 중에 모델의 메시지를 대화에 삽입하는 데 사용됩니다. 다중 턴 대화가 아닌 경우 이 필드는 비워 두거나 설정하지 않아도 됩니다. + + 가능한 값: `user`, `model` + + + + 시스템이 외부 시스템과 상호작용하여 모델의 지식과 범위를 벗어난 작업 또는 작업 집합을 수행할 수 있게 하는 코드 조각입니다. 함수 호출(Function calling)을 참고하세요. + + + + + + + + + + + + + + + + 함수 parameters에 대한 JSON schema입니다 + + + + 참이면 생성된 이미지가 클라우드 스토리지에 업로드되고 인라인 base64 데이터 대신 서명된 URL로 반환됩니다. URL은 24시간 후에 만료됩니다. + + + + 비디오 입력의 경우, Duration 형식으로 된 비디오의 시작 및 종료 오프셋입니다. 예를 들어 1:00에서 시작하는 10초 클립을 지정하려면 "startOffset": \{ "seconds": 60 } 및 "endOffset": \{ "seconds": 70 }으로 설정합니다. 메타데이터는 비디오 데이터가 inlineData 또는 fileData로 제공될 때만 지정해야 합니다. + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수입니다. 소수를 포함한 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0`부터 `999999999`까지 + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000`부터 `315576000000`까지 + + + + 비디오 타임라인 위치에 대한 재생 시간 오프셋을 나타냅니다. + + + + 나노초 해상도의 부호 있는 초 단위 소수입니다. 소수를 포함한 음수 초 값이라도 nanos 값은 음수가 아니어야 합니다. + + 범위: `0`부터 `999999999`까지 + + + + 시간 범위의 부호 있는 초입니다. -315,576,000,000부터 +315,576,000,000까지(양끝 포함)여야 합니다. + + 범위: `-315576000000`부터 `315576000000`까지 + + +Router가 `GET /v2/models/vertexai/gemini-3-pro-image/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + 형식: `date` + + + + + + + + + + + + + + + + 모델과의 현재 대화 콘텐츠입니다. 단일 턴 쿼리의 경우 단일 인스턴스입니다. 멀티 턴 쿼리의 경우 대화 기록과 최신 요청을 포함하는 반복 필드입니다. + + + + + + + + URI 기반 데이터입니다. + + + + URI + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 원시 바이트 형식의 인라인 데이터입니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 inlineData를 사용하여 최대 3000개의 이미지를 지정할 수 있습니다. + + + + 프롬프트에 인라인으로 포함할 이미지, PDF 또는 비디오의 base64 인코딩입니다. 미디어를 인라인으로 포함할 때는 데이터의 미디어 유형(mimeType)도 지정해야 합니다. 크기 제한: 20MB + + 형식: `byte` + + + + data 또는 fileUri 필드에 지정된 파일의 미디어 유형입니다. 허용되는 값은 다음과 같습니다. gemini-2.0-flash-lite 및 gemini-2.0-flash의 경우 오디오 파일의 최대 길이는 8.4시간이고 비디오 파일(오디오 제외)의 최대 길이는 1시간입니다. 자세한 내용은 Gemini 오디오 및 비디오 요구 사항을 참조하세요. 텍스트 파일은 UTF-8로 인코딩되어야 합니다. 텍스트 파일의 내용은 토큰 한도에 포함됩니다. 이미지 해상도에는 제한이 없습니다. + + 가능한 값: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 텍스트 프롬프트 또는 코드 스니펫입니다. + + + + 이 부분이 모델의 사고/추론 단계임을 나타냅니다. + + + + 가능한 값: `user`, `model` + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + + 가능한 값: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 응답이 생성된 타임스탬프입니다. + + + + 응답을 생성하는 데 사용된 모델 버전입니다. + + + + + + + + + + + + + + + + + + + + 가능한 값: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 콘텐츠가 지정된 안전 카테고리를 위반할 확률입니다. + 응답의 고유 식별자입니다. + + + + + + + + 출력 전용입니다. 입력에서 캐시된 부분(캐시된 콘텐츠)의 토큰 수입니다. + + + + 응답에 포함된 토큰 수입니다. + + + + 모달리티별 후보 토큰의 세부 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + 가능한 값: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + 요청에 포함된 토큰 수입니다. cachedContent가 설정된 경우에도 이는 총 유효 프롬프트 크기이며, 캐시된 콘텐츠의 토큰 수를 포함합니다. + + + + 모달리티별 프롬프트 토큰의 세부 내역입니다. + + + + 입력 또는 출력 콘텐츠 모달리티의 유형입니다. + + 가능한 값: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 해당 모달리티의 토큰 수입니다. + + + + thoughts 출력에 포함된 토큰 수입니다. + + + + 도구 사용 프롬프트에 포함된 토큰 수입니다. + + + + 총 토큰 수입니다(프롬프트 + 후보). + + + + 요청에 사용된 트래픽 유형입니다(예: PROVISIONED_THROUGHPUT). + + +## 예시 + +### 입력 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 출력 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +기본적으로 생성된 이미지 part에는 `inlineData.data`에 base64 바이트가, `inlineData.mimeType`에 미디어 타입이 포함됩니다. 바이트를 디코딩하여 파일로 저장하세요. `uploadImagesToStorage: true`인 경우, 업로드된 이미지는 대신 서명된 URL에 `fileData.fileUri`를, 미디어 타입에 `fileData.mimeType`을 사용합니다. URL이 만료되기 전에 이 이미지들을 다운로드하세요. URL은 생성된 후 24시간이 지나면 만료됩니다. 업로드가 실패하면 해당 이미지는 인라인으로 남으므로, 각 part에서 `inlineData` 또는 `fileData`를 확인하세요. 텍스트 part도 나타날 수 있으며, 이미지가 첫 번째 part라는 보장은 없습니다. + + diff --git a/ko/development/comfy-router/models/heygen/starfish/code.mdx b/ko/development/comfy-router/models/heygen/starfish/code.mdx new file mode 100644 index 000000000..4683c8091 --- /dev/null +++ b/ko/development/comfy-router/models/heygen/starfish/code.mdx @@ -0,0 +1,164 @@ +--- +title: "Comfy Router에서 Starfish 사용하기" +description: "Comfy Router를 통해 heygen/starfish를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Starfish" +translationSourceHash: 61d22fda +translationFrom: development/comfy-router/models/heygen/starfish/code.mdx +translationBlockHashes: + "_intro": 2fa9af39 + "Quick start": 67de0272 + "Schema": e2e4a0e8 + "Examples": 91957ee9 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/heygen/starfish.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HeyGen이 Comfy Router를 통해 제공하는 `heygen/starfish`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `heygen/starfish` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/heygen/starfish` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "heygen/starfish", + { + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("heygen/starfish", { + text: "This is a billing verification test for HeyGen speech generation.", + voice_id: "d2f4f24783d04e22ab49ee8fdc3715e0", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/heygen/starfish \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text\": \"This is a billing verification test for HeyGen speech generation.\", \"voice_id\": \"d2f4f24783d04e22ab49ee8fdc3715e0\"}" +``` + + +## 스키마 + +### 입력 + + + 입력 유형: 일반 텍스트의 경우 'text', SSML 마크업의 경우 'ssml'. 기본값은 'text' + + + + 기본 언어 코드(예: 'en'). 생략하면 텍스트에서 자동 감지됩니다 + + + + BCP-47 언어 설정 태그(예: 'en-US'). 설정되면 언어 설정에서 언어를 유추합니다 + + + + 속도 배율(0.5-2.0) + + 범위: `0.5` ~ `2` + + 형식: `double` + + + + 합성할 텍스트(1-5000자) + + + + 사용할 Voice ID. 해당 음성은 starfish 엔진을 지원해야 합니다 + + +이 문서는 Router가 `GET /v2/models/heygen/starfish/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 성공한 HeyGen 텍스트 기반 음성 생성 응답의 페이로드 + + + + 생성된 오디오 파일의 URL + + + + 오디오의 재생 시간(초) + + 형식: `double` + + + + 이 생성 요청의 고유 식별자 + + + + 단어 수준 타이밍 데이터 + + + + 종료 시간(초) + + 형식: `double` + + + + 시작 시간(초) + + 형식: `double` + + + + 단어 + + +## 예시 + +### 입력 + +```json +{ + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0" +} +``` + +### 출력 + +```json +{ + "data": { + "audio_url": "https://example.invalid/heygen/starfish/speech.mp3", + "duration": 12.5, + "request_id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9" + } +} +``` + + diff --git a/ko/development/comfy-router/models/ideogram/ideogram-v3/code.mdx b/ko/development/comfy-router/models/ideogram/ideogram-v3/code.mdx new file mode 100644 index 000000000..8c2927882 --- /dev/null +++ b/ko/development/comfy-router/models/ideogram/ideogram-v3/code.mdx @@ -0,0 +1,207 @@ +--- +title: "Comfy Router로 Ideogram V3 사용하기" +description: "Comfy Router를 통해 ideogram/ideogram-v3를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Ideogram V3" +translationSourceHash: 42cffa9c +translationFrom: development/comfy-router/models/ideogram/ideogram-v3/code.mdx +translationBlockHashes: + "_intro": 074a583c + "Quick start": bc06ae27 + "Schema": f5d9b6a6 + "Examples": 1fc8611a +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/ideogram/ideogram-v3.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Ideogram에서 Comfy Router가 제공하는 `ideogram/ideogram-v3`에 대한 API Reference입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY` 환경 변수로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `ideogram/ideogram-v3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v3", + { + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/ideogram-v3", { + prompt: "A beautiful mountain landscape", + rendering_speed: "TURBO", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\", \"rendering_speed\": \"TURBO\"}" +``` + + +## 스키마 + +### 입력 + + + WxH 형식의 가로세로 비율 + + + + + + + + 선택적 가중치가 있는 명시적 색상 + + + + 16진수 색상 코드 + + + + 색상의 선택적 가중치 (0-1) + + 범위: `0` ~ `1` + + + + 색상 팔레트의 이름 + + + + 매직 프롬프트 향상 기능을 활성화할지 여부 + + 가능한 값: `AUTO`, `ON`, `OFF` + + + + 생성에서 피해야 할 내용을 지정하는 텍스트 프롬프트 + + + + 생성할 이미지 수 + + 범위: `1` ~ `…` + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + 생성 속도와 품질 사이의 균형을 제어하는 렌더링 속도 설정 + + 가능한 값: `DEFAULT`, `TURBO`, `QUALITY` + + + + WxH 형식의 이미지 해상도 + + + + 재현 가능한 생성을 위한 시드 값 + + + + 16진수 형식의 스타일 코드 배열 + + + + 가능한 값: `AUTO`, `GENERAL`, `REALISTIC`, `DESIGN`, `FICTION` + + +Router가 `GET /v2/models/ideogram/ideogram-v3/openapi.json`에서 제공하는 스키마에서 생성되며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시각의 타임스탬프. + + 형식: `date-time` + + + + 생성된 이미지 정보의 배열. + + + + 이미지가 안전한 것으로 간주되는지 여부를 나타냅니다. + + + + 이 이미지를 생성하는 데 사용된 프롬프트. + + + + 생성된 이미지의 해상도 (예: '1024x1024'). + + + + 이 생성에 사용된 시드 값. + + + + 생성에 사용된 스타일 유형 (예: 'REALISTIC', 'ANIME'). + + + + 생성된 이미지의 URL. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO" +} +``` + +### 출력 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/ideogram-v3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/ideogram/ideogram-v4/code.mdx b/ko/development/comfy-router/models/ideogram/ideogram-v4/code.mdx new file mode 100644 index 000000000..36c808309 --- /dev/null +++ b/ko/development/comfy-router/models/ideogram/ideogram-v4/code.mdx @@ -0,0 +1,166 @@ +--- +title: "Comfy Router로 Ideogram 4.0 사용하기" +description: "Comfy Router를 통해 HTTP로 Ideogram 4.0 이미지를 생성하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Ideogram 4.0" +translationSourceHash: e77eb667 +translationFrom: development/comfy-router/models/ideogram/ideogram-v4/code.mdx +translationBlockHashes: + "_intro": b9914544 + "Quick start": e25a5de5 + "Schema": da4e8bcc + "Examples": 094048af +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Ideogram 4.0의 API 레퍼런스입니다. Ideogram 4.0은 Ideogram의 텍스트 기반 이미지 생성 모델로, 생성된 이미지 안에 읽을 수 있는 텍스트를 렌더링합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `ideogram/ideogram-v4` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v4", + { + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT", + }, + ) + +print("image:", result["data"][0]["url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { data: { url: string }[] }; +const { data } = await comfy.models.run("ideogram/ideogram-v4", { + text_prompt: "a single red maple leaf on a plain white background, studio lighting", + resolution: "1024x1024", + rendering_speed: "DEFAULT", +}); + +console.log("image:", data.data[0].url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text_prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"resolution\": \"1024x1024\", \"rendering_speed\": \"DEFAULT\"}" +``` + + +## 스키마 + +### 입력 + + + 생성 후 저작권 감지(Hive 유사도 및 로고 검사)를 선택적으로 활성화합니다. + + + + 구조화된 V4 프롬프트입니다. Magic Prompt를 비활성화하며 직접 사용됩니다. text_prompt 또는 json_prompt 중 정확히 하나만 제공하세요. + + + + 생성 속도와 품질 사이의 균형을 제어하는 렌더링 속도 설정입니다. + + 가능한 값: `DEFAULT`, `TURBO`, `QUALITY` + + + + WIDTHxHEIGHT 형식의 출력 해상도입니다. 생략하면 모델이 화면 비율을 선택합니다. 지원되는 2K 값: 2048x2048, 1440x2880, 2880x1440, 1664x2496, 2496x1664, 1792x2240, 2240x1792, 1440x2560, 2560x1440, 1600x2560, 2560x1600, 1728x2304, 2304x1728, 1296x3168, 3168x1296, 1152x2944, 2944x1152, 1248x3328, 3328x1248, 1280x3072, 3072x1280. + + + + 자연어 프롬프트입니다. Magic Prompt를 자동으로 활성화합니다. text_prompt 또는 json_prompt 중 정확히 하나만 제공하세요. + + +Router가 `GET /v2/models/ideogram/ideogram-v4/openapi.json`에서 제공하는 스키마에서 생성된 문서이며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 타임스탬프입니다. + + 형식: `date-time` + + + + 생성된 이미지 정보의 배열입니다. + + + + 이미지가 안전한 것으로 간주되는지 여부를 나타냅니다. + + + + 이 이미지를 생성하는 데 사용된 프롬프트입니다. + + + + 생성된 이미지의 해상도입니다(예: '1024x1024'). + + + + 이 생성에 사용된 시드 값입니다. + + + + 생성에 사용된 스타일 유형입니다(예: 'REALISTIC', 'ANIME'). + + + + 생성된 이미지의 URL입니다. + + +## 예제 + +### 입력 + +```json +{ + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT" +} +``` + +### 출력 + +```json +{ + "response_type": "url", + "created": "2026-08-27T21:00:00Z", + "data": [ + { + "url": "https://.../image.png", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "seed": 1234567890, + "is_image_safe": true + } + ] +} +``` + +URL은 임시입니다. 이미지를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx b/ko/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx new file mode 100644 index 000000000..ab31bc705 --- /dev/null +++ b/ko/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx @@ -0,0 +1,163 @@ +--- +title: "Comfy Router로 P Image Ideogram 사용하기" +description: "Comfy Router를 통해 ideogram/p-image-ideogram을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "P Image Ideogram" +translationSourceHash: 063a5bfe +translationFrom: development/comfy-router/models/ideogram/p-image-ideogram/code.mdx +translationBlockHashes: + "_intro": de73d082 + "Quick start": c96cb422 + "Schema": 3aed066f + "Examples": 20db9e6c +--- +{/* GENERATED FILE. Generated from router-schemas/ideogram/p-image-ideogram.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`ideogram/p-image-ideogram`에 대한 API 레퍼런스이며, Comfy Router가 Ideogram에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `ideogram/p-image-ideogram` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/ideogram/p-image-ideogram` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/p-image-ideogram", + { + "prompt": "A beautiful mountain landscape", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/p-image-ideogram", { + prompt: "A beautiful mountain landscape", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/p-image-ideogram \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\"}" +``` + + +## 스키마 + +### 입력 + + + WxH 형식의 종횡비입니다. 지원 값: 1x3, 3x1, 1x2, 2x1, 9x16, 16x9, 10x16, 16x10, 2x3, 3x2, 3x4, 4x3, 4x5, 5x4, 1x1. 기본값은 1x1입니다. + + + + 생성 후 저작권 감지(Hive 유사성 및 로고 검사)를 선택적으로 활성화합니다. + + + + 이미지 생성을 위한 프롬프트로, 자연어 또는 Ideogram 4.0 JSON 구조화 프롬프트입니다. + + + + 프롬프트 업샘플링 모드입니다. 지원 값은 AUTO, ON, OFF입니다. 기본값은 AUTO입니다. + + + + 생성 품질 수준입니다. 지원 값은 VERY_LOW, LOW, MEDIUM, HIGH입니다. 기본값은 MEDIUM입니다. + + + + 출력 해상도입니다. 지원 값은 1K, 2K입니다. 기본값은 1K입니다. + + + + 재현 가능한 생성을 위한 시드 값입니다. + + +Router가 `GET /v2/models/ideogram/p-image-ideogram/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 생성된 시점의 타임스탬프입니다. + + 형식: `date-time` + + + + 생성된 이미지 정보의 배열입니다. + + + + 이미지가 안전한 것으로 간주되는지 여부를 나타냅니다. + + + + 이 이미지를 생성하는 데 사용된 프롬프트입니다. + + + + 생성된 이미지의 해상도입니다(예: '1024x1024'). + + + + 이 생성에 사용된 시드 값입니다. + + + + 생성에 사용된 스타일 유형입니다(예: 'REALISTIC', 'ANIME'). + + + + 생성된 이미지의 URL입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A beautiful mountain landscape" +} +``` + +### 출력 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/p-image-ideogram/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx b/ko/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx new file mode 100644 index 000000000..7c5cba5df --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx @@ -0,0 +1,288 @@ +--- +title: "Comfy Router로 Kling 3.0 Turbo 사용하기" +description: "Comfy Router를 통해 kling/kling-3.0-turbo를 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Kling 3.0 Turbo" +translationSourceHash: d9428b90 +translationFrom: development/comfy-router/models/kling/kling-3-0-turbo/code.mdx +translationBlockHashes: + "_intro": b67babfc + "Quick start": a4f17f83 + "Schema": 2e661ab0 + "Examples": 0a9a8bbe +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-3.0-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-3.0-turbo`에 대한 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**Model ID:** `kling/kling-3.0-turbo` + +**Endpoint:** `POST https://api.comfy.org/v2/models/kling/kling-3.0-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-3.0-turbo", + { + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-3.0-turbo", { + prompt: "A neon-lit alley in the rain, slow dolly forward.", + settings: { + aspect_ratio: "16:9", + duration: 5, + resolution: "1080p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-3.0-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A neon-lit alley in the rain, slow dolly forward.\", \"settings\": {\"aspect_ratio\":\"16:9\",\"duration\":5,\"resolution\":\"1080p\"}}" +``` + + +## 스키마 + +### 입력 + + + 콜백 주소와 워터마크 옵션 등 일반 구성입니다. + + + + 작업 결과에 대한 콜백 알림 URL입니다. 작업 상태가 변경되면 서버가 알림을 보냅니다. + + + + 사용자 지정 작업 ID입니다. 시스템이 생성한 작업 ID를 덮어쓰지는 않지만 조회에 사용할 수 있습니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 워터마크가 적용된 결과를 동시에 생성할지 여부입니다. 사용자 지정 워터마크는 지원되지 않습니다. + + + + true이면 워터마크가 적용된 결과를 생성하고, false이면 생성하지 않습니다. 기본값은 false입니다. + + + + 긍정 및 부정 설명을 모두 포함할 수 있는 프롬프트입니다. 길이는 2500자 미만을 권장합니다. 멀티 샷 비디오는 "shot n, m, words; shot n, m, words;" 형식을 사용합니다. + + + + 해상도, 화면 비율, 재생 시간 등 출력 구성입니다. + + + + 생성된 프레임의 화면 비율(너비:높이)입니다. "16:9", "9:16", "1:1" 중 하나입니다. 기본값은 "16:9"입니다. + + 사용 가능한 값: `16:9`, `9:16`, `1:1` + + + + 비디오 길이(초)입니다. 지원 값은 3부터 15까지입니다. 기본값은 5입니다. + + 범위: `3` ~ `15` + + + + 생성된 비디오의 선명도입니다. "720p" 또는 "1080p" 중 하나입니다. 기본값은 "720p"입니다. + + 사용 가능한 값: `720p`, `1080p` + + +`GET /v2/models/kling/kling-3.0-turbo/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 문서와 동일합니다. + +### 출력 + + + 오류 코드입니다. 0은 성공을 나타냅니다. + + + + 쿼리와 일치하는 작업입니다. + + + + 작업의 청구 세부 정보입니다. + + + + 소비 금액이며 소수점 둘째 자리까지 정확합니다. + + + + 소비 계정 유형입니다. "cash"는 잔액, "unit"은 리소스 패키지를 의미합니다. + + + + 사용 가능한 리소스 번들 유형입니다(charge_type이 "unit"인 경우에만 존재). "video", "image", "audio" 중 하나입니다. + + + + 작업 생성 시간입니다. Unix 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 이 작업의 사용자 지정 작업 ID입니다(있는 경우). + + + + 작업 ID입니다. + + + + 작업 상태 정보이며, 작업이 실패하면 실패 이유를 표시합니다. + + + + 작업의 생성된 출력입니다. + + + + 생성된 비디오의 재생 시간(초)입니다. + + + + 그룹화 표시로, 그룹화된 이미지에만 존재합니다. + + + + 시스템이 생성한 출력 ID입니다. + + + + 생성된 MP3 오디오의 재생 시간(초)입니다. + + + + 생성된 오디오의 MP3 URL입니다(핫링크 방지 적용). + + + + 생성된 소재의 이름입니다. + + + + 소재의 소스입니다. "kling"은 공식 라이브러리를 나타내며, 숫자는 제작자 ID입니다. + + + + 소재의 상태입니다. "succeeded" 또는 "deleted" 중 하나입니다. + + + + 출력 콘텐츠 유형입니다. "video", "image", "audio", "voice", "element" 중 하나입니다. + + + + 생성된 결과의 URL입니다(핫링크 방지 적용). 30일 후에 삭제됩니다. + + + + 워터마크가 적용된 결과의 URL입니다(핫링크 방지 적용). + + + + 생성된 WAV 오디오의 재생 시간(초)입니다. + + + + 생성된 오디오의 WAV URL입니다(핫링크 방지 적용). + + + + 작업 상태입니다. "submitted", "processing", "succeeded", "failed" 중 하나입니다. + + + + 작업 업데이트 시간입니다. Unix 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 오류 메시지입니다. + + + + 시스템이 생성한 요청 ID입니다. + + +## 예시 + +### 입력 + +```json +{ + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p" + } +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": [ + { + "create_time": 1798761600000, + "id": "kling-v2-task-7c8d9e0f1a2b", + "message": "", + "outputs": [ + { + "duration": "5", + "id": "kling-v2-output-2b1a0f9e8d7c", + "type": "video", + "url": "https://example.invalid/kling/kling-3.0-turbo/generated.mp4" + } + ], + "status": "succeeded", + "update_time": 1798761820000 + } + ], + "message": "SUCCEED", + "request_id": "3d7e5c91-0b42-4f68-9a13-8e2c6d4b0a75" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-image-o1/code.mdx b/ko/development/comfy-router/models/kling/kling-image-o1/code.mdx new file mode 100644 index 000000000..dcee94cfe --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-image-o1/code.mdx @@ -0,0 +1,272 @@ +--- +title: "Comfy Router와 함께 Kling Image O1 사용하기" +description: "Comfy Router를 통해 kling/kling-image-o1 호출하기: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling Image O1" +translationSourceHash: 596065da +translationFrom: development/comfy-router/models/kling/kling-image-o1/code.mdx +translationBlockHashes: + "_intro": 39366fac + "Quick start": a99898b2 + "Schema": d18a5393 + "Examples": 826db173 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-image-o1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Kling이 Comfy Router를 통해 제공하는 `kling/kling-image-o1`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-image-o1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-image-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-image-o1", + { + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-image-o1", { + aspect_ratio: "1:1", + n: 1, + prompt: "A watercolour koi pond at dawn, soft light.", + resolution: "1k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-image-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"n\": 1, \"prompt\": \"A watercolour koi pond at dawn, soft light.\", \"resolution\": \"1k\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지의 가로세로 비율(너비:높이)입니다. auto는 입력 콘텐츠에 따라 지능적으로 이미지를 생성합니다. + + 가능한 값: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `3:2`, `2:3`, `21:9`, `auto` + + + + 이 작업 결과에 대한 콜백 알림 주소입니다. 설정하면 작업 상태가 변경될 때 서버가 능동적으로 알림을 보냅니다. + + 형식: `uri` + + + + element ID 구성을 기반으로 한 참조 요소 목록입니다. 참조 요소와 참조 이미지의 합계는 10개를 초과할 수 없습니다. + + + + 요소 ID + + 형식: `int64` + + + + 사용자 지정 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 참조 이미지 목록입니다. 이미지 Base64 인코딩 또는 이미지 URL(접근 가능해야 함) 입력을 지원합니다. 지원 형식은 .jpg/.jpeg/.png입니다. 파일 크기는 10MB를 초과할 수 없습니다. 너비와 높이 크기는 300px 이상이어야 하며, 가로세로 비율은 1:2.5 ~ 2.5:1 사이여야 합니다. 참조 요소와 참조 이미지의 합계는 10개를 초과할 수 없습니다. + + + + 이미지 Base64 인코딩 또는 이미지 URL(접근 가능해야 함) + + + + 모델 이름입니다. Comfy Router를 사용할 때는 이를 생략하거나 null을 전송하세요. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 생성할 이미지 수입니다. 값 범위 [1,9]. + + 범위: `1` ~ `9` + + + + 텍스트 프롬프트 단어로, 긍정 및 네거티브 설명을 포함할 수 있습니다. 2,500자를 초과할 수 없습니다. Omni 모델은 요소와 이미지가 포함된 Prompt를 통해 다양한 기능을 구현할 수 있습니다. 이미지는 \<\<\>> 형식으로 지정하세요. + + + + 이미지 생성 해상도입니다. 1k는 1K 표준, 2k는 2K 고해상도, 4k는 4K 고해상도입니다. + + 가능한 값: `1k`, `2k`, `4k` + + + + 단일 이미지를 생성할지 일련의 이미지를 생성할지 제어합니다. + + 가능한 값: `single`, `series` + + + + 시리즈의 이미지 수입니다. 값 범위 [2,9]. + + 범위: `2` ~ `9` + + +Router가 `GET /v2/models/kling/kling-image-o1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + 고객 정의 작업 ID + + + + + + + + + + + + 이미지 번호 (0-9) + + + + 생성된 이미지의 URL + + 형식: `uri` + + + + 결과가 단일 이미지인지 일련의 이미지인지 여부 + + 가능한 값: `single`, `series` + + + + 시리즈 이미지 결과 목록 + + + + 시리즈 이미지 순번 + + + + 생성된 이미지의 URL + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 원인(플랫폼의 콘텐츠 위험 제어 트리거 등)을 표시합니다. + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 오류 메시지 + + + + 요청 ID + + +## 예제 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k" +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-image-task-3c4d5e6f7a8b", + "task_result": { + "images": [ + { + "index": 0, + "url": "https://example.invalid/kling/kling-image-o1/generated.png" + } + ], + "result_type": "single" + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761660000 + }, + "message": "SUCCEED", + "request_id": "6a4b2c80-1e93-4d57-b8f2-05c7e9a3d146" +} +``` + + diff --git a/ko/development/comfy-router/models/kling/kling-v1-5/code.mdx b/ko/development/comfy-router/models/kling/kling-v1-5/code.mdx new file mode 100644 index 000000000..50fa7cf6d --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v1-5/code.mdx @@ -0,0 +1,386 @@ +--- +title: "Comfy Router로 Kling V1.5 사용하기" +description: "Comfy Router를 통해 kling/kling-v1-5를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Kling V1.5" +translationSourceHash: fa5c5f9d +translationFrom: development/comfy-router/models/kling/kling-v1-5/code.mdx +translationBlockHashes: + "_intro": f02fc14d + "Quick start": 21e511ce + "Schema": d81409e3 + "Examples": e835e733 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v1-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Kling이 제공하고 Comfy Router가 서비스하는 `kling/kling-v1-5`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v1-5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v1-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-5", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-5", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## 스키마 + +### 입력 + + + 콜백 알림 주소입니다. 작업 상태가 변경되면 서버가 알림을 보냅니다. + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면에서 카메라의 회전(x축)을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 수량(z축)을 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면에서 카메라의 회전(y축)을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 초점 거리 변화를 제어합니다. 음수는 좁은 시야각, 양수는 넓은 시야각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 이동 유형입니다. simple: 사용자 정의 가능한 카메라 이동. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 동적 브러시 구성 목록입니다(최대 6개 그룹). 5초 비디오의 경우 궤적 길이는 77개 좌표를 초과할 수 없습니다. + + + + 동적 브러시 적용 영역입니다(사용자가 모션 브러시를 사용해 만든 마스크 이미지). 가로세로 비율은 입력 이미지와 일치해야 합니다. + + 형식: `uri` + + + + + + + + 궤적 지점의 수평 좌표입니다. 이미지의 왼쪽 아래 모서리를 원점 (0,0)으로 합니다. + + + + 궤적 지점의 수직 좌표입니다. 이미지의 왼쪽 아래 모서리를 원점 (0,0)으로 합니다. + + + + element ID 구성을 기반으로 한 참조 요소 목록입니다. 최대 3개의 참조 요소를 지원합니다. element_list와 voice_list 파라미터는 상호 배타적입니다. + + + + 요소 ID + + 형식: `int64` + + + + 사용자 정의 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 참조 이미지 - URL 또는 Base64 인코딩 문자열이며, 10MB를 초과할 수 없고 해상도는 300*300px 이상, 가로세로 비율은 1:2.5 ~ 2.5:1 사이여야 합니다. Base64에는 data:image 접두사를 포함하지 않아야 합니다. + + + + 참조 이미지 - 종료 프레임 제어입니다. URL 또는 Base64 인코딩 문자열이며, 10MB를 초과할 수 없고 해상도는 300*300px 이상이어야 합니다. Base64에는 data:image 접두사를 포함하지 않아야 합니다. dynamic_masks/static_mask 또는 camera_control과 동시에 사용할 수 없습니다. + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드입니다. pro: 더 긴 재생 시간의 비디오를 생성하지만 출력 품질이 더 높은 전문가 모드입니다. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 이를 생략하거나 null을 전송하세요. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 각 스토리보드에 대한 정보로, 프롬프트와 재생 시간 등을 포함합니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true인 경우 prompt 파라미터는 유효하지 않습니다. false인 경우 shot_type 및 multi_prompt 파라미터는 유효하지 않습니다. + + +네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 긍정 프롬프트 내에 직접 네거티브 문장을 넣어 보완하는 것이 권장됩니다. + + + +긍정 텍스트 프롬프트입니다. voice_list 파라미터 순서에 맞는 음성을 지정하려면 \<\<\>>을 사용하세요. 하나의 작업은 최대 2개의 음색을 참조할 수 있습니다. 음색을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + +스토리보드 방법입니다. multi_shot 파라미터가 `true`로 설정된 경우 필수입니다. + +가능한 값: `customize`, `intelligence` + + + +동영상을 생성할 때 사운드도 동시에 생성할지 여부입니다. 모델 V2.6 이후 버전에서만 이 파라미터를 지원합니다. + +가능한 값: `on`, `off` + + + +정적 브러시 적용 영역(사용자가 모션 브러시를 사용해 만든 마스크 이미지)입니다. 가로세로 비율은 입력 이미지와 일치해야 합니다. + + + +동영상 생성 시 참조되는 음성 목록입니다. 최대 2개의 음성을 지원합니다. element_list와 voice_list 파라미터는 상호 배타적입니다. + + + +음성 사용자 정의 API를 통해 반환된 음성 ID 또는 시스템 사전 설정 음성 ID입니다. + + + +워터마크가 포함된 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + +true는 워터마크 생성, false는 생성을 하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v1-5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix 타임스탬프(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 총 비디오 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보, 작업이 실패할 때 실패 이유를 표시합니다 + + + + 작업 업데이트 시간, Unix 타임스탬프(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v1-6/code.mdx b/ko/development/comfy-router/models/kling/kling-v1-6/code.mdx new file mode 100644 index 000000000..699ca68c3 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v1-6/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V1.6 사용하기" +description: "Comfy Router를 통해 kling/kling-v1-6을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Kling V1.6" +translationSourceHash: a868053a +translationFrom: development/comfy-router/models/kling/kling-v1-6/code.mdx +translationBlockHashes: + "_intro": e5d8f71a + "Quick start": fa734b11 + "Schema": ffd91cca + "Examples": 14429ff8 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/kling/kling-v1-6.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1-6`에 대한 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 보내는 방식입니다. + +**모델 ID:** `kling/kling-v1-6` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v1-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### Input + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면(x축)에서의 카메라 회전을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 양(z축)을 제어합니다. 음수는 시계 반대 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면(y축)에서의 카메라 회전을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임입니다. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하고 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하고 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성 시의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고, 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 재생 시간(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드입니다. pro: 전문가 모드로, 더 긴 재생 시간의 비디오를 생성하지만 출력 품질이 더 높습니다. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트와 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1 이상이어야 합니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true인 경우 prompt 파라미터는 유효하지 않습니다. false인 경우 shot_type 및 multi_prompt 파라미터는 유효하지 않습니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 긍정 프롬프트 내에 직접 부정 문장으로 보완하는 것을 권장합니다. + + + + 긍정 텍스트 프롬프트입니다. voice_list 파라미터 순서에 맞는 음성을 지정하려면 \<\<\>>을 사용하세요. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때 sound 파라미터 값은 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. 모델 V2.6 이후 버전에서만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 표시된 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다. + + +`GET /v2/models/kling/kling-v1-6/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 총 비디오 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업이 실패하면 실패 사유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v1/code.mdx b/ko/development/comfy-router/models/kling/kling-v1/code.mdx new file mode 100644 index 000000000..4d3d0462f --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v1/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V1 사용하기" +description: "Comfy Router를 통해 kling/kling-v1을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Kling V1" +translationSourceHash: ec2e1ff4 +translationFrom: development/comfy-router/models/kling/kling-v1/code.mdx +translationBlockHashes: + "_intro": 88237ef1 + "Quick start": f9ab16cf + "Schema": 16c4273c + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1`의 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기 하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `kling/kling-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/kling/kling-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면(x축)에서 카메라의 회전을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 정도(z축)를 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면(y축)에서 카메라의 회전을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 초점 거리 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드. pro: 재생 시간이 더 긴 비디오를 생성하지만 품질이 더 높은 출력을 만드는 프로페셔널 모드. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트 및 재생 시간과 같은 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 참이고 shot_type이 사용자 정의인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. 참이면 prompt 파라미터가 무효입니다. 거짓이면 shot_type 및 multi_prompt 파라미터가 무효입니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 포지티브 프롬프트 안에 직접 네거티브 문장으로 보완하는 것을 권장합니다. + + + + 포지티브 텍스트 프롬프트입니다. voice_list 파라미터 순서에 맞는 음성을 지정하려면 \<\<\>>를 사용하세요. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 참으로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. 모델 V2.6 이후 버전에서만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 포함된 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + 참은 워터마크를 생성함을, 거짓은 생성하지 않음을 의미합니다. + + +`GET /v2/models/kling/kling-v1/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 기준으로 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보, 작업 실패 시 실패 이유 표시 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v2-1-master/code.mdx b/ko/development/comfy-router/models/kling/kling-v2-1-master/code.mdx new file mode 100644 index 000000000..31653cf9f --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v2-1-master/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V2.1 Master 사용하기" +description: "Comfy Router를 통해 kling/kling-v2-1-master를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling V2.1 Master" +translationSourceHash: 82fdab1d +translationFrom: development/comfy-router/models/kling/kling-v2-1-master/code.mdx +translationBlockHashes: + "_intro": a94d25f9 + "Quick start": 1402bdfa + "Schema": 3d3492a4 + "Examples": 14429ff8 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/kling/kling-v2-1-master.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1-master`의 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v2-1-master` + +**Endpoint:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 의미합니다. + + 범위: `-10` ~ `10` + + + + 수직 평면(x축)에서의 카메라 회전을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 의미합니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 양(z축)을 제어합니다. 음수는 시계 반대 방향, 양수는 시계 방향을 의미합니다. + + 범위: `-10` ~ `10` + + + + 수평 평면(y축)에서의 카메라 회전을 제어합니다. 음수는 왼쪽으로 회전, 양수는 오른쪽으로 회전을 의미합니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 의미합니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 더 좁은 시야각, 양수는 더 넓은 시야각을 의미합니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 이동 유형입니다. simple: 사용자 정의 가능한 카메라 이동입니다. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도는 낮아지고, 사용자 프롬프트와의 관련성은 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드입니다. pro: 더 긴 재생 시간의 비디오를 생성하지만 출력 품질이 더 높은 프로페셔널 모드입니다. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트와 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize일 때 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터는 무효입니다. false이면 shot_type 및 multi_prompt 파라미터는 무효입니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 긍정 프롬프트 안에 직접 네거티브 문장으로 보완하는 것이 권장됩니다. + + + + 긍정 텍스트 프롬프트입니다. \<\<\>>을 사용하면 voice_list 파라미터 순서에 맞는 음성을 지정할 수 있습니다. 작업 하나에서 최대 2개의 음색을 참조할 수 있습니다. 음색을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오를 생성할 때 사운드도 함께 생성할지 여부입니다. 모델 V2.6 및 이후 버전에서만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 적용된 결과를 함께 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크를 생성함, false는 생성하지 않음을 의미합니다. + + +`GET /v2/models/kling/kling-v2-1-master/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위 Unix timestamp + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업이 실패할 때 실패 이유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위 Unix timestamp + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v2-1/code.mdx b/ko/development/comfy-router/models/kling/kling-v2-1/code.mdx new file mode 100644 index 000000000..6c203a510 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v2-1/code.mdx @@ -0,0 +1,386 @@ +--- +title: "Comfy Router로 Kling V2.1 사용하기" +description: "Comfy Router를 통해 kling/kling-v2-1을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling V2.1" +translationSourceHash: 5300b41e +translationFrom: development/comfy-router/models/kling/kling-v2-1/code.mdx +translationBlockHashes: + "_intro": d015787e + "Quick start": e2365bed + "Schema": 175b57fe + "Examples": e835e733 +--- +{/* 생성된 파일. router-schemas/kling/kling-v2-1.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1`에 대한 API 레퍼런스입니다. Kling에서 제공하며 Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v2-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## 스키마 + +### 입력 + + + 콜백 알림 주소입니다. 작업 상태가 변경되면 서버가 알림을 보냅니다. + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면에서의 카메라 회전(x축)을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 정도(z축)를 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면에서의 카메라 회전(y축)을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자의 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 재생 시간(초)입니다. + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 동적 브러시 구성 목록입니다(최대 6개 그룹). 5초 비디오의 경우 궤적 길이는 77개 좌표를 초과할 수 없습니다. + + + + 동적 브러시 적용 영역입니다(사용자가 모션 브러시로 작성한 마스크 이미지). 가로세로 비율이 입력 이미지와 일치해야 합니다. + + 형식: `uri` + + + + + + + + 궤적 지점의 수평 좌표입니다. 이미지의 왼쪽 아래 모서리를 원점 (0,0)으로 합니다. + + + + 궤적 지점의 수직 좌표입니다. 이미지의 왼쪽 아래 모서리를 원점 (0,0)으로 합니다. + + + + 요소 ID 구성을 기반으로 한 참조 요소 목록입니다. 최대 3개의 참조 요소를 지원합니다. element_list와 voice_list 파라미터는 상호 배타적입니다. + + + + 요소 ID + + 형식: `int64` + + + + 사용자 정의 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 참조 이미지 - URL 또는 Base64로 인코딩된 문자열이며, 10MB를 초과할 수 없고 해상도는 300*300px 이상, 가로세로 비율은 1:2.5 ~ 2.5:1이어야 합니다. Base64에는 data:image 접두사를 포함하지 않아야 합니다. + + + + 참조 이미지 - 종료 프레임 제어입니다. URL 또는 Base64로 인코딩된 문자열이며, 10MB를 초과할 수 없고 해상도는 300*300px 이상이어야 합니다. Base64에는 data:image 접두사를 포함하지 않아야 합니다. dynamic_masks/static_mask 또는 camera_control과 동시에 사용할 수 없습니다. + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드. pro: 더 긴 재생 시간의 비디오를 생성하지만 출력 품질이 더 높은 전문가 모드. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 보내세요. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트 및 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 참이고 shot_type이 customize인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없고 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. 참인 경우 prompt 파라미터는 유효하지 않습니다. 거짓인 경우 shot_type 및 multi_prompt 파라미터는 유효하지 않습니다. + + +Negative text prompt. It is recommended to supplement negative prompt information through negative sentences directly within positive prompts. + + + + 긍정 텍스트 프롬프트입니다. \<\<\>>을 사용하여 voice_list 파라미터 순서에 맞는 보이스를 지정하세요. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 참으로 설정된 경우 필수입니다. + + 사용 가능한 값: `customize`, `intelligence` + + + + 비디오를 생성할 때 사운드를 동시에 생성할지 여부입니다. 모델 V2.6 이후 버전에서만 이 파라미터를 지원합니다. + + 사용 가능한 값: `on`, `off` + + + + 정적 브러시 적용 영역(사용자가 모션 브러시를 사용해 작성한 마스크 이미지)입니다. 가로세로 비율은 입력 이미지와 일치해야 합니다. + + + + 비디오를 생성할 때 참조되는 보이스 목록입니다. 최대 2개의 보이스를 지원합니다. element_list와 voice_list 파라미터는 상호 배타적입니다. + + + + 보이스 사용자 정의 API를 통해 반환된 보이스 ID 또는 시스템 프리셋 보이스 ID입니다. + + + + 워터마크가 적용된 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + 참은 워터마크를 생성함을, 거짓은 생성하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v2-1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix timestamp + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 총 비디오 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 이유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix timestamp + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx b/ko/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx new file mode 100644 index 000000000..2f5c33724 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V2.5 Turbo 사용하기" +description: "Comfy Router를 통해 kling/kling-v2-5-turbo를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling V2.5 Turbo" +translationSourceHash: 5bf98997 +translationFrom: development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx +translationBlockHashes: + "_intro": 451e11db + "Quick start": a34d4881 + "Schema": 5bae6f71 + "Examples": 14429ff8 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/kling/kling-v2-5-turbo.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-5-turbo`의 API 레퍼런스이며, Comfy Router가 Kling에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v2-5-turbo` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v2-5-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-5-turbo", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-5-turbo", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-5-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면(x축)에서의 카메라 회전을 제어합니다. 음수는 아래 방향 회전, 양수는 위 방향 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 수량(z축)을 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면(y축)에서의 카메라 회전을 제어합니다. 음수는 왼쪽으로 회전, 양수는 오른쪽으로 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래, 양수는 위를 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하고 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하고 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고, 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 Task ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드(Standard Mode). pro: 더 긴 재생 시간으로 더 높은 품질의 출력을 생성하는 프로페셔널 모드(Professional Mode). + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 각 스토리보드에 대한 정보(프롬프트, 재생 시간 등)입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize일 때 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true일 때 prompt 파라미터는 무효입니다. false일 때 shot_type과 multi_prompt 파라미터는 무효입니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 포지티브 프롬프트 내에 직접 부정 문장으로 보완하는 것이 권장됩니다. + + + + 포지티브 텍스트 프롬프트입니다. \<\<\>>을 사용하여 voice_list 파라미터 순서에 맞는 음성을 지정할 수 있습니다. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때에는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. V2.6 이후 버전의 모델만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 있는 결과물을 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v2-5-turbo/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 총 비디오 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 사유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v2-6/code.mdx b/ko/development/comfy-router/models/kling/kling-v2-6/code.mdx new file mode 100644 index 000000000..ab20ed042 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v2-6/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V2.6 사용하기" +description: "Comfy Router를 통해 kling/kling-v2-6을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Kling V2.6" +translationSourceHash: cd8992d4 +translationFrom: development/comfy-router/models/kling/kling-v2-6/code.mdx +translationBlockHashes: + "_intro": 5fc8e902 + "Quick start": 5d439f69 + "Schema": c2e4ff7b + "Examples": 14429ff8 +--- +{/* 생성됨 파일. `pnpm code-pages:gen`이 router-schemas/kling/kling-v2-6.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-6`의 API 레퍼런스입니다. Kling에서 제공하며 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v2-6` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v2-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면에서의 카메라 회전(x축)을 제어합니다. 음수는 아래로 회전, 양수는 위로 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 정도(z축)를 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면에서의 카메라 회전(y축)을 제어합니다. 음수는 왼쪽으로 회전, 양수는 오른쪽으로 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 움직임 유형입니다. simple: 사용자 정의 가능한 카메라 움직임. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드. pro: 더 긴 재생 시간과 더 높은 품질의 출력을 생성하는 프로페셔널 모드. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 보내면 되며, 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트와 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize일 때 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터가 무효화됩니다. false이면 shot_type 및 multi_prompt 파라미터가 무효화됩니다. + + + + 네거티브 텍스트 프롬프트입니다. 긍정 프롬프트 내에 부정 문장을 직접 포함하여 네거티브 프롬프트 정보를 보완하는 것을 권장합니다. + + + + 긍정 텍스트 프롬프트입니다. \<\<\>>를 사용하여 voice_list 파라미터 순서에 맞는 음성을 지정할 수 있습니다. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. V2.6 이상 버전의 모델만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 적용된 결과물을 동시에 생성할지 여부입니다. 사용자 정의 워터마크는 현재 지원되지 않습니다. + + + + true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v2-6/openapi.json`에서 제공하는 스키마로부터 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용되는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix 타임스탬프(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보, 작업 실패 시 실패 이유 표시 + + + + 작업 업데이트 시간, Unix 타임스탬프(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v2-master/code.mdx b/ko/development/comfy-router/models/kling/kling-v2-master/code.mdx new file mode 100644 index 000000000..1e16a538c --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v2-master/code.mdx @@ -0,0 +1,340 @@ +--- +title: "Comfy Router로 Kling V2 Master 사용하기" +description: "Comfy Router를 통해 kling/kling-v2-master를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling V2 Master" +translationSourceHash: d0755597 +translationFrom: development/comfy-router/models/kling/kling-v2-master/code.mdx +translationBlockHashes: + "_intro": c470eb90 + "Quick start": b5d778cc + "Schema": 769d8e31 + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-master.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-master`에 대한 API 레퍼런스입니다. Kling에서 제공하며 Comfy Router를 통해 서빙됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v2-master` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v2-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면에서의 카메라 회전(x축)을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 양(z축)을 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면에서의 카메라 회전(y축)을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 미리 정의된 카메라 이동 유형입니다. simple: 사용자 정의 가능한 카메라 이동. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하며 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하며 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고, 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 길이(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드. pro: 더 긴 재생 시간의 비디오를 생성하지만 품질이 더 높은 출력을 제공하는 프로페셔널 모드. + + 가능한 값: `std`, `pro` + + + + 모델 이름. Comfy Router를 사용할 때는 생략하거나 null을 전송하십시오. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트 및 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true인 경우 prompt 파라미터는 무효입니다. false인 경우 shot_type 및 multi_prompt 파라미터는 무효입니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 긍정 프롬프트 내에서 직접 부정 문장을 통해 보완하는 것을 권장합니다. + + + + 긍정 텍스트 프롬프트입니다. voice_list 파라미터 순서와 일치하는 음성을 지정하려면 \<\<\>>를 사용하십시오. 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방법입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. 모델의 V2.6 및 이후 버전만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 있는 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다. + + +`GET /v2/models/kling/kling-v2-master/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 사유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예제 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + diff --git a/ko/development/comfy-router/models/kling/kling-v3-omni/code.mdx b/ko/development/comfy-router/models/kling/kling-v3-omni/code.mdx new file mode 100644 index 000000000..6085f20e1 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v3-omni/code.mdx @@ -0,0 +1,323 @@ +--- +title: "Comfy Router로 Kling V3 Omni 사용하기" +description: "Comfy Router를 통해 kling/kling-v3-omni를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Kling V3 Omni" +translationSourceHash: 7d45d7ed +translationFrom: development/comfy-router/models/kling/kling-v3-omni/code.mdx +translationBlockHashes: + "_intro": 5d80a95b + "Quick start": eb42d71e + "Schema": f9b37353 + "Examples": d0ddb30c +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/kling/kling-v3-omni.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Kling에서 제공하고 Comfy Router가 서비스하는 `kling/kling-v3-omni`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v3-omni` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v3-omni` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3-omni", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3-omni", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3-omni \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 비디오 프레임의 화면 비율(너비:높이)입니다. 첫 프레임 참조 또는 비디오 편집 기능을 사용하지 않을 때 필수입니다. + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 이 작업의 결과에 대한 콜백 알림 주소입니다. 설정하면 작업 상태가 변경될 때 서버가 능동적으로 알림을 보냅니다. + + 형식: `uri` + + + + 비디오 길이(초)입니다. 비디오 편집 기능(refer_type: base)을 사용하는 경우 출력 재생 시간은 입력 비디오와 동일하며 이 파라미터는 무효입니다. + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + element ID 구성을 기반으로 한 참조 요소 목록입니다. + + + + 요소 ID + + 형식: `int64` + + + + 사용자 정의 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 참조 이미지 목록입니다. 요소, 장면, 스타일 등의 참조 이미지를 포함할 수 있으며, 첫 프레임 또는 마지막 프레임으로 사용하여 비디오를 생성할 수도 있습니다. + + + + 이미지 Base64 인코딩 또는 이미지 URL(접근 가능해야 함)입니다. 지원 형식은 .jpg/.jpeg/.png입니다. 파일 크기는 10MB를 초과할 수 없습니다. 너비와 높이 치수는 300px 이상이어야 하며, 화면 비율은 1:2.5 ~ 2.5:1 사이입니다. + + + + 이미지가 첫 프레임인지 마지막 프레임인지 여부입니다. first_frame은 첫 프레임, end_frame은 마지막 프레임입니다. 현재 마지막 프레임만 사용하는 것은 지원하지 않습니다. + + 가능한 값: `first_frame`, `end_frame` + + + + 비디오 생성 모드입니다. std: 표준 모드로 720P 비디오를 생성하며 비용 효율적입니다. pro: 전문가 모드로 1080P 비디오를 생성하며 더 높은 품질의 비디오를 출력합니다. + + 가능한 값: `pro`, `std` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 각 스토리보드에 대한 정보로, 프롬프트와 재생 시간 등을 포함합니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize일 때 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터는 무효입니다. false이면 shot_type 및 multi_prompt 파라미터는 무효입니다. + + + + 텍스트 프롬프트 단어로, 긍정 및 부정 설명을 포함할 수 있습니다. 2,500자를 초과할 수 없습니다. \<\<\<>>> 형식으로 요소, 이미지 또는 비디오를 지정할 수 있습니다(예: \<\>, \<\<\>>, \<\<\>>). + + + + 스토리보드 방식입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. + + 가능한 값: `on`, `off` + + + + 참조 비디오 목록입니다. 기능을 위한 참조 비디오로 사용하거나 편집할 비디오로 사용할 수 있으며, 기본값은 편집할 비디오입니다. + + + + 비디오 원본 사운드를 유지할지 여부입니다. yes는 유지, no는 유지하지 않음을 나타냅니다. + + 가능한 값: `yes`, `no` + + + + 참조 비디오 유형입니다. feature는 기능 참조 비디오, base는 편집할 비디오입니다. + + 가능한 값: `feature`, `base` + + + + 업로드된 비디오의 URL입니다. .mp4/.mov 형식만 지원합니다. 재생 시간은 3-10초 사이입니다. 해상도는 720px에서 2160px 사이여야 합니다. 24-60 fps의 프레임 레이트를 지원합니다. 비디오는 1개만 업로드할 수 있으며 크기는 200MB를 초과할 수 없습니다. + + + + 워터마크가 있는 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크 생성, false는 생성하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v3-omni/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix 타임스탬프(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보, 작업 실패 시 실패 이유를 표시합니다 + + + + 작업 업데이트 시간, Unix 타임스탬프(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-v3/code.mdx b/ko/development/comfy-router/models/kling/kling-v3/code.mdx new file mode 100644 index 000000000..c444781ae --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-v3/code.mdx @@ -0,0 +1,341 @@ +--- +title: "Comfy Router로 Kling V3 사용하기" +description: "Comfy Router를 통해 kling/kling-v3 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling V3" +translationSourceHash: 3ec18bf8 +translationFrom: development/comfy-router/models/kling/kling-v3/code.mdx +translationBlockHashes: + "_intro": 17dd9361 + "Quick start": 61c5bb98 + "Schema": 771b3376 + "Examples": 14429ff8 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/kling/kling-v3.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-v3`에 대한 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-v3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 화면 비율 + + 가능한 값: `16:9`, `9:16`, `1:1` + + + + 콜백 알림 주소 + + 형식: `uri` + + + + + + + + + + + + 카메라의 수평 축(x축) 이동을 제어합니다. 음수는 왼쪽, 양수는 오른쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수직 평면(x축)에서의 카메라 회전을 제어합니다. 음수는 아래쪽 회전, 양수는 위쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 롤링 양(z축)을 제어합니다. 음수는 반시계 방향, 양수는 시계 방향을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 수평 평면(y축)에서의 카메라 회전을 제어합니다. 음수는 왼쪽 회전, 양수는 오른쪽 회전을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라의 수직 축(y축) 이동을 제어합니다. 음수는 아래쪽, 양수는 위쪽을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 카메라 초점 거리의 변화를 제어합니다. 음수는 좁은 화각, 양수는 넓은 화각을 나타냅니다. + + 범위: `-10` ~ `10` + + + + 사전 정의된 카메라 이동 유형입니다. simple: 사용자 정의 가능한 카메라 이동입니다. down_back: 카메라가 하강하며 뒤로 이동합니다. forward_up: 카메라가 앞으로 이동하며 위로 기울어집니다. right_turn_forward: 오른쪽으로 회전하고 앞으로 이동합니다. left_turn_forward: 왼쪽으로 회전하고 앞으로 이동합니다. + + 가능한 값: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 비디오 생성에서의 유연성입니다. 값이 높을수록 모델의 유연성은 낮아지고 사용자 프롬프트와의 관련성은 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 비디오 재생 시간(초) + + 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 사용자 정의 작업 ID + + + + 비디오 생성 모드입니다. std: 비용 효율적인 표준 모드입니다. pro: 전문가 모드로, 재생 시간이 더 길고 출력 품질이 더 높은 비디오를 생성합니다. + + 가능한 값: `std`, `pro` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 이를 생략하거나 null을 전송하세요. 모델은 요청 경로에 따라 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트와 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize인 경우 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터가 무효입니다. false이면 shot_type 및 multi_prompt 파라미터가 무효입니다. + + + + 네거티브 텍스트 프롬프트입니다. 네거티브 프롬프트 정보는 포지티브 프롬프트 내에 직접 네거티브 문장으로 보완하는 것을 권장합니다. + + + + 포지티브 텍스트 프롬프트입니다. `voice_list` 파라미터 순서와 일치하는 음성을 지정하려면 \<\<\>>을 사용하세요. 하나의 작업은 최대 2개의 톤을 참조할 수 있습니다. 톤을 지정할 때는 sound 파라미터 값이 on이어야 합니다. + + + + 스토리보드 방식입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 가능한 값: `customize`, `intelligence` + + + + 비디오를 생성할 때 사운드도 함께 생성할지 여부입니다. 모델 V2.6 이상 버전에서만 이 파라미터를 지원합니다. + + 가능한 값: `on`, `off` + + + + 워터마크가 포함된 결과를 함께 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크를 생성함을, false는 생성하지 않음을 의미합니다. + + +Router가 `GET /v2/models/kling/kling-v3/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### Output + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix timestamp(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보, 작업 실패 시 실패 이유를 표시합니다 + + + + 작업 업데이트 시간, Unix timestamp(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/kling-video-o1/code.mdx b/ko/development/comfy-router/models/kling/kling-video-o1/code.mdx new file mode 100644 index 000000000..487249d84 --- /dev/null +++ b/ko/development/comfy-router/models/kling/kling-video-o1/code.mdx @@ -0,0 +1,323 @@ +--- +title: "Comfy Router로 Kling Video O1 사용하기" +description: "Comfy Router를 통해 kling/kling-video-o1 호출: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Kling Video O1" +translationSourceHash: db7770c2 +translationFrom: development/comfy-router/models/kling/kling-video-o1/code.mdx +translationBlockHashes: + "_intro": 01639b96 + "Quick start": a416cd0c + "Schema": 6f4cf55b + "Examples": d0ddb30c +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/kling/kling-video-o1.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/kling-video-o1`의 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/kling-video-o1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/kling-video-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-video-o1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-video-o1", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-video-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 비디오 프레임의 가로세로 비율(너비:높이). 첫 프레임 참조 또는 비디오 편집 기능을 사용하지 않을 때 필수입니다. + + 사용 가능한 값: `16:9`, `9:16`, `1:1` + + + + 이 작업 결과에 대한 콜백 알림 주소입니다. 설정하면 작업 상태가 변경될 때 서버가 능동적으로 알림을 보냅니다. + + 형식: `uri` + + + + 비디오 길이(초)입니다. 비디오 편집 기능(refer_type: base)을 사용하는 경우 출력 재생 시간은 입력 비디오와 동일하며 이 파라미터는 무효입니다. + + 사용 가능한 값: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + element ID 구성을 기반으로 한 참조 요소 목록입니다. + + + + 요소 ID + + 형식: `int64` + + + + 사용자 정의 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 참조 이미지 목록입니다. 요소, 장면, 스타일 등의 참조 이미지를 포함할 수 있으며, 첫 프레임 또는 마지막 프레임으로 사용하여 비디오를 생성할 수도 있습니다. + + + + 이미지 Base64 인코딩 또는 이미지 URL(접근 가능해야 함)입니다. 지원 형식은 .jpg/.jpeg/.png입니다. 파일 크기는 10MB를 초과할 수 없습니다. 너비와 높이 치수는 300px 이상이어야 하며, 가로세로 비율은 1:2.5 ~ 2.5:1 사이여야 합니다. + + + + 이미지가 첫 프레임인지 마지막 프레임인지 여부입니다. first_frame은 첫 프레임, end_frame은 마지막 프레임입니다. 현재 마지막 프레임만 사용하는 것은 지원되지 않습니다. + + 사용 가능한 값: `first_frame`, `end_frame` + + + + 비디오 생성 모드입니다. std: 표준 모드로 720P 비디오를 생성하며 비용 효율적입니다. pro: 전문가 모드로 1080P 비디오를 생성하며 더 높은 품질의 비디오를 출력합니다. + + 사용 가능한 값: `pro`, `std` + + + + 모델 이름입니다. Comfy Router를 사용할 때는 생략하거나 null을 전송하세요. 모델은 요청 경로에 의해 선택됩니다. 이름을 제공하는 경우 해당 경로와 일치해야 합니다. + + + + 프롬프트 및 재생 시간 등 각 스토리보드에 대한 정보입니다. 최대 6개의 스토리보드를 지원하며 최소 1개가 필요합니다. multi_shot이 true이고 shot_type이 customize일 때 필수입니다. + + + + 이 스토리보드의 재생 시간(초)입니다. 전체 작업 재생 시간을 초과할 수 없으며 1보다 작을 수 없습니다. 모든 스토리보드 재생 시간의 합은 전체 작업 재생 시간과 같습니다. + + + + 샷 순서 번호 + + + + 이 스토리보드의 프롬프트 단어입니다. 최대 길이는 512자입니다. + + + + 멀티 샷 비디오를 생성할지 여부입니다. true이면 prompt 파라미터가 무효입니다. false이면 shot_type 및 multi_prompt 파라미터가 무효입니다. + + + + 텍스트 프롬프트 단어로, 긍정 및 부정 설명을 포함할 수 있습니다. 2,500자를 초과할 수 없습니다. \<\<<>> 형식으로 요소, 이미지 또는 비디오를 지정할 수 있습니다. 예: \<\>, \<\<\>>, \<\<\>>. + + + + 스토리보드 방식입니다. multi_shot 파라미터가 true로 설정된 경우 필수입니다. + + 사용 가능한 값: `customize`, `intelligence` + + + + 비디오 생성 시 사운드를 동시에 생성할지 여부입니다. + + 사용 가능한 값: `on`, `off` + + + + 참조 비디오 목록입니다. 기능 참조 비디오로 사용하거나 편집할 비디오로 사용할 수 있으며, 기본값은 편집할 비디오입니다. + + + + 비디오 원본 사운드를 유지할지 여부입니다. yes는 유지, no는 유지를 하지 않음을 나타냅니다. + + 사용 가능한 값: `yes`, `no` + + + + 참조 비디오 유형입니다. feature는 기능 참조 비디오, base는 편집할 비디오입니다. + + 사용 가능한 값: `feature`, `base` + + + + 업로드된 비디오의 URL입니다. .mp4/.mov 형식만 지원됩니다. 재생 시간은 3-10초 사이입니다. 해상도는 720px에서 2160px 사이여야 합니다. 24-60 fps의 프레임 레이트를 지원합니다. 비디오는 1개만 업로드할 수 있으며 크기는 200MB를 초과할 수 없습니다. + + + + 워터마크가 있는 결과를 동시에 생성할지 여부입니다. 현재 사용자 정의 워터마크는 지원되지 않습니다. + + + + true는 워터마크 생성, false는 생성을 하지 않음을 나타냅니다. + + +`GET /v2/models/kling/kling-video-o1/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 원인을 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx b/ko/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx new file mode 100644 index 000000000..84f0f523e --- /dev/null +++ b/ko/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx @@ -0,0 +1,245 @@ +--- +title: "Comfy Router로 Videos Avatar Image 2video 사용하기" +description: "Comfy Router를 통해 kling/videos-avatar-image2video를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답입니다." +sidebarTitle: "Videos Avatar Image 2video" +translationSourceHash: 2d32d740 +translationFrom: development/comfy-router/models/kling/videos-avatar-image2video/code.mdx +translationBlockHashes: + "_intro": 6e4b5479 + "Quick start": f4efb7f6 + "Schema": eeb06fe1 + "Examples": ce6803dd +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/kling/videos-avatar-image2video.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/videos-avatar-image2video`에 대한 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `kling/videos-avatar-image2video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/videos-avatar-image2video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-avatar-image2video", + { + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-avatar-image2video", { + image: "https://example.invalid/kling/avatar.png", + mode: "std", + prompt: "The presenter smiles and gestures towards the camera.", + sound_file: "https://example.invalid/kling/voice.mp3", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-avatar-image2video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://example.invalid/kling/avatar.png\", \"mode\": \"std\", \"prompt\": \"The presenter smiles and gestures towards the camera.\", \"sound_file\": \"https://example.invalid/kling/voice.mp3\"}" +``` + + +## 스키마 + +### 입력 + + + TTS API를 통해 생성된 오디오 ID입니다. 최근 30일 이내에 생성된 2-300초 길이의 오디오만 지원합니다. audio_id 또는 sound_file 중 하나는 반드시 제공해야 합니다(상호 배타적). + + + + 이 작업의 결과에 대한 콜백 알림 주소입니다. + + 형식: `uri` + + + + 사용자 지정 작업 ID입니다. 단일 사용자 계정 내에서 고유해야 합니다. + + + + 아바타 참조 이미지입니다. Base64 인코딩 또는 이미지 URL을 지원합니다. 지원 형식: .jpg/.jpeg/.png. 최대 10MB, 최소 너비/높이 300px, 가로세로 비율은 1:2.5에서 2.5:1 사이여야 합니다. + + + + 비디오 생성 모드입니다. std: 표준 모드(비용 효율적), pro: 프로페셔널 모드(더 긴 재생 시간, 더 높은 품질). + + 가능한 값: `std`, `pro` + + + + 긍정 텍스트 프롬프트입니다. 아바타의 작업, 감정, 카메라 움직임을 정의할 수 있습니다. + + + + 사운드 파일입니다. Base64로 인코딩된 오디오 또는 접근 가능한 오디오 URL을 지원합니다. 허용 형식: .mp3/.wav/.m4a/.aac(최대 5MB), 2-300초. audio_id 또는 sound_file 중 하나는 반드시 제공해야 합니다(상호 배타적). + + + + + + + + 워터마크가 적용된 결과를 동시에 생성할지 여부입니다. + + +Router가 `GET /v2/models/kling/videos-avatar-image2video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, 밀리초 단위의 Unix 타임스탬프 + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 적용된 생성 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업 실패 시 실패 사유를 표시합니다 + + + + 작업 업데이트 시간, 밀리초 단위의 Unix 타임스탬프 + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3" +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-avatar-task-8b7a6c5d4e3f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-1c2d3e4f5a6b", + "url": "https://example.invalid/kling/videos-avatar-image2video/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761900000 + }, + "message": "SUCCEED", + "request_id": "b41d7c58-9e26-4f03-a7d1-5c8e0b3f2a69" +} +``` + + + diff --git a/ko/development/comfy-router/models/kling/videos-lip-sync/code.mdx b/ko/development/comfy-router/models/kling/videos-lip-sync/code.mdx new file mode 100644 index 000000000..9eb2e3660 --- /dev/null +++ b/ko/development/comfy-router/models/kling/videos-lip-sync/code.mdx @@ -0,0 +1,273 @@ +--- +title: "Comfy Router로 Videos Lip Sync 사용하기" +description: "Comfy Router를 통해 kling/videos-lip-sync를 호출합니다. endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Videos Lip Sync" +translationSourceHash: 18911f14 +translationFrom: development/comfy-router/models/kling/videos-lip-sync/code.mdx +translationBlockHashes: + "_intro": 2cd8e6e0 + "Quick start": eddd7537 + "Schema": 2993a979 + "Examples": 380debef +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-lip-sync.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Kling에서 제공하는 `kling/videos-lip-sync`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `kling/videos-lip-sync` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/videos-lip-sync` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-lip-sync", + { + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-lip-sync", { + input: { + mode: "text2video", + text: "Welcome to Comfy Cloud.", + video_id: "kling-video-6f5e4d3c2b1a", + voice_id: "genshin_vindi2", + voice_language: "en", + voice_speed: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-lip-sync \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"mode\":\"text2video\",\"text\":\"Welcome to Comfy Cloud.\",\"video_id\":\"kling-video-6f5e4d3c2b1a\",\"voice_id\":\"genshin_vindi2\",\"voice_language\":\"en\",\"voice_speed\":1}}" +``` + + +## Schema + +### Input + + + 콜백 알림 주소입니다. 작업 상태가 변경되면 서버가 알림을 보냅니다. + + 형식: `uri` + + + + + + + + 오디오 파일의 로컬 경로입니다. 지원 형식: .mp3/.wav/.m4a/.aac, 최대 파일 크기 5MB. Base64 코드. + + + + 립싱크를 위한 오디오 파일 전송 방법입니다. mode가 audio2video일 때 필수입니다. + + 가능한 값: `file`, `url` + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: .mp3/.wav/.m4a/.aac, 최대 파일 크기 5MB. + + + + 비디오 생성 모드입니다. text2video: 텍스트 기반 비디오 생성 모드, audio2video: 오디오 기반 비디오 생성 모드 + + 가능한 값: `text2video`, `audio2video` + + + + 립싱크 비디오 생성을 위한 텍스트 콘텐츠입니다. mode가 text2video일 때 필수입니다. 최대 길이는 120자입니다. + + + + Kling AI가 생성한 비디오의 ID입니다. 최근 30일 이내에 생성된 5초 및 10초 비디오만 지원합니다. + + + + 업로드된 비디오의 링크를 가져옵니다. 비디오 파일은 .mp4/.mov를 지원하며, 파일 크기는 100MB를 초과하지 않고 비디오 길이는 2-10초 사이입니다. + + + + 음성 ID입니다. mode가 text2video일 때 필수입니다. 시스템은 선택할 수 있는 다양한 음성 옵션을 제공합니다. + + + + 음성 언어는 음성 ID에 대응합니다. + + 가능한 값: `zh`, `en` + + + + 말하기 속도입니다. 유효 범위: 0.8~2.0, 소수점 첫째 자리까지 정확합니다. + + 범위: `0.8` ~ `2` + + +Router가 `GET /v2/models/kling/videos-lip-sync/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### Output + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix 타임스탬프(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성 비디오의 URL, 핫링크 보호 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보로, 작업이 실패하면 실패 이유를 표시합니다. + + + + 작업 업데이트 시간, Unix 타임스탬프(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## 예시 + +### 입력 + +```json +{ + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1 + } +} +``` + +### 출력 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-lip-sync-task-4f3e2d1c0b9a", + "task_result": { + "videos": [ + { + "duration": "8", + "id": "kling-video-9a8b7c6d5e4f", + "url": "https://example.invalid/kling/videos-lip-sync/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798761780000 + }, + "message": "SUCCEED", + "request_id": "5e0a9b17-6d3c-42f8-91b4-7a2c8d6e0f35" +} +``` + + diff --git a/ko/development/comfy-router/models/kling/videos-video-extend/code.mdx b/ko/development/comfy-router/models/kling/videos-video-extend/code.mdx new file mode 100644 index 000000000..5c70ca2ad --- /dev/null +++ b/ko/development/comfy-router/models/kling/videos-video-extend/code.mdx @@ -0,0 +1,226 @@ +--- +title: "Comfy Router로 Videos Video Extend 사용하기" +description: "Comfy Router를 통해 kling/videos-video-extend를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Videos Video Extend" +translationSourceHash: 697284e7 +translationFrom: development/comfy-router/models/kling/videos-video-extend/code.mdx +translationBlockHashes: + "_intro": fbba135e + "Quick start": 61b7b535 + "Schema": c05db7c2 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-video-extend.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`kling/videos-video-extend`의 API 레퍼런스이며, Kling에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `kling/videos-video-extend` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/kling/videos-video-extend` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-video-extend", + { + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-video-extend", { + cfg_scale: 0.5, + prompt: "The camera keeps drifting forward down the alley.", + video_id: "kling-video-6f5e4d3c2b1a", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-video-extend \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"cfg_scale\": 0.5, \"prompt\": \"The camera keeps drifting forward down the alley.\", \"video_id\": \"kling-video-6f5e4d3c2b1a\"}" +``` + + +## Schema + +### 입력 + + + 콜백 알림 주소입니다. 작업 상태가 변경되면 서버가 알림을 전송합니다. + + 형식: `uri` + + + + 비디오 생성의 유연성입니다. 값이 높을수록 모델의 유연성 정도가 낮아지고 사용자 프롬프트와의 관련성이 강해집니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + 확장된 비디오에서 피해야 할 요소에 대한 네거티브 텍스트 프롬프트입니다. + + + + 비디오 확장을 안내하는 긍정 텍스트 프롬프트입니다. + + + + 확장할 비디오의 ID입니다. 텍스트 기반 비디오 생성, 이미지 기반 비디오 생성, 이전 비디오 확장 연산으로 생성된 비디오를 지원합니다. 확장 후 총 재생 시간은 3분을 초과할 수 없습니다. + + +Router가 `GET /v2/models/kling/videos-video-extend/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 코드 + + + + + + + + 작업 생성 시간, Unix 타임스탬프(밀리초) + + + + 작업의 차감 단위 + + + + 작업 ID + + + + + + + + + + + + + + + + + + + + 비디오 총 재생 시간(초) + + + + 생성된 비디오 ID + + + + 생성된 비디오의 URL + + 형식: `uri` + + + + 워터마크가 포함된 생성된 비디오의 URL, 핫링크 방지 형식 + + 형식: `uri` + + + + 작업 상태 + + 가능한 값: `submitted`, `processing`, `succeed`, `failed` + + + + 작업 상태 정보이며, 작업이 실패할 경우 실패 사유를 표시합니다. + + + + 작업 업데이트 시간, Unix 타임스탬프(밀리초) + + + + + + + + + + + + 오류 메시지 + + + + 요청 ID + + +## Examples + +### Input + +```json +{ + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a" +} +``` + +### Output + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-video-extend-task-0a1b2c3d4e5f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-5f4e3d2c1b0a", + "url": "https://example.invalid/kling/videos-video-extend/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798762020000 + }, + "message": "SUCCEED", + "request_id": "c7b6a504-3f2e-41d0-8a9c-6b5d4e3f2a10" +} +``` + + + diff --git a/ko/development/comfy-router/models/krea/krea-2-large/code.mdx b/ko/development/comfy-router/models/krea/krea-2-large/code.mdx new file mode 100644 index 000000000..acaa9ed24 --- /dev/null +++ b/ko/development/comfy-router/models/krea/krea-2-large/code.mdx @@ -0,0 +1,204 @@ +--- +title: "Comfy Router로 Krea 2 Large 사용하기" +description: "Comfy Router를 통해 krea/krea-2-large를 호출하는 방법: endpoint, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Krea 2 Large" +translationSourceHash: b67b29a6 +translationFrom: development/comfy-router/models/krea/krea-2-large/code.mdx +translationBlockHashes: + "_intro": 7c6287ca + "Quick start": f1ed8f98 + "Schema": 2003ef08 + "Examples": 91f72543 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/krea/krea-2-large.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Krea에서 Comfy Router가 제공하는 `krea/krea-2-large`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `krea/krea-2-large` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/krea/krea-2-large` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-large", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-large", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-large \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## 스키마 + +### 입력 + + + 비율. 다음 중 하나: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. + + 가능한 값: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 프롬프트 해석 강도: raw=0, low=10, medium=50, high=100. + + 가능한 값: `raw`, `low`, `medium`, `high` + + + + 생성에 사용할 스타일 참조 + + + + 범위: `-2` ~ `2` + + 형식: `double` + + + + 형식: `uri` + + + + 생성에 사용할 무드보드. 현재는 무드보드 하나로 제한됩니다. + + + + 형식: `uuid` + + + + 범위: `-0.5` ~ `1.5` + + 형식: `double` + + + + + + + + 해상도 크기 조절. 다음 중 하나: 1K. + + 가능한 값: `1K` + + + + + + + + 생성에 사용할 스타일(일반적으로 LoRA) + + + + + + + + 범위: `-2` ~ `2` + + 형식: `double` + + +Router가 `GET /v2/models/krea/krea-2-large/openapi.json`에서 제공하는 스키마를 바탕으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 형식: `date-time` + + + + 형식: `date-time` + + + + 형식: `uuid` + + + + 완료된 생성 결과. `KreaJob`과 달리 여기서는 null일 수 없습니다. `result`에 `urls`가 없는 터미널 작업은 Comfy Router 오류로 응답되므로, `200`에는 항상 이 필드가 포함됩니다. + + + + 생성이 아니라 loraTraining 작업에 의해 설정됩니다. 이 모델들에 대한 `200` 응답에는 `urls`가 포함됩니다. + + + + 다운로드 가능한 링크 형태의 생성된 이미지. 최소 한 개이며, `urls`가 비어 있는 `completed` 작업은 `success_without_output`이 되어 이 문서에 도달하지 않기 때문입니다. + + + + 이 문서에서는 항상 `completed`입니다. 이는 `classifyKrea`가 `succeeded`로 응답하는 유일한 상태이며, Krea의 용어는 대소문자 폴딩 없이 대조됩니다. + + 가능한 값: `completed` + + +## 예제 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 출력 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx b/ko/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx new file mode 100644 index 000000000..4c584e404 --- /dev/null +++ b/ko/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx @@ -0,0 +1,204 @@ +--- +title: "Comfy Router로 Krea 2 Medium Turbo 사용하기" +description: "Comfy Router를 통해 krea/krea-2-medium-turbo를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Krea 2 Medium Turbo" +translationSourceHash: a3351940 +translationFrom: development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx +translationBlockHashes: + "_intro": 711a935d + "Quick start": a1795376 + "Schema": 00afbe49 + "Examples": 91f72543 +--- +{/* GENERATED FILE. Generated from router-schemas/krea/krea-2-medium-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-medium-turbo`의 API 레퍼런스입니다. 이 모델은 Krea에서 제공하며 Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `krea/krea-2-medium-turbo` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium-turbo", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium-turbo", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## 스키마 + +### 입력 + + + 비율. 다음 중 하나: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. + + 가능한 값: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 프롬프트 해석 강도: raw=0, low=10, medium=50, high=100. + + 가능한 값: `raw`, `low`, `medium`, `high` + + + + 생성에 사용할 스타일 참조 + + + + 범위: `-2` ~ `2` + + 형식: `double` + + + + 형식: `uri` + + + + 생성에 사용할 무드보드. 현재는 무드보드 하나로 제한됩니다. + + + + 형식: `uuid` + + + + 범위: `-0.5` ~ `1.5` + + 형식: `double` + + + + + + + + 해상도 크기 조절. 다음 중 하나: 1K. + + 가능한 값: `1K` + + + + + + + + 생성에 사용할 스타일(일반적으로 LoRA) + + + + + + + + 범위: `-2` ~ `2` + + 형식: `double` + + +Router가 `GET /v2/models/krea/krea-2-medium-turbo/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 형식: `date-time` + + + + 형식: `date-time` + + + + 형식: `uuid` + + + + 완료된 생성 결과. `KreaJob`과 달리 여기서는 null이 될 수 없습니다. `result`에 `urls`가 없는 터미널 작업은 Comfy Router 오류로 응답되므로, `200`에는 항상 이 값이 포함됩니다. + + + + 생성이 아니라 loraTraining 작업에서 설정됩니다. 이 모델들에 대한 `200` 응답에는 `urls`가 포함됩니다. + + + + 생성된 이미지로, 다운로드 가능한 링크입니다. 최소 한 개가 존재합니다. `urls`가 비어 있는 `completed` 작업은 `success_without_output`이며 이 문서에 도달하지 않기 때문입니다. + + + + 이 문서에서는 항상 `completed`입니다. `classifyKrea`가 `succeeded`로 응답하는 유일한 상태이며, Krea의 어휘는 대소문자 변환 없이 일치됩니다. + + 가능한 값: `completed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 출력 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/krea/krea-2-medium/code.mdx b/ko/development/comfy-router/models/krea/krea-2-medium/code.mdx new file mode 100644 index 000000000..d22f7e37f --- /dev/null +++ b/ko/development/comfy-router/models/krea/krea-2-medium/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Comfy Router로 Krea 2 Medium 사용하기" +description: "Comfy Router를 통해 krea/krea-2-medium을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Krea 2 Medium" +translationSourceHash: bc6ab24e +translationFrom: development/comfy-router/models/krea/krea-2-medium/code.mdx +translationBlockHashes: + "_intro": 89eb9065 + "Quick start": b8fd9100 + "Schema": 5ab8e665 +--- +{/* 생성된 파일. router-schemas/krea/krea-2-medium.json에서 `pnpm code-pages:gen`으로 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-medium`의 API 레퍼런스이며, Krea에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 실행합니다. + +**모델 ID:** `krea/krea-2-medium` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## 스키마 + +### 입력 + + + 가로세로 비율. 다음 중 하나: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. + + 가능한 값: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 프롬프트 해석 강도: raw=0, low=10, medium=50, high=100. + + 가능한 값: `raw`, `low`, `medium`, `high` + + + + 생성에 사용할 스타일 참조 + + + + 범위: `-2` ~ `2` + + 형식: `double` + + + + 형식: `uri` + + + + 생성에 사용할 무드보드. 현재는 무드보드 하나로 제한됩니다. + + + + 형식: `uuid` + + + + 범위: `-0.5` ~ `1.5` + + 형식: `double` + + + + + + + + 해상도 크기 조절. 다음 중 하나: 1K. + + 가능한 값: `1K` + + + + + + + + 생성에 사용할 스타일(일반적으로 LoRA) + + + + + + + + 범위: `-2` ~ `2` + + 형식: `double` + + +Router가 `GET /v2/models/krea/krea-2-medium/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 라우터가 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 형식: `date-time` + + + + 형식: `date-time` + + + + 형식: `uuid` + + + + 완료된 생성 결과. `KreaJob`과 달리 여기서는 null이 될 수 없습니다. `result`에 `urls`가 없는 터미널 작업은 Comfy Router 오류로 응답되므로, `200` 응답에는 항상 이 필드가 포함됩니다. + + + + 생성이 아니라 loraTraining 작업에 의해 설정됩니다. 이 모델들의 `200` 응답에는 `urls`가 포함됩니다. + + + + 생성된 이미지의 다운로드 가능한 링크. 최소 한 개 이상입니다. `urls`가 비어 있는 `completed` 작업은 `success_without_output`이며 이 문서에 도달하지 않기 때문입니다. + + + + 이 문서에서는 항상 `completed`입니다. `classifyKrea`가 `succeeded`로 응답하는 유일한 상태이며, Krea의 어휘는 대소문자 폴딩 없이 매칭됩니다. + + 가능한 값: `completed` + + +## Examples + +### Input + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### Output + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/krea/krea-2/code.mdx b/ko/development/comfy-router/models/krea/krea-2/code.mdx new file mode 100644 index 000000000..ee6aea752 --- /dev/null +++ b/ko/development/comfy-router/models/krea/krea-2/code.mdx @@ -0,0 +1,203 @@ +--- +title: "Comfy Router로 Krea 2 사용하기" +description: "Comfy Router를 통해 krea/krea-2를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Krea 2" +translationSourceHash: a2cea386 +translationFrom: development/comfy-router/models/krea/krea-2/code.mdx +translationBlockHashes: + "_intro": 6d04eb77 + "Quick start": 9c4e9060 + "Schema": d1c938ef + "Examples": 91f72543 +--- +{/* 생성된 파일. router-schemas/krea/krea-2.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`krea/krea-2`에 대한 API 레퍼런스이며, Krea에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `krea/krea-2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/krea/krea-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## 스키마 + +### 입력 + + + 가로세로 비율. 다음 중 하나: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. + + 가능한 값: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 프롬프트 해석 강도: raw=0, low=10, medium=50, high=100. + + 가능한 값: `raw`, `low`, `medium`, `high` + + + + 생성에 사용할 스타일 참조 + + + + 범위: `-2` ~ `2` + + 형식: `double` + + + + 형식: `uri` + + + + 생성에 사용할 무드보드. 현재는 무드보드 한 개로 제한됩니다. + + + + 형식: `uuid` + + + + 범위: `-0.5` ~ `1.5` + + 형식: `double` + + + + + + + + 해상도 크기 조절. 다음 중 하나: 1K. + + 가능한 값: `1K` + + + + + + + + 생성에 사용할 스타일(일반적으로 LoRA) + + + + + + + + 범위: `-2` ~ `2` + + 형식: `double` + + +Router가 `GET /v2/models/krea/krea-2/openapi.json`에서 제공하는 스키마에서 생성된 문서로, 요청이 공급자에게 도달하기 이전에 Router가 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 형식: `date-time` + + + + 형식: `date-time` + + + + 형식: `uuid` + + + + 완료된 생성 결과입니다. `KreaJob`과 달리 여기서는 null이 될 수 없습니다. `result`에 `urls`가 없는 터미널 작업은 Comfy Router 오류로 응답되므로, `200`에는 항상 이 필드가 포함됩니다. + + + + 생성이 아니라 loraTraining 작업에 의해 설정됩니다. 이 모델들의 `200` 응답에는 `urls`가 포함됩니다. + + + + 생성된 이미지로, 다운로드 가능한 링크입니다. 최소 한 개가 보장되는데, `urls`가 비어 있는 `completed` 작업은 `success_without_output`으로 처리되어 이 문서에 도달하지 않기 때문입니다. + + + + 이 문서에서는 항상 `completed`입니다. `classifyKrea`가 `succeeded`로 응답하는 유일한 상태이며, Krea의 어휘는 대소문자 접기 없이 그대로 매칭됩니다. + + 가능한 값: `completed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 출력 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/ko/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx b/ko/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx new file mode 100644 index 000000000..2494cb137 --- /dev/null +++ b/ko/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx @@ -0,0 +1,175 @@ +--- +title: "Comfy Router로 LTX 2.5 Fast 사용하기" +description: "Comfy Router를 통해 ltx/ltx-2-5-fast를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 다룹니다." +sidebarTitle: "LTX 2.5 Fast" +translationSourceHash: c2334418 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx +translationBlockHashes: + "_intro": d314cc77 + "Quick start": 45d12a7b + "Schema": 27b47ed6 + "Examples": 696cabfd +--- +{/* 생성됨 파일. `pnpm code-pages:gen`으로 router-schemas/ltx/ltx-2-5-fast.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`ltx/ltx-2-5-fast`에 대한 API 레퍼런스이며, LTX에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `ltx/ltx-2-5-fast` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-fast` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-fast", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-fast", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-fast \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 재생 시간(초) (최대값은 해상도와 프레임 레이트에 따라 다릅니다) + + 가능한 값: `2`, `3`, `4`, `5`, `6`, `8`, `10`, `12`, `14`, `16`, `18`, `20` + + + + 초당 프레임 수로 나타낸 프레임 레이트 + + 가능한 값: `24`, `25`, `48`, `50` + + + + 비디오에 대한 오디오 생성 + + + + 생성에 사용할 모델. Comfy Router 라우트 `POST /v2/models/ltx/{model}`에서는 이 필드가 경로에서 제공되므로 생략할 수 있습니다. 이 작업에서 LTX가 제공하는 표기, 즉 Comfy Router가 `ltx/`로 지정하는 집합은 ltx-2-5-fast와 ltx-2-5-pro입니다. 위 주석에서 밝힌 이유로 이들은 enum으로 제한하는 대신 여기에 풀어서 나열됩니다. 각 모델이 허용하는 해상도는 아래 `resolution` 속성의 `x-comfy-model-resolutions` 매트릭스에서 확인할 수 있습니다. + + + + 원하는 비디오 콘텐츠를 설명하는 텍스트 프롬프트 + + + + 출력 비디오 해상도. enum은 모든 모델에 대한 합집합이며, 지원되는 집합은 모델별로 다릅니다. 지원되는 조합: ltx-2-5-fast: 1280x720, 720x1280, 1920x1080, 1080x1920, 2560x1440, 1440x2560, 3840x2160, 2160x3840; ltx-2-5-pro: 1280x720, 720x1280, 1920x1080, 1080x1920. 그 밖의 (모델, 해상도) 조합은 지원되지 않으며, v2 라우트는 이를 400으로 거부합니다. 동일한 매트릭스가 이 속성의 x-comfy-model-resolutions 확장에 기계 판독 가능한 형태로 게시되어 있습니다. + + 가능한 값: `1280x720`, `720x1280`, `1920x1080`, `1080x1920`, `2560x1440`, `1440x2560`, `3840x2160`, `2160x3840` + + +Router가 `GET /v2/models/ltx/ltx-2-5-fast/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 작업 완료 타임스탬프 (ISO 8601) + + + + 작업 생성 타임스탬프 (ISO 8601) + + + + 상태가 실패일 때 존재합니다 + + + + + + + + + + + + 고유한 작업 식별자 + + + + 상태가 완료됨일 때 존재합니다. 출력 URL은 완료 시점으로부터 24시간 후에 만료됩니다 + + + + 생성된 비디오의 URL + + + + 작업 상태 (대기 중, 처리 중, 완료됨, 실패) + + +## 예시 + +### 입력 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 출력 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + diff --git a/ko/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx b/ko/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx new file mode 100644 index 000000000..b018cd625 --- /dev/null +++ b/ko/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx @@ -0,0 +1,176 @@ +--- +title: "Comfy Router로 LTX 2.5 Pro 사용하기" +description: "Comfy Router를 통해 ltx/ltx-2-5-pro를 호출하세요: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "LTX 2.5 Pro" +translationSourceHash: fb48c550 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx +translationBlockHashes: + "_intro": 6134e774 + "Quick start": 471703f3 + "Schema": ff4b9a42 + "Examples": 696cabfd +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/ltx/ltx-2-5-pro.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +LTX에서 제공하고 Comfy Router가 서비스하는 `ltx/ltx-2-5-pro`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `ltx/ltx-2-5-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-pro", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-pro", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## Schema {#schema} + +### Input + + + 비디오 재생 시간(초)입니다(최대값은 해상도와 프레임 레이트에 따라 달라집니다). + + 가능한 값: `2`, `3`, `4`, `5`, `6`, `8`, `10`, `12`, `14`, `16`, `18`, `20` + + + + 초당 프레임 수 단위의 프레임 레이트입니다. + + 가능한 값: `24`, `25`, `48`, `50` + + + + 비디오용 오디오를 생성합니다. + + + + 생성에 사용할 모델입니다. Comfy Router 경로 `POST /v2/models/ltx/{model}`에서는 이 필드가 경로에서 제공되므로 생략할 수 있습니다. 이 작업에서 LTX가 제공하는 표기, 즉 Comfy Router가 `ltx/`로 주소 지정하는 집합은 ltx-2-5-fast와 ltx-2-5-pro입니다. 위 주석에 제시된 이유로 여기서는 enum으로 제한하지 않고 그대로 나열합니다. 각 모델이 허용하는 해상도는 아래 `resolution` 속성의 `x-comfy-model-resolutions` 매트릭스에 있습니다. + + + + 원하는 비디오 콘텐츠를 설명하는 텍스트 프롬프트입니다. + + + + 출력 비디오 해상도입니다. enum은 모든 모델에 대한 합집합이며, 지원되는 집합은 모델별로 다릅니다. 지원되는 조합: ltx-2-5-fast: 1280x720, 720x1280, 1920x1080, 1080x1920, 2560x1440, 1440x2560, 3840x2160, 2160x3840; ltx-2-5-pro: 1280x720, 720x1280, 1920x1080, 1080x1920. 그 밖의 (모델, 해상도) 조합은 지원되지 않으며, v2 경로는 이를 400으로 거부합니다. 동일한 매트릭스가 이 속성의 x-comfy-model-resolutions 확장에 기계 판독 가능한 형태로 게시되어 있습니다. + + 가능한 값: `1280x720`, `720x1280`, `1920x1080`, `1080x1920`, `2560x1440`, `1440x2560`, `3840x2160`, `2160x3840` + + +Router가 `GET /v2/models/ltx/ltx-2-5-pro/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### Output + + + 작업 완료 타임스탬프(ISO 8601) + + + + 작업 생성 타임스탬프(ISO 8601) + + + + status가 failed일 때 존재합니다. + + + + + + + + + + + + 고유한 작업 식별자 + + + + status가 completed일 때 존재합니다. 출력 URL은 완료 후 24시간 뒤에 만료됩니다. + + + + 생성된 비디오의 URL + + + + 작업 상태(pending, processing, completed, failed) + + +## 예시 + +### 입력 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 출력 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/luma/photon-1/code.mdx b/ko/development/comfy-router/models/luma/photon-1/code.mdx new file mode 100644 index 000000000..dc795aa19 --- /dev/null +++ b/ko/development/comfy-router/models/luma/photon-1/code.mdx @@ -0,0 +1,329 @@ +--- +title: "Comfy Router로 Photon 1 사용하기" +description: "Comfy Router를 통해 luma/photon-1을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Photon 1" +translationSourceHash: 310f8788 +translationFrom: development/comfy-router/models/luma/photon-1/code.mdx +translationBlockHashes: + "_intro": 021fca05 + "Quick start": 6d34bab0 + "Schema": 497edabd + "Examples": 92a7a3f8 +--- +{/* GENERATED FILE. Generated from router-schemas/luma/photon-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`luma/photon-1`의 API 레퍼런스로, Luma에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `luma/photon-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma/photon-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## 스키마 + +### 입력 + + + 생성 이미지의 가로세로 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성 작업의 콜백 URL + + 형식: `uri` + + + + + + + + 이미지 정체성(identity) 객체 + + + + 이미지 정체성(identity)의 URL 목록 + + + + 가능한 값: `image` + + + + 이미지 참조 객체 + + + + 이미지 참조의 URL + + 형식: `uri` + + + + 이미지 참조의 가중치 + + + + 생성에 사용되는 이미지 모델입니다. Comfy Router의 `POST /v2/models/luma/{model}` 경로에서는 이 필드가 경로에서 제공되므로 반드시 전송해서는 안 됩니다. v1의 `POST /proxy/luma/generations/image` 경로에서는 LumaImageModel enum(`photon-1`, `photon-flash-1`)으로 제한되며, Rewrite는 모델이 누락되었거나 알 수 없는 경우 요청을 거부하여 이를 강제합니다. + + + + 수정 이미지 참조 객체 + + + + 이미지 참조의 URL + + 형식: `uri` + + + + 수정 이미지 참조의 가중치 + + + + 생성 프롬프트 + + + + 이미지 참조 객체 + + + + 이미지 참조의 URL + + 형식: `uri` + + + + 이미지 참조의 가중치 + + +Router가 `GET /v2/models/luma/photon-1/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 이미지 생성의 에셋입니다. `image`가 결과이며, `video`와 `progress_video`는 이 상태 라우트를 공유하는 Dream Machine VIDEO 작업에 속하는데, Luma는 이를 여기에 명시적인 null로 보냅니다. + + + + 생성된 이미지의 URL입니다. `luma/photon-*` 생성이 채우는 리프입니다. 생성이 `completed`에 도달할 때까지는 null입니다. + + Format: `uri` + + + + 이미지 생성에서는 항상 null입니다. VIDEO 생성이 실행되는 동안 Luma가 게시하는 진행 중 미리보기입니다. + + Format: `uri` + + + + 이미지 생성에서는 항상 null입니다. 대신 `luma/ray-*` 비디오 모델이 이 필드를 채웁니다. + + Format: `uri` + + + + 생성이 만들어진 날짜와 시간 + + Format: `date-time` + + + + 생성 상태의 이유 + + + + 생성의 유형이며, 이 작업에서는 항상 `image`입니다 + + Possible values: `image` + + + + 생성의 ID + + Format: `uuid` + + + + 생성에 사용된 모델 + + + + 이미지 생성 요청으로, 터미널 문서 안에 그대로 반환됩니다. Luma는 요청 모델의 모든 필드를 직렬화하면서 호출자가 설정하지 않은 각 필드에 명시적인 `null`을 기록하므로, 필드의 존재 여부는 키가 아니라 그 값으로 판단해야 합니다. + + + + 생성의 가로세로 비율 + + Possible values: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성의 콜백 URL + + Format: `uri` + + + + + + + + 터미널 문서 안으로 다시 들어올 때의 이미지 아이덴티티입니다. `LumaImageIdentity`와 같은 형태이며, 멤버가 nullable인 이유는 `LumaImageRefEcho`에서 설명한 것과 같습니다. + + + + 이미지 아이덴티티의 URL + + + + 설정된 경우 항상 `image`이며, 작업을 그대로 반영합니다. 호출자가 보내지 않은 경우에는 null인데, 이 에코 객체 전체가 존재하는 이유와 같습니다. + + + + 터미널 문서 안으로 다시 들어올 때의 이미지 참조입니다. `LumaImageRef`와 같은 형태이며, 각 멤버가 nullable인 이유는 Luma가 설정되지 않은 값을 생략하는 대신 명시적인 `null`로 에코하기 때문입니다. + + + + 이미지 참조의 URL + + Format: `uri` + + + + 이미지 참조의 가중치 + + + + 생성에 사용된 이미지 모델 + + Possible values: `photon-1`, `photon-flash-1` + + + + 터미널 문서 안으로 다시 들어올 때의 이미지 수정 참조입니다. `LumaModifyImageRef`와 같은 형태이며, 멤버가 nullable인 이유는 `LumaImageRefEcho`에서 설명한 것과 같습니다. + + + + 이미지 참조의 URL + + Format: `uri` + + + + 이미지 수정 참조의 가중치 + + + + 생성의 프롬프트 + + + + 터미널 문서 안으로 다시 들어올 때의 이미지 참조입니다. `LumaImageRef`와 같은 형태이며, 각 멤버가 nullable인 이유는 Luma가 설정되지 않은 값을 생략하는 대신 명시적인 `null`로 에코하기 때문입니다. + + + + 이미지 참조의 URL + + Format: `uri` + + + + 이미지 참조의 가중치 + + + + 생성의 상태 + + Possible values: `queued`, `dreaming`, `completed`, `failed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 출력 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "5e8b06d7-91c4-4a2f-8b3d-6f7a8b9c0d1e", + "model": "photon-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + diff --git a/ko/development/comfy-router/models/luma/photon-flash-1/code.mdx b/ko/development/comfy-router/models/luma/photon-flash-1/code.mdx new file mode 100644 index 000000000..78ffac650 --- /dev/null +++ b/ko/development/comfy-router/models/luma/photon-flash-1/code.mdx @@ -0,0 +1,331 @@ +--- +title: "Comfy Router로 Photon Flash 1 사용하기" +description: "Comfy Router를 통해 luma/photon-flash-1을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Photon Flash 1" +translationSourceHash: 7cd8313e +translationFrom: development/comfy-router/models/luma/photon-flash-1/code.mdx +translationBlockHashes: + "_intro": 62ec455a + "Quick start": 18a58f5d + "Schema": 5ea08f51 + "Examples": e94faa92 +--- + +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/luma/photon-flash-1.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Luma가 제공하는 `luma/photon-flash-1`의 API 레퍼런스이며, Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[내 Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `luma/photon-flash-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma/photon-flash-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-flash-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-flash-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-flash-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## 스키마 + +### 입력 + + + 생성 이미지의 가로세로 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성에 대한 콜백 URL + + 형식: `uri` + + + + + + + + 이미지 아이덴티티 객체 + + + + 이미지 아이덴티티의 URL + + + + 가능한 값: `image` + + + + 이미지 레퍼런스 객체 + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 이미지 레퍼런스의 가중치 + + + + 생성에 사용되는 이미지 모델입니다. Comfy Router의 `POST /v2/models/luma/{model}` 라우트에서는 이 필드가 경로에서 제공되므로 반드시 전송해서는 안 됩니다(MUST NOT). v1 `POST /proxy/luma/generations/image` 라우트에서는 LumaImageModel enum(`photon-1`, `photon-flash-1`)으로 제한되며, Rewrite는 model이 누락되거나 알 수 없는 경우 요청을 거부하여 이를 강제합니다. + + + + 수정 이미지 레퍼런스 객체 + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 수정 이미지 레퍼런스의 가중치 + + + + 생성에 사용할 프롬프트 + + + + 이미지 레퍼런스 객체 + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 이미지 레퍼런스의 가중치 + + +`GET /v2/models/luma/photon-flash-1/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 이미지 생성의 에셋입니다. `image`가 결과이며, `video`와 `progress_video`는 이 상태 라우트를 공유하는 Dream Machine VIDEO 작업에 속하고, Luma는 이들을 여기에 명시적 null로 보냅니다. + + + + 생성된 이미지의 URL입니다. `luma/photon-*` 생성이 채우는 리프입니다. 생성이 `completed`에 도달할 때까지 null입니다. + + 형식: `uri` + + + + 이미지 생성에서는 항상 null입니다. VIDEO 생성이 실행되는 동안 Luma가 게시하는 진행 중 미리보기입니다. + + 형식: `uri` + + + + 이미지 생성에서는 항상 null이며, 대신 `luma/ray-*` 비디오 모델이 이를 채웁니다. + + 형식: `uri` + + + + 생성이 만들어진 날짜와 시간 + + 형식: `date-time` + + + + 생성 상태의 이유 + + + + 생성의 유형이며, 이 작업에서는 항상 `image`입니다 + + 가능한 값: `image` + + + + 생성의 ID + + 형식: `uuid` + + + + 생성에 사용된 모델 + + + + 터미널 문서 안에 그대로 반환되는 이미지 생성 요청입니다. Luma는 자사 요청 모델의 모든 필드를 직렬화하며, 호출자가 설정하지 않은 각 필드에 명시적 `null`을 기록합니다. 따라서 필드의 존재 여부는 키가 아니라 값에서 읽어야 합니다. + + + + 생성의 가로세로 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성의 콜백 URL + + 형식: `uri` + + + + + + + + 터미널 문서 안으로 다시 돌아올 때의 이미지 아이덴티티입니다. `LumaImageIdentity`와 같은 형태이며, `LumaImageRefEcho`가 설명하는 이유로 멤버가 null 허용입니다. + + + + 이미지 아이덴티티의 URL + + + + 설정된 경우 항상 `image`이며, 작업을 그대로 반영합니다. 호출자가 보내지 않은 경우 null이며, 이 전체 에코 객체가 존재하는 이유와 같습니다. + + + + 터미널 문서 안으로 다시 돌아올 때의 이미지 레퍼런스입니다. `LumaImageRef`와 같은 형태이며, Luma가 설정되지 않은 값을 생략하지 않고 명시적 `null`로 반영하기 때문에 각 멤버가 null 허용입니다. + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 이미지 레퍼런스의 가중치 + + + + 생성에 사용된 이미지 모델 + + 가능한 값: `photon-1`, `photon-flash-1` + + + + 터미널 문서 안으로 다시 돌아올 때의 이미지 수정 레퍼런스입니다. `LumaModifyImageRef`와 같은 형태이며, `LumaImageRefEcho`가 설명하는 이유로 멤버가 null 허용입니다. + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 이미지 수정 레퍼런스의 가중치 + + + + 생성의 프롬프트 + + + + 터미널 문서 안으로 다시 돌아올 때의 이미지 레퍼런스입니다. `LumaImageRef`와 같은 형태이며, Luma가 설정되지 않은 값을 생략하지 않고 명시적 `null`로 반영하기 때문에 각 멤버가 null 허용입니다. + + + + 이미지 레퍼런스의 URL + + 형식: `uri` + + + + 이미지 레퍼런스의 가중치 + + + + 생성의 상태 + + 가능한 값: `queued`, `dreaming`, `completed`, `failed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 출력 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-flash-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "a1c73f26-08d5-4e69-b7a2-3c4d5e6f7a80", + "model": "photon-flash-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-flash-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/luma/ray-2/code.mdx b/ko/development/comfy-router/models/luma/ray-2/code.mdx new file mode 100644 index 000000000..0d25edb33 --- /dev/null +++ b/ko/development/comfy-router/models/luma/ray-2/code.mdx @@ -0,0 +1,212 @@ +--- +title: "Comfy Router로 Ray 2 사용하기" +description: "Comfy Router를 통해 luma/ray-2를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Ray 2" +translationSourceHash: dc6baea3 +translationFrom: development/comfy-router/models/luma/ray-2/code.mdx +translationBlockHashes: + "_intro": 639f7996 + "Quick start": 4acb93f0 + "Schema": ea1f7cdb + "Examples": 3993fae3 +--- +{/* GENERATED FILE. Generated from router-schemas/luma/ray-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`luma/ray-2`에 대한 API 레퍼런스이며, Luma에서 제공하고 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `luma/ray-2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma/ray-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## 스키마 + +### 입력 + + + 생성물의 화면 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성의 콜백 URL입니다. 생성이 dreaming, completed 또는 failed 상태가 되면 Generation 객체와 함께 POST 요청이 콜백 URL로 전송됩니다 + + 형식: `uri` + + + + + + + + 가능한 값: `video` + + + + 생성의 키프레임 + + + + 키프레임은 Generation 참조, 이미지 또는 비디오 중 하나일 수 있습니다 + + + + 키프레임은 Generation 참조, 이미지 또는 비디오 중 하나일 수 있습니다 + + + + 비디오를 반복 재생할지 여부 + + + + 생성에 사용되는 비디오 모델입니다. Comfy Router의 `POST /v2/models/luma/{model}` 경로에서는 이 필드가 경로에서 제공되므로 반드시 전송해서는 안 됩니다. v1 `POST /proxy/luma/generations` 경로에서는 필수이며 LumaVideoModel enum(`ray-2`, `ray-flash-2`)으로 제한됩니다. + + + + 생성의 프롬프트 + + + + + + +Router가 `GET /v2/models/luma/ray-2/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 문서와 동일합니다. + +### 출력 + + + 생성의 에셋 + + + + 이미지의 URL + + 형식: `uri` + + + + 진행 비디오의 URL + + 형식: `uri` + + + + 비디오의 URL + + 형식: `uri` + + + + 생성이 만들어진 날짜와 시간 + + 형식: `date-time` + + + + 생성 상태의 이유 + + + + 가능한 값: `video`, `image` + + + + 생성의 ID + + 형식: `uuid` + + + + 생성에 사용된 모델 + + + + 생성의 요청 + + + + 생성의 상태 + + 가능한 값: `queued`, `dreaming`, `completed`, `failed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 출력 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "3f2a7c1e-8b40-4d59-9f6a-1c2d3e4f5a60", + "model": "ray-2", + "state": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/luma/ray-flash-2/code.mdx b/ko/development/comfy-router/models/luma/ray-flash-2/code.mdx new file mode 100644 index 000000000..641fad2a9 --- /dev/null +++ b/ko/development/comfy-router/models/luma/ray-flash-2/code.mdx @@ -0,0 +1,213 @@ +--- +title: "Comfy Router로 Ray Flash 2 사용하기" +description: "Comfy Router를 통해 luma/ray-flash-2를 호출하는 방법을 설명합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Ray Flash 2" +translationSourceHash: a76a94e1 +translationFrom: development/comfy-router/models/luma/ray-flash-2/code.mdx +translationBlockHashes: + "_intro": 1fb59d13 + "Quick start": ff9e17ce + "Schema": 8009af73 + "Examples": cb7953b0 +--- + +{/* GENERATED FILE. Generated from router-schemas/luma/ray-flash-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Luma에서 Comfy Router로 제공하는 `luma/ray-flash-2`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `luma/ray-flash-2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma/ray-flash-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-flash-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-flash-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-flash-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## 스키마 + +### 입력 + + + 생성의 가로세로 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `21:9`, `9:21` + + + + 생성의 콜백 URL입니다. 생성이 dreaming, completed 또는 failed 상태가 되면 Generation 객체를 담은 POST 요청이 콜백 URL로 전송됩니다. + + 형식: `uri` + + + + + + + + 가능한 값: `video` + + + + 생성의 키프레임 + + + + 키프레임은 Generation 참조, 이미지 또는 비디오 중 하나일 수 있습니다 + + + + 키프레임은 Generation 참조, 이미지 또는 비디오 중 하나일 수 있습니다 + + + + 비디오를 반복 재생할지 여부 + + + + 생성에 사용되는 비디오 모델입니다. Comfy Router 경로 `POST /v2/models/luma/{model}`에서는 이 필드가 경로에서 제공되며 전송해서는 안 됩니다(MUST NOT). v1 `POST /proxy/luma/generations` 경로에서는 필수이며 LumaVideoModel enum(`ray-2`, `ray-flash-2`)으로 제한됩니다. + + + + 생성의 프롬프트 + + + + + + +`GET /v2/models/luma/ray-flash-2/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성의 에셋 + + + + 이미지의 URL + + 형식: `uri` + + + + 진행 비디오의 URL + + 형식: `uri` + + + + 비디오의 URL + + 형식: `uri` + + + + 생성이 만들어진 날짜와 시간 + + 형식: `date-time` + + + + 생성 상태의 원인 + + + + 가능한 값: `video`, `image` + + + + 생성의 ID + + 형식: `uuid` + + + + 생성에 사용된 모델 + + + + 생성의 요청 + + + + 생성의 상태 + + 가능한 값: `queued`, `dreaming`, `completed`, `failed` + + +## 예시 + +### 입력 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 출력 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-flash-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "8c41d0b6-2e7a-4f35-b1d8-9a0e6f3c2b71", + "model": "ray-flash-2", + "state": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/luma_2/uni-1-max/code.mdx b/ko/development/comfy-router/models/luma_2/uni-1-max/code.mdx new file mode 100644 index 000000000..614b42147 --- /dev/null +++ b/ko/development/comfy-router/models/luma_2/uni-1-max/code.mdx @@ -0,0 +1,295 @@ +--- +title: "Comfy Router로 Uni 1 Max 사용하기" +description: "Comfy Router를 통해 luma_2/uni-1-max를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Uni 1 Max" +translationSourceHash: 41396dcb +translationFrom: development/comfy-router/models/luma_2/uni-1-max/code.mdx +translationBlockHashes: + "_intro": ebc62f13 + "Quick start": 5e8bbbee + "Schema": 99bc582a + "Examples": f813a867 +--- +{/* GENERATED FILE. Generated from router-schemas/luma_2/uni-1-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`luma_2/uni-1-max`에 대한 API 레퍼런스이며, Comfy Router가 Luma 2에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 전송합니다. + +**모델 ID:** `luma_2/uni-1-max` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma_2/uni-1-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1-max", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1-max", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## 스키마 + +### 입력 + + + 출력 가로세로 비율. ray-3.2 비디오 모델은 9:16, 3:4, 1:1, 4:3, 16:9, 21:9 하위 집합을 지원합니다. + + 가능한 값: `3:1`, `2:1`, `21:9`, `16:9`, `3:2`, `4:3`, `1:1`, `3:4`, `2:3`, `9:16`, `1:2`, `1:3` + + + + 스타일/콘텐츠 가이드용 참조 이미지. type 'image'의 경우 최대 9개, type 'image_edit'의 경우 최대 8개입니다. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할, 이전에 완료된 생성의 UUID. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입. data와 함께 필수입니다 (비디오 소스의 경우 url과 함께 필수이며, 예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 사용할 모델. 이미지 생성에는 uni-1 / uni-1-max, 비디오 생성, 편집, 리프레이밍에는 ray-3.2를 사용합니다. + + + + 출력 이미지 형식 + + 가능한 값: `png`, `jpeg` + + + + 텍스트 프롬프트 + + + + 이미지 또는 비디오에 대한 참조. 스타일/콘텐츠 가이드, 가이드 생성, video-edit/video-reframe 소스, 가이드 키프레임에 사용됩니다. generation_id, url, data 중 정확히 하나를 제공하세요. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할, 이전에 완료된 생성의 UUID. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입. data와 함께 필수입니다 (비디오 소스의 경우 url과 함께 필수이며, 예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 스타일 프리셋 + + 가능한 값: `auto`, `manga` + + + + 수행할 생성의 종류. image/image_edit는 uni-1 / uni-1-max 모델이 생성하고, video/video_edit/video_reframe은 ray-3.2 모델이 생성합니다. + + 가능한 값: `image`, `image_edit`, `video`, `video_edit`, `video_reframe` + + + + ray-3.2용 비디오 출력 설정. 검증과 과금에 영향을 주는 필드만 여기에 모델링되어 있으며, 추가 필드(편집 컨트롤, end_frame, loop, source_position)는 그대로 Luma로 전달됩니다. + + + + ray-3.2 video / video_edit의 클립 재생 시간. 기본값은 5s입니다. HDR 생성(type video)은 5s로 제한됩니다. + + 가능한 값: `5s`, `10s` + + + + MP4와 함께 EXR 파일을 내보냅니다. hdr가 참이어야 합니다. video_reframe에서는 거부됩니다. + + + + HDR로 렌더링합니다. 720p/1080p가 필요합니다. video_reframe에서는 거부됩니다. + + + + 가이드 프레임 이미지. 키프레임이 하나이면 type "video" 요청이 단일 키프레임 확장이 되며, 이는 항상 하나의 5s 블록으로 과금됩니다. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할, 이전에 완료된 생성의 UUID. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입. data와 함께 필수입니다 (비디오 소스의 경우 url과 함께 필수이며, 예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 생성된 클립을 반복합니다. 생성 전용(type video)입니다. + + + + ray-3.2 video의 출력 해상도. 기본값은 720p입니다. 360p는 초안 등급입니다. HDR은 720p 또는 1080p가 필요합니다. + + 가능한 값: `360p`, `540p`, `720p`, `1080p` + + + + 이미지 또는 비디오에 대한 참조. 스타일/콘텐츠 가이드, 가이드 생성, video-edit/video-reframe 소스, 가이드 키프레임에 사용됩니다. generation_id, url, data 중 정확히 하나를 제공하세요. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할, 이전에 완료된 생성의 UUID. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입. data와 함께 필수입니다 (비디오 소스의 경우 url과 함께 필수이며, 예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 웹 검색 그라운딩을 활성화합니다 + + +`GET /v2/models/luma_2/uni-1-max/openapi.json`에서 Router가 제공하는 스키마에서 생성된 문서이며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 생성 타임스탬프 + + + + 프로그래밍 방식 처리를 위한 기계 판독 가능한 실패 코드 + + 사용 가능한 값: `content_moderated`, `generation_failed`, `budget_exhausted`, `output_not_found` + + + + 사람이 읽을 수 있는 실패 설명으로, FAILED 생성에서만 채워집니다. 성공한 경우에는 `null`입니다. + + + + 생성 식별자 + + + + 사용된 모델 + + + + 생성된 출력 항목 + + + + 미디어 유형 (예: image) + + + + 사전 서명된 URL (1시간 후 만료) + + + + 생성의 현재 상태 + + 사용 가능한 값: `queued`, `processing`, `completed`, `failed` + + + + 수행할 생성의 종류입니다. image/image_edit는 uni-1 / uni-1-max 모델에서 생성되며, video/video_edit/video_reframe은 ray-3.2 모델에서 생성됩니다. + + 사용 가능한 값: `image`, `image_edit`, `video`, `video_edit`, `video_reframe` + + +## 예시 + +### 입력 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 출력 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1-max", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + + diff --git a/ko/development/comfy-router/models/luma_2/uni-1/code.mdx b/ko/development/comfy-router/models/luma_2/uni-1/code.mdx new file mode 100644 index 000000000..26a1117ee --- /dev/null +++ b/ko/development/comfy-router/models/luma_2/uni-1/code.mdx @@ -0,0 +1,297 @@ +--- +title: "Comfy Router에서 Uni 1 사용하기" +description: "Comfy Router를 통해 luma_2/uni-1 호출하기: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Uni 1" +translationSourceHash: 9f61db78 +translationFrom: development/comfy-router/models/luma_2/uni-1/code.mdx +translationBlockHashes: + "_intro": 2cbf0b21 + "Quick start": 90977f75 + "Schema": 8ccf441b + "Examples": f993c215 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/luma_2/uni-1.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Luma 2에서 Comfy Router가 제공하는 `luma_2/uni-1`에 대한 API 레퍼런스입니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `luma_2/uni-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/luma_2/uni-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## 스키마 + +### 입력 + + + 출력 화면 비율입니다. ray-3.2 비디오 모델은 9:16, 3:4, 1:1, 4:3, 16:9, 21:9 하위 집합을 지원합니다. + + 가능한 값: `3:1`, `2:1`, `21:9`, `16:9`, `3:2`, `4:3`, `1:1`, `3:4`, `2:3`, `9:16`, `1:2`, `1:3` + + + + 스타일/콘텐츠 가이드를 위한 참조 이미지입니다. type 'image'의 경우 최대 9개, type 'image_edit'의 경우 최대 8개까지 가능합니다. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할 이전에 완료된 생성의 UUID입니다. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입입니다. data와 함께 필수이며, 비디오 소스의 경우 url과도 함께 필수입니다(예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 사용할 모델입니다. 이미지 생성에는 uni-1 / uni-1-max, 비디오 생성, 편집, 리프레이밍에는 ray-3.2를 사용합니다. + + + + 출력 이미지 형식 + + 가능한 값: `png`, `jpeg` + + + + 텍스트 프롬프트 + + + + 이미지 또는 비디오에 대한 참조입니다. 스타일/콘텐츠 가이드, 가이드 생성, video-edit/video-reframe 소스, 가이드 키프레임에 사용됩니다. generation_id, url, data 중 정확히 하나를 제공하세요. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할 이전에 완료된 생성의 UUID입니다. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입입니다. data와 함께 필수이며, 비디오 소스의 경우 url과도 함께 필수입니다(예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 스타일 프리셋 + + 가능한 값: `auto`, `manga` + + + + 수행할 생성의 종류입니다. image/image_edit는 uni-1 / uni-1-max 모델에서 생성되며, video/video_edit/video_reframe은 ray-3.2 모델에서 생성됩니다. + + 가능한 값: `image`, `image_edit`, `video`, `video_edit`, `video_reframe` + + + + ray-3.2의 비디오 출력 설정입니다. 검증과 과금에 영향을 주는 필드만 여기에 모델링되어 있으며, 추가 필드(edit controls, end_frame, loop, source_position)는 변경 없이 Luma로 전달됩니다. + + + + ray-3.2 video / video_edit의 클립 재생 시간입니다. 기본값은 5s입니다. HDR 생성(type video)은 5s로 제한됩니다. + + 가능한 값: `5s`, `10s` + + + + MP4와 함께 EXR 파일을 내보냅니다. hdr가 참이어야 합니다. video_reframe에서는 거부됩니다. + + + + HDR로 렌더링합니다. 720p/1080p가 필요합니다. video_reframe에서는 거부됩니다. + + + + 가이드 프레임 이미지입니다. 키프레임이 하나이면 type "video" 요청이 단일 키프레임 확장이 되며, 항상 5s 블록 하나로 과금됩니다. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할 이전에 완료된 생성의 UUID입니다. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입입니다. data와 함께 필수이며, 비디오 소스의 경우 url과도 함께 필수입니다(예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 생성된 클립을 반복 재생합니다. 생성 시에만 사용 가능합니다(type video). + + + + ray-3.2 비디오의 출력 해상도입니다. 기본값은 720p입니다. 360p는 드래프트 등급입니다. HDR은 720p 또는 1080p가 필요합니다. + + 가능한 값: `360p`, `540p`, `720p`, `1080p` + + + + 이미지 또는 비디오에 대한 참조입니다. 스타일/콘텐츠 가이드, 가이드 생성, video-edit/video-reframe 소스, 가이드 키프레임에 사용됩니다. generation_id, url, data 중 정확히 하나를 제공하세요. + + + + Base64로 인코딩된 이미지 또는 비디오 데이터 + + + + 소스로 재사용할 이전에 완료된 생성의 UUID입니다. ray-3.2 video_edit / video_reframe에서 사용됩니다. + + + + MIME 타입입니다. data와 함께 필수이며, 비디오 소스의 경우 url과도 함께 필수입니다(예: video_edit / video_reframe의 video/mp4). + + + + 공개적으로 접근 가능한 이미지 또는 비디오 URL + + + + 웹 검색 그라운딩을 활성화합니다 + + +Router가 `GET /v2/models/luma_2/uni-1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 생성 타임스탬프 + + + + 프로그래밍 방식 처리를 위한 기계 판독 가능한 실패 코드 + + 가능한 값: `content_moderated`, `generation_failed`, `budget_exhausted`, `output_not_found` + + + + 사람이 읽을 수 있는 실패 설명으로, FAILED 생성에서만 채워집니다. 성공한 경우에는 `null`입니다. + + + + 생성 식별자 + + + + 사용된 모델 + + + + 생성된 출력 항목 + + + + 미디어 유형 (예: 이미지) + + + + Presigned URL (1시간 후 만료) + + + + 생성의 현재 상태 + + 가능한 값: `queued`, `processing`, `completed`, `failed` + + + + 수행할 생성의 종류입니다. image/image_edit는 uni-1 / uni-1-max 모델이 생성하며, video/video_edit/video_reframe은 ray-3.2 모델이 생성합니다. + + 가능한 값: `image`, `image_edit`, `video`, `video_edit`, `video_reframe` + + +## 예시 + +### 입력 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 출력 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + + diff --git a/ko/development/comfy-router/models/meshy/animations/code.mdx b/ko/development/comfy-router/models/meshy/animations/code.mdx new file mode 100644 index 000000000..eb3d03ffc --- /dev/null +++ b/ko/development/comfy-router/models/meshy/animations/code.mdx @@ -0,0 +1,221 @@ +--- +title: "Comfy Router로 애니메이션 사용하기" +description: "Comfy Router를 통해 meshy/animations를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "애니메이션" +translationSourceHash: 57086ec8 +translationFrom: development/comfy-router/models/meshy/animations/code.mdx +translationBlockHashes: + "_intro": 77ee7b16 + "Quick start": bfff140b + "Schema": eda95378 + "Examples": 1fe9d0ce +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/animations.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Meshy에서 Comfy Router가 제공하는 `meshy/animations`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `meshy/animations` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/animations` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/animations", + { + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps", + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/animations", { + action_id: 92, + post_process: { + fps: 60, + operation_type: "change_fps", + }, + rig_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/animations \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"action_id\": 92, \"post_process\": {\"fps\":60,\"operation_type\":\"change_fps\"}, \"rig_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## Schema + +### 입력 + + + 적용할 애니메이션 액션의 식별자입니다. + + + + 애니메이션 파일 후처리를 위한 파라미터입니다. + + + + 목표 프레임 레이트입니다. 기본값은 30입니다. operation_type이 change_fps인 경우에만 적용됩니다. + + 가능한 값: `24`, `25`, `30`, `60` + + + + 수행할 작업 유형입니다. + + 가능한 값: `change_fps`, `fbx2usdz`, `extract_armature` + + + + 성공적으로 완료된 리깅 작업의 ID입니다 (POST /openapi/v1/rigging). 이 작업의 캐릭터가 애니메이트됩니다. + + +Router가 `GET /v2/models/meshy/animations/openapi.json`에서 제공하는 스키마에서 생성되며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업 결과가 만료되는 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + 선행 작업의 개수입니다. status가 PENDING인 경우에만 의미가 있습니다. + + + + 작업 진행률(0-100)입니다. + + 범위: `0` ~ `100` + + + + 작업이 SUCCEEDED인 경우 출력 애니메이션 URL을 포함합니다. + + + + FBX 형식 애니메이션의 다운로드 가능한 URL입니다. + + + + GLB 형식 애니메이션의 다운로드 가능한 URL입니다. + + + + FPS가 변경된 애니메이션의 FBX 형식 다운로드 가능한 URL입니다. + + + + 처리된 아마추어(armature)의 FBX 형식 다운로드 가능한 URL입니다. + + + + 처리된 애니메이션의 USDZ 형식 다운로드 가능한 URL입니다. + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + Animation 작업의 유형입니다. + + 가능한 값: `animate` + + +## 예시 + +### 입력 + +```json +{ + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps" + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225648000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "animation_fbx_url": "https://example.invalid/meshy/animations/animation.fbx", + "animation_glb_url": "https://example.invalid/meshy/animations/animation.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "animate" +} +``` + + diff --git a/ko/development/comfy-router/models/meshy/meshy-5/code.mdx b/ko/development/comfy-router/models/meshy/meshy-5/code.mdx new file mode 100644 index 000000000..8358c7690 --- /dev/null +++ b/ko/development/comfy-router/models/meshy/meshy-5/code.mdx @@ -0,0 +1,338 @@ +--- +title: "Comfy Router로 Meshy 5 사용하기" +description: "Comfy Router를 통해 meshy/meshy-5를 호출하는 방법: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Meshy 5" +translationSourceHash: 638178e5 +translationFrom: development/comfy-router/models/meshy/meshy-5/code.mdx +translationBlockHashes: + "_intro": f3672d3d + "Quick start": dcdf0c11 + "Schema": 3e99ff32 + "Examples": e2bc6209 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Meshy가 Comfy Router를 통해 제공하는 `meshy/meshy-5`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `meshy/meshy-5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/meshy-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-5", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-5", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## 스키마 + +### 입력 + +#### `preview` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 이후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DPreviewRequest를 참조하세요. 이는 MeshyAiModel로 제한됩니다. + + + + 원하는 객체의 아트 스타일을 설명하세요. + + 가능한 값: `realistic`, `sculpture` + + + + 지원 중단됨. 대신 pose_mode를 사용하세요. 모델을 A/T 포즈로 생성할지 여부입니다. + + + + 미리보기 작업을 생성할 때 이 필드는 "preview"로 설정해야 합니다. + + 가능한 값: `preview` + + + + 참이면 입력 콘텐츠에서 잠재적으로 유해한 콘텐츠가 검사됩니다. + + + + 생성된 모델의 포즈 모드를 지정합니다. + + 가능한 값: `a-pose`, `t-pose`, `` + + + + 3D 모델이 어떤 종류의 객체인지 설명합니다. 최대 600자. + + + + 리메시 단계를 활성화할지 여부를 제어합니다. 거짓이면 최고 정밀도의 삼각형 메시를 반환합니다. + + + + 모델 생성 중 대칭 동작을 제어합니다. + + 가능한 값: `off`, `auto`, `on` + + + + 생성된 모델의 목표 폴리곤 수를 지정합니다. 유효 범위는 100에서 300,000입니다. + + 범위: `100` ~ `300000` + + + + 생성된 모델의 토폴로지를 지정합니다. + + 가능한 값: `quad`, `triangle` + + + + 더 세밀한 표면 디테일과 고충실도 형상을 위한 Ultra 생성을 활성화합니다. ai_model이 meshy-7 또는 latest인 경우에만 지원됩니다. + + +#### `refine` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 이후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DRefineRequest를 참조하세요. 이는 MeshyAiModel로 제한됩니다. + + + + 기본 색상에 추가로 PBR 맵(metallic, roughness, normal)을 생성합니다. Sculpture 스타일을 사용할 때는 enable_pbr을 false로 설정해야 합니다. + + + + refine 작업을 생성할 때 이 필드는 "refine"으로 설정해야 합니다. + + 가능한 값: `refine` + + + + 참이면 입력 콘텐츠에서 잠재적으로 유해한 콘텐츠가 검사됩니다. + + + + 해당 미리보기 작업 id입니다. 주어진 미리보기 작업의 상태는 SUCCEEDED여야 합니다. + + + + 텍스처링 과정을 안내할 2D 이미지를 제공합니다. .jpg, .jpeg, .png 형식 또는 base64로 인코딩된 data URI를 지원합니다. + + + + 텍스처링 과정을 안내할 추가 텍스트 프롬프트를 제공합니다. 최대 600자. + + + + 생성된 텍스처의 텍스처 해상도입니다. 2k, 4k, 8k 중 하나입니다. 4k와 8k는 ai_model이 meshy-6, meshy-7 또는 latest여야 합니다. + + 가능한 값: `2k`, `4k`, `8k` + + +`GET /v2/models/meshy/meshy-5/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 미리보기 작업을 생성하는 데 사용된 수정되지 않은 art_style입니다. + + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + Meshy에서 생성한 텍스처가 적용된 3D 모델 파일의 다운로드 가능한 URL입니다. + + + + FBX 파일의 다운로드 가능한 URL입니다. + + + + GLB 파일의 다운로드 가능한 URL입니다. + + + + MTL 파일의 다운로드 가능한 URL입니다. + + + + OBJ 파일의 다운로드 가능한 URL입니다. + + + + USDZ 파일의 다운로드 가능한 URL입니다. + + + + 이전 버전과의 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 선행 작업의 수입니다. 상태가 PENDING일 때만 의미가 있습니다. + + + + 작업의 진행률입니다. 시작되지 않은 경우 0, 성공한 경우 100입니다. + + 범위: `0` ~ `100` + + + + 작업을 생성하는 데 사용된 수정되지 않은 프롬프트입니다. + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + 텍스처링 과정을 안내하는 데 사용된 텍스처 이미지의 다운로드 가능한 URL입니다. + + + + refine 단계에서 텍스처링 과정을 안내하기 위해 제공된 추가 텍스트 프롬프트입니다. + + + + 이전 버전과의 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 작업에서 생성된 텍스처 URL 객체의 배열입니다. + + + + 베이스 색상 맵 이미지의 다운로드 가능한 URL입니다. + + + + 메탈릭 맵 이미지의 다운로드 가능한 URL입니다. + + + + 노멀 맵 이미지의 다운로드 가능한 URL입니다. + + + + 러프니스 맵 이미지의 다운로드 가능한 URL입니다. + + + + 모델 파일의 썸네일 이미지에 대한 다운로드 가능한 URL입니다. + + + + 텍스트 기반 3D 생성 작업의 유형입니다. + + 가능한 값: `text-to-3d-preview`, `text-to-3d-refine` + + + + 미리보기 비디오의 다운로드 가능한 URL을 반환하는 지원 중단된 필드입니다. + + +## 예시 + +### 입력 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 출력 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/ko/development/comfy-router/models/meshy/meshy-6/code.mdx b/ko/development/comfy-router/models/meshy/meshy-6/code.mdx new file mode 100644 index 000000000..7e880b46f --- /dev/null +++ b/ko/development/comfy-router/models/meshy/meshy-6/code.mdx @@ -0,0 +1,337 @@ +--- +title: "Comfy Router로 Meshy 6 사용하기" +description: "Comfy Router를 통해 meshy/meshy-6를 호출하는 방법: endpoint, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Meshy 6" +translationSourceHash: e0974924 +translationFrom: development/comfy-router/models/meshy/meshy-6/code.mdx +translationBlockHashes: + "_intro": aa2fea0d + "Quick start": 53e45ae7 + "Schema": a8592941 + "Examples": e2bc6209 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/meshy/meshy-6.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Meshy에서 제공하는 `meshy/meshy-6`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `meshy/meshy-6` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/meshy-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-6", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-6", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## 스키마 + +### 입력 + +#### `preview` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DPreviewRequest를 참조하세요. 이 요청은 해당 값을 MeshyAiModel로 제한합니다. + + + + 원하는 오브젝트의 아트 스타일을 설명합니다. + + 가능한 값: `realistic`, `sculpture` + + + + 지원 중단됨. 대신 pose_mode를 사용하세요. 모델을 A/T 포즈로 생성할지 여부입니다. + + + + 미리보기 작업을 생성할 때는 이 필드를 "preview"로 설정해야 합니다. + + 가능한 값: `preview` + + + + 참일 때 입력 콘텐츠에서 유해할 가능성이 있는 콘텐츠를 검사합니다. + + + + 생성된 모델의 포즈 모드를 지정합니다. + + 가능한 값: `a-pose`, `t-pose`, `` + + + + 3D 모델이 어떤 오브젝트인지 설명합니다. 최대 600자입니다. + + + + 리메시 단계를 활성화할지 여부를 제어합니다. 거짓이면 최고 정밀도의 삼각형 메시를 반환합니다. + + + + 모델 생성 중 대칭 동작을 제어합니다. + + 가능한 값: `off`, `auto`, `on` + + + + 생성된 모델의 목표 폴리곤 수를 지정합니다. 유효 범위는 100에서 300,000입니다. + + 범위: `100` ~ `300000` + + + + 생성된 모델의 토폴로지를 지정합니다. + + 가능한 값: `quad`, `triangle` + + + + 더 세밀한 표면 디테일과 높은 충실도의 지오메트리를 위한 Ultra 생성을 활성화합니다. ai_model이 meshy-7 또는 latest일 때만 지원됩니다. + + +#### `refine` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DRefineRequest를 참조하세요. 이 요청은 해당 값을 MeshyAiModel로 제한합니다. + + + + 기본 색상에 더해 PBR 맵(metallic, roughness, normal)을 생성합니다. Sculpture 스타일을 사용할 때는 enable_pbr을 거짓으로 설정해야 합니다. + + + + refine 작업을 생성할 때는 이 필드를 "refine"으로 설정해야 합니다. + + 가능한 값: `refine` + + + + 참일 때 입력 콘텐츠에서 유해할 가능성이 있는 콘텐츠를 검사합니다. + + + + 대응하는 미리보기 작업 id입니다. 지정한 미리보기 작업의 상태가 SUCCEEDED여야 합니다. + + + + 텍스처링 과정을 안내할 2D 이미지를 제공합니다. .jpg, .jpeg, .png 형식 또는 base64로 인코딩된 데이터 URI를 지원합니다. + + + + 텍스처링 과정을 안내할 추가 텍스트 프롬프트를 제공합니다. 최대 600자입니다. + + + + 생성된 텍스처의 텍스처 해상도입니다. 2k, 4k, 8k 중 하나입니다. 4k와 8k는 ai_model이 meshy-6, meshy-7 또는 latest여야 합니다. + + 가능한 값: `2k`, `4k`, `8k` + + +Router가 `GET /v2/models/meshy/meshy-6/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 미리보기 작업을 생성하는 데 사용된 수정되지 않은 art_style입니다. + + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + Meshy에서 생성된 텍스처가 적용된 3D 모델 파일의 다운로드 가능한 URL입니다. + + + + FBX 파일의 다운로드 가능한 URL입니다. + + + + GLB 파일의 다운로드 가능한 URL입니다. + + + + MTL 파일의 다운로드 가능한 URL입니다. + + + + OBJ 파일의 다운로드 가능한 URL입니다. + + + + USDZ 파일의 다운로드 가능한 URL입니다. + + + + 하위 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 앞선 작업의 개수입니다. status가 PENDING일 때만 의미가 있습니다. + + + + 작업의 진행률입니다. 시작되지 않은 경우 0이며, 성공하면 100입니다. + + 범위: `0`에서 `100`까지 + + + + 작업을 생성하는 데 사용된 수정되지 않은 프롬프트입니다. + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + 텍스처링 과정을 안내하는 데 사용된 텍스처 이미지의 다운로드 가능한 URL입니다. + + + + refine 단계에서 텍스처링 과정을 안내하기 위해 제공된 추가 텍스트 프롬프트입니다. + + + + 하위 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 작업에서 생성된 텍스처 URL 객체의 배열입니다. + + + + 베이스 색상 맵 이미지의 다운로드 가능한 URL입니다. + + + + 메탈릭 맵 이미지의 다운로드 가능한 URL입니다. + + + + 노멀(normal) 맵 이미지의 다운로드 가능한 URL입니다. + + + + 러프니스 맵 이미지의 다운로드 가능한 URL입니다. + + + + 모델 파일의 썸네일 이미지에 대한 다운로드 가능한 URL입니다. + + + + 텍스트 기반 3D 생성 작업의 유형입니다. + + 가능한 값: `text-to-3d-preview`, `text-to-3d-refine` + + + + 미리보기 비디오의 다운로드 가능한 URL을 반환하는 지원 중단된 필드입니다. + + +## 예시 + +### 입력 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 출력 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + diff --git a/ko/development/comfy-router/models/meshy/meshy-7/code.mdx b/ko/development/comfy-router/models/meshy/meshy-7/code.mdx new file mode 100644 index 000000000..853d69a50 --- /dev/null +++ b/ko/development/comfy-router/models/meshy/meshy-7/code.mdx @@ -0,0 +1,339 @@ +--- +title: "Use Meshy 7 with Comfy Router" +description: "Call meshy/meshy-7 through Comfy Router: endpoint, request shape and the response Router returns." +sidebarTitle: "Meshy 7" +translationSourceHash: 13a581ae +translationFrom: development/comfy-router/models/meshy/meshy-7/code.mdx +translationBlockHashes: + "_intro": c72a0194 + "Quick start": e82d9fbc + "Schema": 73e21121 + "Examples": e2bc6209 +--- + +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-7.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-7`에 대한 API 레퍼런스이며, Meshy에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `meshy/meshy-7` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/meshy-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-7", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-7", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## 스키마 + +### 입력 + +#### `preview` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DPreviewRequest를 참조하세요. 이는 이를 MeshyAiModel로 제한합니다. + + + + 객체의 원하는 아트 스타일을 설명합니다. + + 가능한 값: `realistic`, `sculpture` + + + + 지원 중단됨. 대신 pose_mode를 사용하세요. 모델을 A/T 포즈로 생성할지 여부입니다. + + + + 미리보기 작업을 생성할 때 이 필드는 "preview"로 설정해야 합니다. + + 가능한 값: `preview` + + + + 참일 때 입력 콘텐츠에서 잠재적으로 유해한 콘텐츠를 검사합니다. + + + + 생성된 모델의 포즈 모드를 지정합니다. + + 가능한 값: `a-pose`, `t-pose`, `` + + + + 3D 모델이 어떤 객체인지 설명합니다. 최대 600자입니다. + + + + 리메시 단계를 활성화할지 제어합니다. 거짓이면 최고 정밀도의 삼각 메시를 반환합니다. + + + + 모델 생성 중 대칭 동작을 제어합니다. + + 가능한 값: `off`, `auto`, `on` + + + + 생성된 모델의 목표 폴리곤 수를 지정합니다. 유효 범위는 100에서 300,000입니다. + + 범위: `100` ~ `300000` + + + + 생성된 모델의 토폴로지를 지정합니다. + + 가능한 값: `quad`, `triangle` + + + + 더 세밀한 표면 디테일과 함께 더 높은 충실도의 지오메트리를 위해 Ultra 생성을 활성화합니다. ai_model이 meshy-7 또는 latest인 경우에만 지원됩니다. + + +#### `refine` 변형 + + + 실행할 Meshy 모델입니다. Comfy Router 경로에서는 경로(`/v2/models/meshy/{model}`)로 제공되며 생략하거나 null로 보낼 수 있습니다. Router는 검증 후 경로의 모델을 여기에 기록합니다. v1 /proxy 경로에서는 MeshyTextTo3DRefineRequest를 참조하세요. 이는 이를 MeshyAiModel로 제한합니다. + + + + 기본 색상 외에 PBR 맵(metallic, roughness, normal)을 생성합니다. Sculpture 스타일을 사용할 때는 enable_pbr를 거짓으로 설정해야 합니다. + + + + refine 작업을 생성할 때 이 필드는 "refine"으로 설정해야 합니다. + + 가능한 값: `refine` + + + + 참일 때 입력 콘텐츠에서 잠재적으로 유해한 콘텐츠를 검사합니다. + + + + 해당 미리보기 작업 id입니다. 지정한 미리보기 작업의 상태가 SUCCEEDED여야 합니다. + + + + 텍스처링 과정을 안내할 2D 이미지를 제공합니다. .jpg, .jpeg, .png 형식 또는 base64로 인코딩된 data URI를 지원합니다. + + + + 텍스처링 과정을 안내할 추가 텍스트 프롬프트를 제공합니다. 최대 600자입니다. + + + + 생성된 텍스처의 해상도입니다. 2k, 4k, 8k 중 하나입니다. 4k와 8k는 ai_model이 meshy-6, meshy-7 또는 latest여야 합니다. + + 가능한 값: `2k`, `4k`, `8k` + + +`GET /v2/models/meshy/meshy-7/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 미리보기 작업을 생성하는 데 사용된, 수정되지 않은 art_style입니다. + + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + Meshy에서 생성한 텍스처가 적용된 3D 모델 파일의 다운로드 가능한 URL입니다. + + + + FBX 파일의 다운로드 가능한 URL입니다. + + + + GLB 파일의 다운로드 가능한 URL입니다. + + + + MTL 파일의 다운로드 가능한 URL입니다. + + + + OBJ 파일의 다운로드 가능한 URL입니다. + + + + USDZ 파일의 다운로드 가능한 URL입니다. + + + + 하위 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 선행 작업의 수입니다. status가 PENDING일 때만 의미가 있습니다. + + + + 작업의 진행률입니다. 시작되지 않은 경우 0이며, 성공한 경우 100입니다. + + 범위: `0` ~ `100` + + + + 작업을 생성하는 데 사용된, 수정되지 않은 프롬프트입니다. + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + 텍스처링 과정을 안내하는 데 사용된 텍스처 이미지의 다운로드 가능한 URL입니다. + + + + refine 단계에서 텍스처링 과정을 안내하기 위해 제공된 추가 텍스트 프롬프트입니다. + + + + 하위 호환성을 위해 유지되는 지원 중단된 필드입니다. + + + + 작업에서 생성된 텍스처 URL 객체의 배열입니다. + + + + 베이스 색상 맵 이미지의 다운로드 가능한 URL입니다. + + + + 메탈릭 맵 이미지의 다운로드 가능한 URL입니다. + + + + 노멀(normal) 맵 이미지의 다운로드 가능한 URL입니다. + + + + 러프니스 맵 이미지의 다운로드 가능한 URL입니다. + + + + 모델 파일의 썸네일 이미지의 다운로드 가능한 URL입니다. + + + + 텍스트 기반 3D 생성 작업의 유형입니다. + + 가능한 값: `text-to-3d-preview`, `text-to-3d-refine` + + + + 미리보기 비디오의 다운로드 가능한 URL을 반환하는 지원 중단된 필드입니다. + + +## 예시 + +### 입력 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 출력 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/ko/development/comfy-router/models/meshy/remesh/code.mdx b/ko/development/comfy-router/models/meshy/remesh/code.mdx new file mode 100644 index 000000000..1f94bd7ff --- /dev/null +++ b/ko/development/comfy-router/models/meshy/remesh/code.mdx @@ -0,0 +1,237 @@ +--- +title: "Comfy Router에서 Remesh 사용하기" +description: "Comfy Router를 통해 meshy/remesh를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Remesh" +translationSourceHash: e8059ce2 +translationFrom: development/comfy-router/models/meshy/remesh/code.mdx +translationBlockHashes: + "_intro": e9a2c81a + "Quick start": 95cd0cea + "Schema": 1e6e7f8f + "Examples": 4eee8fa5 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/remesh.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +# `meshy/remesh` API 레퍼런스: Meshy가 Comfy Router를 통해 제공 + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `meshy/remesh` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/remesh` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/remesh", + { + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": ["glb", "fbx"], + "target_polycount": 50000, + "topology": "quad", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/remesh", { + input_task_id: "0193abcd-0000-0000-0000-000000000000", + origin_at: "bottom", + resize_height: 1, + target_formats: ["glb", "fbx"], + target_polycount: 50000, + topology: "quad", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/remesh \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\", \"origin_at\": \"bottom\", \"resize_height\": 1, \"target_formats\": [\"glb\",\"fbx\"], \"target_polycount\": 50000, \"topology\": \"quad\"}" +``` + + +## Schema + +### 입력 + + + 참이면 입력 모델 파일의 형식만 변경하고, topology, resize_height, target_polycount 등 다른 입력은 무시합니다. + + + + 리메시할 완료된 Image to 3D 또는 Text to 3D 작업의 ID입니다. model_url이 제공되지 않은 경우 필수입니다. + + + + 3D 모델에 대한 공개적으로 접근 가능한 URL 또는 데이터 URI입니다. 지원 형식은 glb, gltf, obj, fbx, stl입니다. input_task_id가 제공되지 않은 경우 필수입니다. + + + + 원점의 위치입니다. + + 가능한 값: `bottom`, `center`, `` + + + + 모델의 크기를 미터 단위의 특정 높이로 조정합니다. 0은 크기 조정을 하지 않음을 의미합니다. + + + + 리메시된 모델의 대상 형식 목록입니다. + + + + 생성된 모델의 대상 폴리곤 수를 지정합니다. 유효 범위는 100에서 300,000입니다. + + 범위: `100` ~ `300000` + + + + 생성된 모델의 토폴로지를 지정합니다. + + 가능한 값: `quad`, `triangle` + + +Router가 `GET /v2/models/meshy/remesh/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + 리메시된 3D 모델 파일의 다운로드 가능한 URL입니다. + + + + Blender 파일의 다운로드 가능한 URL입니다. + + + + FBX 파일의 다운로드 가능한 URL입니다. + + + + GLB 파일의 다운로드 가능한 URL입니다. + + + + OBJ 파일의 다운로드 가능한 URL입니다. + + + + STL 파일의 다운로드 가능한 URL입니다. + + + + USDZ 파일의 다운로드 가능한 URL입니다. + + + + 선행 작업의 수입니다. status가 PENDING일 때만 의미가 있습니다. + + + + 작업의 진행률입니다. 시작되지 않은 경우 0, 성공한 경우 100입니다. + + 범위: `0` ~ `100` + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + Remesh 작업의 유형입니다. + + 가능한 값: `remesh` + + +## 예제 + +### 입력 + +```json +{ + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": [ + "glb", + "fbx" + ], + "target_polycount": 50000, + "topology": "quad" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600000, + "finished_at": 1767225663000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/remesh/model.fbx", + "glb": "https://example.invalid/meshy/remesh/model.glb", + "obj": "https://example.invalid/meshy/remesh/model.obj" + }, + "progress": 100, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "remesh" +} +``` + + + diff --git a/ko/development/comfy-router/models/meshy/rigging/code.mdx b/ko/development/comfy-router/models/meshy/rigging/code.mdx new file mode 100644 index 000000000..74f82eeb5 --- /dev/null +++ b/ko/development/comfy-router/models/meshy/rigging/code.mdx @@ -0,0 +1,224 @@ +--- +title: "Comfy Router로 Rigging 사용하기" +description: "Comfy Router를 통해 meshy/rigging을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Rigging" +translationSourceHash: c26fe555 +translationFrom: development/comfy-router/models/meshy/rigging/code.mdx +translationBlockHashes: + "_intro": 0dfeedab + "Quick start": a2e204dc + "Schema": 2d8d7dbb + "Examples": 8e91e01b +--- +{/* 생성된 파일. router-schemas/meshy/rigging.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Meshy에서 Comfy Router를 통해 제공하는 `meshy/rigging`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `meshy/rigging` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/meshy/rigging` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/rigging", + { + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/rigging", { + height_meters: 1.8, + input_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/rigging \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"height_meters\": 1.8, \"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## 스키마 + +### 입력 + + + 캐릭터 모델의 대략적인 높이(미터)입니다. 양수여야 합니다. + + 범위: `0` ~ `…` + + + + 리깅해야 하는 입력 작업입니다. model_url이 제공되지 않은 경우 필수입니다. + + + + 텍스처가 있는 휴머노이드 GLB 파일에 대한 공개적으로 접근 가능한 URL 또는 Data URI입니다. input_task_id가 제공되지 않은 경우 필수입니다. + + + + 모델의 UV 언랩된 기본 색상 텍스처 이미지입니다. 공개적으로 접근 가능한 URL 또는 Data URI입니다. .png 형식을 지원합니다. + + +Router가 `GET /v2/models/meshy/rigging/openapi.json`에서 제공하는 스키마에서 생성되었습니다. 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 작업이 생성된 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업 결과가 만료되는 시점의 타임스탬프(밀리초)입니다. + + 형식: `int64` + + + + 작업이 완료된 시점의 타임스탬프(밀리초)입니다. 완료되지 않은 경우 0입니다. + + 형식: `int64` + + + + 작업의 고유 식별자입니다. + + + + 선행 작업의 수입니다. status가 PENDING인 경우에만 의미가 있습니다. + + + + 작업의 진행률(0-100)입니다. 시작되지 않은 경우 0, 성공한 경우 100입니다. + + 범위: `0` ~ `100` + + + + 작업이 SUCCEEDED인 경우 출력 에셋 URL을 포함합니다. + + + + 기본 애니메이션의 URL을 포함합니다. + + + + GLB 형식의 달리기 애니메이션 아마추어에 대한 다운로드 가능한 URL입니다. + + + + FBX 형식의 달리기 애니메이션(스킨 포함)에 대한 다운로드 가능한 URL입니다. + + + + GLB 형식의 달리기 애니메이션(스킨 포함)에 대한 다운로드 가능한 URL입니다. + + + + GLB 형식의 걷기 애니메이션 아마추어에 대한 다운로드 가능한 URL입니다. + + + + FBX 형식의 걷기 애니메이션(스킨 포함)에 대한 다운로드 가능한 URL입니다. + + + + GLB 형식의 걷기 애니메이션(스킨 포함)에 대한 다운로드 가능한 URL입니다. + + + + FBX 형식의 리깅된 캐릭터에 대한 다운로드 가능한 URL입니다. + + + + GLB 형식의 리깅된 캐릭터에 대한 다운로드 가능한 URL입니다. + + + + 작업이 시작된 시점의 타임스탬프(밀리초)입니다. 시작되지 않은 경우 0입니다. + + 형식: `int64` + + + + 가능한 값: `SUCCEEDED` + + + + 작업이 실패한 경우 오류 메시지를 포함하는 오류 객체입니다. + + + + 자세한 오류 메시지입니다. + + + + Rigging 작업의 유형입니다. + + 가능한 값: `rig` + + +## 예제 + +### 입력 + +```json +{ + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 출력 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225712000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "basic_animations": { + "running_glb_url": "https://example.invalid/meshy/rigging/running.glb", + "walking_glb_url": "https://example.invalid/meshy/rigging/walking.glb" + }, + "rigged_character_fbx_url": "https://example.invalid/meshy/rigging/character.fbx", + "rigged_character_glb_url": "https://example.invalid/meshy/rigging/character.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "rig" +} +``` + + + diff --git a/ko/development/comfy-router/models/minimax/minimax-h3/code.mdx b/ko/development/comfy-router/models/minimax/minimax-h3/code.mdx new file mode 100644 index 000000000..7fb1ad7c8 --- /dev/null +++ b/ko/development/comfy-router/models/minimax/minimax-h3/code.mdx @@ -0,0 +1,279 @@ +--- +title: "Comfy Router로 MiniMax H3 사용하기" +description: "Comfy Router를 통해 minimax/minimax-h3를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "MiniMax H3" +translationSourceHash: 5fb40671 +translationFrom: development/comfy-router/models/minimax/minimax-h3/code.mdx +translationBlockHashes: + "_intro": fa61f8ee + "Quick start": bfc061a3 + "Schema": a9ff2a3d + "Examples": 5c283b57 +--- +{/* GENERATED FILE. Generated from router-schemas/minimax/minimax-h3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`minimax/minimax-h3`의 API 레퍼런스로, MiniMax에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `minimax/minimax-h3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/minimax/minimax-h3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "minimax/minimax-h3", + { + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("minimax/minimax-h3", { + content: [ + { + text: "A single red maple leaf resting on a plain white background.", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "768P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/minimax/minimax-h3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A single red maple leaf resting on a plain white background.\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"768P\"}" +``` + + +## 스키마 + +### 입력 + + + 출력에 AIGC 워터마크를 추가할지 여부입니다. 기본값은 거짓입니다. + + + + 선택 사항입니다. 챌린지 검증 이후 작업 상태 변경을 수신할 URL입니다. + + + + 생성을 구동하는 콘텐츠 항목입니다. 비어 있지 않은 텍스트 항목 하나를 반드시 포함해야 하며, 선택적으로 first_frame/last_frame 이미지 또는 reference_* 미디어를 추가할 수 있습니다. + + + + 오디오 소스입니다. audio_url 항목에 필수입니다. + + + + 공개적으로 접근 가능한 URL, mm_file://\{file_id} 참조 또는 데이터 URI입니다. + + + + 이미지 소스입니다. image_url 항목에 필수입니다. + + + + 공개적으로 접근 가능한 URL, mm_file://\{file_id} 참조 또는 데이터 URI입니다. + + + + 미디어 항목의 역할입니다. 옵션: first_frame, last_frame, reference_image, reference_video, reference_audio, base_video. 키프레임 역할과 reference_* 역할은 하나의 요청 내에서 상호 배타적입니다. base_video는 비디오 재생성 요청의 소스 비디오를 나타냅니다. + + + + 프롬프트 텍스트입니다. 요청당 비어 있지 않은 텍스트 항목이 정확히 하나 필요합니다. + + + + 콘텐츠 항목 유형입니다. 옵션: text, image_url, video_url, audio_url. + + + + 비디오 소스입니다. video_url 항목에 필수입니다. + + + + 공개적으로 접근 가능한 URL, mm_file://\{file_id} 참조 또는 데이터 URI입니다. + + + + 비디오 재생 시간(초)으로, 5에서 15 사이입니다. + + + + 모델의 ID입니다. 옵션: MiniMax-H3. Router 호출자는 이 필드를 생략하거나 null을 보낼 수 있습니다. Router는 공급자 디스패치 이전에 요청 경로에서 선택된 모델을 주입합니다. + + + + 화면 비율입니다. 옵션: adaptive(기본값), 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. 텍스트 기반 비디오 생성에서는 필수이며 adaptive일 수 없습니다. 첫 프레임 또는 마지막 프레임 생성에서는 무시됩니다(adaptive로 처리됨). + + + + 비디오 해상도입니다. 옵션: 2K, 768P. + + + + [-1, 2^32 - 1] 범위의 무작위 시드입니다. 생략하거나 -1이면 무작위입니다. + + 형식: `int64` + + +Router가 `GET /v2/models/minimax/minimax-h3/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + Minimax V2 비디오 생성 작업입니다. + + + + 생성된 출력입니다. 상태가 succeeded일 때 존재합니다. + + + + 성공한 h3_context_ir 작업에서 생성된 향상된 비디오 프롬프트입니다. + + + + 생성된 MP4의 시간 제한 URL입니다. 갱신된 URL을 얻으려면 다시 조회하세요. + + + + 생성된 비디오의 재생 시간(초)입니다. + + + + 상태가 failed일 때의 오류 세부 정보이며, code와 message를 포함합니다. + + + + 작업 ID입니다. + + + + 작업에 사용된 모델입니다. + + + + 생성된 비디오의 실제 화면 비율입니다. + + + + 생성된 비디오의 해상도입니다. + + + + 작업 상태입니다. 옵션: queued, running, succeeded, failed, cancelled, expired. + + + + 작업의 유형입니다. + + + + 작업에 대해 기록된 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P" +} +``` + +### 출력 + +```json +{ + "task": { + "content": { + "url": "https://example.invalid/minimax/minimax-h3/generated.mp4" + }, + "duration": 6, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "MiniMax-H3", + "ratio": "16:9", + "resolution": "768P", + "status": "succeeded", + "usage": { + "output_seconds": 6, + "total_seconds": 6 + } + } +} +``` + + diff --git a/ko/development/comfy-router/models/moonvalley/image-to-video/code.mdx b/ko/development/comfy-router/models/moonvalley/image-to-video/code.mdx new file mode 100644 index 000000000..4042fec26 --- /dev/null +++ b/ko/development/comfy-router/models/moonvalley/image-to-video/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router로 이미지 기반 비디오 생성 사용하기" +description: "Comfy Router를 통해 moonvalley/image-to-video를 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "이미지 기반 비디오 생성" +translationSourceHash: b305fbdf +translationFrom: development/comfy-router/models/moonvalley/image-to-video/code.mdx +translationBlockHashes: + "_intro": 8fe7b0cf + "Quick start": 84eb9061 + "Schema": 3c90da48 + "Examples": bf5363d7 +--- +{/* GENERATED FILE. router-schemas/moonvalley/image-to-video.json에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Moonvalley가 Comfy Router를 통해 제공하는 `moonvalley/image-to-video`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `moonvalley/image-to-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/moonvalley/image-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/image-to-video", + { + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/image-to-video", { + image_url: "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + prompt_text: "a single red maple leaf falling onto still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/image-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://yavuzceliker.github.io/sample-images/image-1021.jpg\", \"prompt_text\": \"a single red maple leaf falling onto still water\"}" +``` + + +## 스키마 + +### 입력 + + + + + + + + + + + 생성을 제어하기 위한 가이드 크기 조절 + + 형식: `float` + + + + 생성된 비디오의 높이(픽셀 단위) + + + + 네거티브 프롬프트 텍스트 + + + + 생성을 위한 무작위 시드 (기본값: 무작위) + + + + denoising 단계 수 + + + + 네거티브 프롬프트 사용 여부 + + + + 생성된 비디오의 너비(픽셀 단위) + + + + + + + + + + + + + + +Router가 `GET /v2/models/moonvalley/image-to-video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water" +} +``` + +### 출력 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/moonvalley/text-to-image/code.mdx b/ko/development/comfy-router/models/moonvalley/text-to-image/code.mdx new file mode 100644 index 000000000..d9f780fa1 --- /dev/null +++ b/ko/development/comfy-router/models/moonvalley/text-to-image/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 텍스트 기반 이미지 생성 사용하기" +description: "Comfy Router를 통해 moonvalley/text-to-image를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "텍스트 기반 이미지 생성" +translationSourceHash: 55777613 +translationFrom: development/comfy-router/models/moonvalley/text-to-image/code.mdx +translationBlockHashes: + "_intro": 83954c03 + "Quick start": dc376960 + "Schema": 4c0ddc64 + "Examples": c0bc4eb5 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/text-to-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`moonvalley/text-to-image`에 대한 API 레퍼런스입니다. Comfy Router가 Moonvalley에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `moonvalley/text-to-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-image", + { + "prompt_text": "a single red maple leaf resting on still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-image", { + prompt_text: "a single red maple leaf resting on still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf resting on still water\"}" +``` + + +## 스키마 + +### 입력 + + + + + + + + + + + 생성 제어를 위한 가이드 스케일 + + 형식: `float` + + + + 생성되는 비디오의 높이(픽셀 단위) + + + + 네거티브 프롬프트 텍스트 + + + + 생성용 랜덤 시드 (기본값: 랜덤) + + + + 디노이징 단계 수 + + + + 네거티브 프롬프트 사용 여부 + + + + 생성되는 비디오의 너비(픽셀 단위) + + + + + + + + + + +Router가 `GET /v2/models/moonvalley/text-to-image/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "prompt_text": "a single red maple leaf resting on still water" +} +``` + +### 출력 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.png", + "prompt_text": "a single red maple leaf resting on still water", + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/moonvalley/text-to-video/code.mdx b/ko/development/comfy-router/models/moonvalley/text-to-video/code.mdx new file mode 100644 index 000000000..0f93c71f8 --- /dev/null +++ b/ko/development/comfy-router/models/moonvalley/text-to-video/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 텍스트 기반 비디오 생성 사용하기" +description: "Comfy Router를 통해 moonvalley/text-to-video를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "텍스트 기반 비디오 생성" +translationSourceHash: 068da6d0 +translationFrom: development/comfy-router/models/moonvalley/text-to-video/code.mdx +translationBlockHashes: + "_intro": 4d524231 + "Quick start": 535a6274 + "Schema": 5aee2bd6 + "Examples": e66695b1 +--- +{/* GENERATED FILE. `pnpm code-pages:gen`에 의해 router-schemas/moonvalley/text-to-video.json에서 생성된 파일입니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Moonvalley가 제공하는 `moonvalley/text-to-video`의 API 레퍼런스로, Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `moonvalley/text-to-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-video", + { + "prompt_text": "a single red maple leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-video", { + prompt_text: "a single red maple leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf\"}" +``` + + +## 스키마 + +### 입력 + + + + + + + + + + + 생성을 제어하기 위한 가이드 크기 조절 + + 형식: `float` + + + + 생성된 비디오의 높이(픽셀 단위) + + + + 네거티브 프롬프트 텍스트 + + + + 생성을 위한 무작위 시드 (기본값: 무작위) + + + + 디노이징 단계 수 + + + + 네거티브 프롬프트 사용 여부 + + + + 생성된 비디오의 너비(픽셀 단위) + + + + + + + + + + +Router가 `GET /v2/models/moonvalley/text-to-video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증할 때 사용하는 바로 그 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "prompt_text": "a single red maple leaf" +} +``` + +### 출력 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx b/ko/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx new file mode 100644 index 000000000..530eabdd8 --- /dev/null +++ b/ko/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx @@ -0,0 +1,207 @@ +--- +title: "Comfy Router로 Video To Video Resize 사용하기" +description: "Comfy Router를 통해 moonvalley/video-to-video-resize를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Video To Video Resize" +translationSourceHash: dd5bc810 +translationFrom: development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx +translationBlockHashes: + "_intro": 3fbe838b + "Quick start": 84228377 + "Schema": eacf1159 + "Examples": c8034df3 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/video-to-video-resize.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video-resize`에 대한 API 레퍼런스이며, Moonvalley의 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `moonvalley/video-to-video-resize` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video-resize` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video-resize", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video-resize", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video-resize \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오 제어를 위해 지원되는 유형 + + 가능한 값: `motion_control`, `pose_control` + + + + 제어 이미지 URL + + + + + + + + + + + + 모션 제어 강도 + + 형식: `int32` + + + + 생성 제어를 위한 가이드 스케일 + + 형식: `float` + + + + 네거티브 프롬프트 텍스트 + + + + 생성을 위한 랜덤 시드 (기본값: 무작위) + + + + denoise 단계 수 + + + + 네거티브 프롬프트 사용 여부 + + + + 생성할 비디오를 설명합니다 + + + + 제어 비디오 URL + + + + 알림을 위한 선택적 webhook URL + + + + + + + + + + + + + + +Router가 `GET /v2/models/moonvalley/video-to-video-resize/openapi.json`에서 제공하는 스키마에서 생성되며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 출력 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/ko/development/comfy-router/models/moonvalley/video-to-video/code.mdx b/ko/development/comfy-router/models/moonvalley/video-to-video/code.mdx new file mode 100644 index 000000000..27652b17e --- /dev/null +++ b/ko/development/comfy-router/models/moonvalley/video-to-video/code.mdx @@ -0,0 +1,194 @@ +--- +title: "Comfy Router로 Video To Video 사용하기" +description: "Comfy Router를 통해 moonvalley/video-to-video를 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Video To Video" +translationSourceHash: e80ad202 +translationFrom: development/comfy-router/models/moonvalley/video-to-video/code.mdx +translationBlockHashes: + "_intro": 878ec155 + "Quick start": c8c4b6a1 + "Schema": 139afe1d + "Examples": c8034df3 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/video-to-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video`에 대한 API 레퍼런스입니다. Moonvalley의 모델을 Comfy Router가 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `moonvalley/video-to-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## 스키마 {#schema} + +### 입력 + + + 지원되는 비디오 제어 유형 + + 가능한 값: `motion_control`, `pose_control` + + + + 제어 이미지의 URL + + + + + + + + + + + + 모션 제어 강도 + + 형식: `int32` + + + + 생성 제어를 위한 가이드 스케일 + + 형식: `float` + + + + 네거티브 프롬프트 텍스트 + + + + 생성용 랜덤 시드 (기본값: 무작위) + + + + 디노이징 단계 수 + + + + 네거티브 프롬프트 사용 여부 + + + + 생성할 비디오를 설명합니다 + + + + 제어 비디오의 URL + + + + 알림을 위한 선택적 webhook URL + + +Router가 `GET /v2/models/moonvalley/video-to-video/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 예시 + +### 입력 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 출력 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + diff --git a/ko/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx b/ko/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx new file mode 100644 index 000000000..be7174124 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx @@ -0,0 +1,533 @@ +--- +title: "Comfy Router에서 GPT 4.1 Mini 사용하기" +description: "Comfy Router를 통해 openai/gpt-4.1-mini 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 4.1 Mini" +translationSourceHash: 87e60db3 +translationFrom: development/comfy-router/models/openai/gpt-4-1-mini/code.mdx +translationBlockHashes: + "_intro": 22aeae46 + "Quick start": 9da04428 + "Schema": b894ba56 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/openai/gpt-4.1-mini.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-mini`의 API 레퍼런스이며, OpenAI에서 제공하고 Comfy Router가 서빙합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-4.1-mini` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 응답을 생성하는 데 사용되는 모델에 대한 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 표시되는 출력 토큰과 추론 토큰을 포함하여 응답을 위해 생성되는 토큰 수의 상한입니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 reasoning 스모크 케이스가 1024를 보내고 chat 케이스가 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + REASONING TIER 전용. 추론 모델을 위한 구성으로, 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 reasoning 가이드를 참조하세요. chat-tier id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다(INERT). Router는 디스패치 이전에 이를 `false`로 확정합니다. `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. 이는 openAiResponsesProxy의 ModifyResponse가 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 미터링하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. CHAT TIER 전용: o-시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들을 위해 이 매개변수를 거부하지 않습니다(두 tier가 하나의 스키마를 공유하는 이유는 이 컴포넌트의 설명을 참조하세요). 따라서 이를 보내는 reasoning 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지입니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 CHAT TIER 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 오퍼레이션이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 RESPONSE에 채우므로, 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-4.1-mini/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 동일한 문서입니다.### 출력 + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하면 이전 응답의 instructions가 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘라내기(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 + 초과하면, 모델은 대화 중간의 입력 항목을 버려 컨텍스트 창에 맞게 + 응답을 자릅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과하면 + 요청이 400 오류로 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +여러 턴의 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-series 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 +구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목을 모델에 다시 제공할지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-series 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 +추론 노력을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. +추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 +토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용합니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용합니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, +모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성한 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema` 사용이 선호됩니다. + + + + 모델 응답의 상세도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 +방법입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` +파라미터를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 청구 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완료가 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형으로, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 + 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 + 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, + SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 + 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 +담는 SDK 전용 편의 속성입니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다(예: `in_memory` 또는 `24h`). + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다(예: `auto`, `default`, `flex`, `scale`, `priority`). + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할, 각각 관련 로그 확률이 포함된 가장 가능성이 높은 토큰의 최대 수입니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분류, 사용된 총 토큰을 +포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰의 세부 분류입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 검색된 token 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 token 수입니다. + + + + 출력 token에 대한 상세 내역입니다. + + + + 추론 token 수입니다. + + + + 사용된 총 token 수입니다. + + + + 최종 사용자를 위한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx b/ko/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx new file mode 100644 index 000000000..41e2d5c87 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx @@ -0,0 +1,515 @@ +--- +title: "Comfy Router에서 GPT 4.1 Nano 사용하기" +description: "Comfy Router를 통해 openai/gpt-4.1-nano 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 4.1 Nano" +translationSourceHash: 189966b6 +translationFrom: development/comfy-router/models/openai/gpt-4-1-nano/code.mdx +translationBlockHashes: + "_intro": 815c8476 + "Quick start": dc2e7193 + "Schema": c551812f + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `router-schemas/openai/gpt-4.1-nano.json`에서 `pnpm code-pages:gen`으로 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-nano`에 대한 API 레퍼런스이며, OpenAI에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 실행합니다. + +**모델 ID:** `openai/gpt-4.1-nano` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. reasoning id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 reasoning 스모크 케이스는 1024를 보내고 chat 스모크 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 이전 응답의 ID로, 다중 턴 대화에 사용됩니다. + + + + REASONING TIER 전용입니다. reasoning 모델을 위한 설정입니다. 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 reasoning 가이드를 참조하세요. chat tier id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. Router는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하는데, openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. CHAT TIER 전용입니다. o 시리즈 reasoning id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들을 위해 이를 거부하지 않습니다(두 tier가 하나의 스키마를 공유하는 이유는 이 컴포넌트의 설명 참조). 따라서 이를 보내는 reasoning 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 설정입니다. 예를 들어 Structured Outputs의 경우 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 선택하는 방식입니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + 뉴클리어스 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 CHAT TIER 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 자르기 전략입니다. 위의 세 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 오퍼레이션이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 RESPONSE에 이를 채우므로 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-4.1-nano/openapi.json`에서 제공하는 스키마에서 생성되었습니다. 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간편하게 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [reasoning tokens](https://platform.openai.com/docs/guides/reasoning)를 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0`부터 `2`까지 + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0`부터 `1`까지 + + + + 모델 응답에 사용할 잘림(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과하면 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 여러 턴의 대화를 생성합니다. [conversation state](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)을 위한 구성 옵션입니다. + + + + 나중 턴에서 어떤 reasoning 항목이 모델에 다시 렌더링되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[reasoning models](https://platform.openai.com/docs/guides/reasoning)의 reasoning 노력을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. reasoning 노력을 줄이면 응답이 더 빨라지고 응답에서 reasoning에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 reasoning의 요약입니다. 디버깅과 모델의 reasoning 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 reasoning 모드입니다. + + + + 모델이 수행한 reasoning의 요약입니다. 디버깅과 모델의 reasoning 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs)에서 더 알아보세요. + +기본 형식은 추가 옵션 없이 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에는 `json_schema`를 사용하는 것이 권장됩니다. + + + + 모델 응답의 장황함(verbosity)을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 사용할 도구(또는 도구들)를 어떻게 선택해야 하는지를 지정합니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 당사자입니다. + + + + 이 Response가 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 Response가 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 Response 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답의 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부과합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검토된 완성이 요청된 경우, 응답 입력과 출력에 대한 검토 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 그것이 모델이 생성한 + 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 + 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 +포함하는 SDK 전용 편의 속성입니다(존재하는 경우). Python 및 JavaScript +SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부과합니다. + + + + 캐시 적중률을 최적화하기 위해 OpenAI가 유사한 요청에 대한 응답을 캐시하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다(예: `in_memory` 또는 `24h`). + + + + OpenAI의 사용 정책을 위반할 수 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다(예: `auto`, `default`, `flex`, `scale`, `priority`). + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + API를 통해 나중에 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 수이며, 각 토큰에는 연관된 로그 확률이 있습니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분류, 사용된 총 토큰을 +포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰의 세부 분류입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-4-1/code.mdx b/ko/development/comfy-router/models/openai/gpt-4-1/code.mdx new file mode 100644 index 000000000..0bc72b128 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-4-1/code.mdx @@ -0,0 +1,512 @@ +--- +title: "Comfy Router로 GPT 4.1 사용하기" +description: "Comfy Router를 통해 openai/gpt-4.1 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 4.1" +translationSourceHash: 2daeb5c5 +translationFrom: development/comfy-router/models/openai/gpt-4-1/code.mdx +translationBlockHashes: + "_intro": 9b48bb1c + "Quick start": 76b84915 + "Schema": b7d988d4 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/openai/gpt-4.1.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1`에 대한 API 레퍼런스이며, Comfy Router가 OpenAI에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-4.1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. Router가 제공할 수 없는 이 계약의 유일한 필드이며, 아래 `required`의 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한이 숨겨진 추론 토큰과 공유되므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 추론 스모크 케이스가 1024를 보내는 반면 채팅 케이스는 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서는 이 필드가 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 등급 전용입니다. 추론 모델을 위한 구성입니다. 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하십시오. 채팅 등급 id는 이를 무시합니다. + + + + OpenAI가 나중에 검색할 수 있도록 생성된 응답을 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되었지만, 이 표면에서는 아무 효과가 없습니다. Router가 디스패치 전에 이를 `false`로 확정합니다. 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 청구하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하십시오. + + + + 샘플링 temperature입니다. 채팅 등급 전용입니다: o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다. 두 등급이 하나의 스키마를 공유하는 이유에 대한 이 컴포넌트의 설명을 참조하십시오. 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성입니다. 예: Structured Outputs용 `{"format": {"type": "json_schema", ...}}`. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 선택하는 방식입니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 참조를 확인하십시오. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 등급 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델 창을 초과할 때의 잘림 전략입니다. 위의 세 가지 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드와 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 envelope입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답에 채우므로 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-4.1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하는 경우, 이전 응답의 지침은 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용된 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0`부터 `2`까지 + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0`부터 `1`까지 + + + + 모델 응답에 사용할 잘림 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 응답이 컨텍스트 창에 맞도록 잘라냅니다. +- `disabled`(기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류로 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 다중 턴 대화를 생성할 수 있습니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 구성 옵션입니다. + + + + 이후 턴에서 모델에 다시 렌더링되는 추론 항목을 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용된 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)에서 확인하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema`를 사용하는 것이 권장됩니다. + + + + 모델 응답의 장황함을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 사용할 도구(또는 도구들)를 어떻게 선택해야 하는지 지정합니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 청구 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다. +가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 해당 토큰이 기존에 나타난 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성을 요청한 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + SDK 전용 편의 속성으로, `output` 배열의 모든 `output_text` 항목에 있는 텍스트 출력을 집계한 값을 담고 있습니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 해당 토큰이 나타나는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 세분화된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 수이며, 각 토큰에는 연관된 로그 확률이 있습니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 내역, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰의 세부 내역입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱 자세히 보기](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 세부 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-4o/code.mdx b/ko/development/comfy-router/models/openai/gpt-4o/code.mdx new file mode 100644 index 000000000..46471c2c5 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-4o/code.mdx @@ -0,0 +1,545 @@ +--- +title: "Comfy Router와 함께 GPT 4o 사용하기" +description: "Comfy Router를 통해 openai/gpt-4o를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 4o" +translationSourceHash: 76fbf84e +translationFrom: development/comfy-router/models/openai/gpt-4o/code.mdx +translationBlockHashes: + "_intro": d4463f47 + "Quick start": d94685bf + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이(가) router-schemas/openai/gpt-4o.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4o`에 대한 API 레퍼런스로, Comfy Router가 OpenAI로부터 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `openai/gpt-4o` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-4o` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4o", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4o", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4o \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + Additional output data to include in the model response. + + + + Text, image or file inputs to the model, used to generate a response. The one field of this contract Router cannot supply, and the only entry in `required` below. + + + + Inserts a system (or developer) message as the first item in the model's context. + + + + An upper bound for the number of tokens generated for a response, including visible output tokens and reasoning tokens. On a reasoning id this ceiling is shared with the hidden reasoning tokens, so a small value can consume the whole budget before any visible text -- which is why the reasoning smoke cases send 1024 where the chat ones send 16. + + Range: `1` to `…` + + + + OpenAI model identifier. On Comfy Router this field is OPTIONAL and Router fills it from the `{model}` path segment; an explicit `null` is replaced the same way. Sending a value that disagrees with the path is refused. + + + + Whether to allow the model to run tool calls in parallel. + + + + The ID of a previous response, for multi-turn conversations. + + + + REASONING TIER ONLY. Configuration for reasoning models, e.g. `{"effort": "medium"}`. Forwarded unchanged; see OpenAI's reasoning guide for the accepted keys. A chat-tier id ignores it. + + + + Whether OpenAI stores the generated response for later retrieval. + + + + Declared so a caller who sends it is not refused, but INERT on this surface: Router SETTLES it to `false` before dispatch, because it captures the provider response rather than relaying a `text/event-stream` -- which openAiResponsesProxy's ModifyResponse cannot decode, so a streamed generation would be billed by OpenAI and metered by nobody. Use `POST /proxy/openai/v1/responses` if you need the stream. + + + + Sampling temperature. CHAT TIER ONLY: the o-series reasoning ids (`o1`, `o1-pro`, `o3`, `o4-mini`) reject this parameter at OpenAI. Router does not refuse it for them -- see this component's note on why the two tiers share one schema -- so a reasoning call that sends it is answered by OpenAI's own error. + + Range: `0` to `2` + + + + Output-format configuration, e.g. `{"format": {"type": "json_schema", ...}}` for Structured Outputs. Forwarded unchanged. + + + + How the model should select which tool to use. Either a string mode or an object naming a tool. + + + + Tool definitions the model may call. Router does not narrow the tool taxonomy; see OpenAI's Responses API reference for the accepted shapes. + + + + Nucleus-sampling cutoff. CHAT TIER ONLY, on the same terms as `temperature`. + + Range: `0` to `1` + + + + Truncation strategy when the context exceeds the model's window. The enum IS enforced here, unlike the three vocabularies above, because these two values are the complete set OpenAI documents and it has not grown. An explicit `null` is still accepted, on the same terms as the fields above it. + + Possible values: `auto`, `disabled` + + + + Token-usage envelope. Present on this contract because the v1 operation declares it on the request body; OpenAI populates it on the RESPONSE, so a caller has no reason to send it. + + +Generated from the schema Router serves at `GET /v2/models/openai/gpt-4o/openapi.json`, the same document it validates a call against before the request reaches the provider. + +### Output + + + Inserts a system (or developer) message as the first item in the model's context. + +When using along with `previous_response_id`, the instructions from a previous +response will not be carried over to the next response. This makes it simple +to swap out system (or developer) messages in new responses. + + + + An upper bound for the number of tokens that can be generated for a response, including visible output tokens and [reasoning tokens](https://platform.openai.com/docs/guides/reasoning). + + + + The model used to generate the response + + + + Controls randomness in the response + + Range: `0` to `2` + + + + Controls diversity of the response via nucleus sampling + + Range: `0` to `1` + + + + The truncation strategy to use for the model response. +- `auto`: If the context of this response and previous ones exceeds + the model's context window size, the model will truncate the + response to fit the context window by dropping input items in the + middle of the conversation. +- `disabled` (default): If a model response will exceed the context window + size for a model, the request will fail with a 400 error. + + Possible values: `auto`, `disabled` + + + + The unique ID of the previous response to the model. Use this to +create multi-turn conversations. Learn more about +[conversation state](https://platform.openai.com/docs/guides/conversation-state). + + + + **o-series models only** + +Configuration options for +[reasoning models](https://platform.openai.com/docs/guides/reasoning). + + + + Controls which reasoning items are rendered back to the model on later turns, e.g. `auto`, `current_turn`, or `all_turns`. + + + + **o-series models only** + +Constrains effort on reasoning for +[reasoning models](https://platform.openai.com/docs/guides/reasoning). +Currently supported values are `low`, `medium`, and `high`. Reducing +reasoning effort can result in faster responses and fewer tokens used +on reasoning in a response. + + Possible values: `low`, `medium`, `high` + + + + **Deprecated:** use `summary` instead. + +A summary of the reasoning performed by the model. This can be +useful for debugging and understanding the model's reasoning process. +One of `auto`, `concise`, or `detailed`. + + Possible values: `auto`, `concise`, `detailed` + + + + The reasoning mode used for the response. + + + + A summary of the reasoning performed by the model. This can be +useful for debugging and understanding the model's reasoning process. +One of `auto`, `concise`, or `detailed`. + + Possible values: `auto`, `concise`, `detailed` + + + + + + + + An object specifying the format that the model must output. + +Configuring `{ "type": "json_schema" }` enables Structured Outputs, +which ensures the model will match your supplied JSON schema. Learn more in the +[Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs). + +The default format is `{ "type": "text" }` with no additional options. + +**Not recommended for gpt-4o and newer models:** + +Setting to `{ "type": "json_object" }` enables the older JSON mode, which +ensures the message the model generates is valid JSON. Using `json_schema` +is preferred for models that support it. + + + + Constrains the verbosity of the model's response. One of `low`, `medium`, or `high`. + + + + How the model should select which tool (or tools) to use when generating +a response. See the `tools` parameter to see how to specify which tools +the model can call. + + + + + + + + Whether the model response runs in the background. + + + + Billing information for the response. + + + + The party responsible for paying for the response. + + + + Unix timestamp (in seconds) of when this Response was completed. Only present when the status is `completed`. + + + + Unix timestamp (in seconds) of when this Response was created. + + + + An error object returned when the model fails to generate a Response. + + + + The error code for the response. + + Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + A human-readable description of the error. + + + + Penalizes new tokens based on their existing frequency in the text so far. + + + + Unique identifier for this Response. + + + + Details about why the response is incomplete. + + + + The reason why the response is incomplete. + + Possible values: `max_output_tokens`, `content_filter` + + + + The maximum number of total calls to built-in tools that can be processed in a response. + + + + Set of key-value pairs that can be attached to the response. + + + + Moderation results for the response input and output, if moderated completions were requested. + + + + The object type of this resource - always set to `response`. + + Possible values: `response` + + + + An array of content items generated by the model. + +- The length and order of items in the `output` array is dependent + on the model's response. +- Rather than accessing the first item in the `output` array and + assuming it's an `assistant` message with the content generated by + the model, you might consider using the `output_text` property where + supported in SDKs. + + + + SDK-only convenience property that contains the aggregated text output +from all `output_text` items in the `output` array, if any are present. +Supported in the Python and JavaScript SDKs. + + + + Whether to allow the model to run tool calls in parallel. + + + + Penalizes new tokens based on whether they appear in the text so far. + + + + Used by OpenAI to cache responses for similar requests to optimize cache hit rates. Replaces the `user` field. + + + + The retention policy for the prompt cache, e.g. `in_memory` or `24h`. + + + + A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies. + + + + The processing tier used to serve the request, e.g. `auto`, `default`, `flex`, `scale`, or `priority`. + + + + The status of the response generation. One of `completed`, `failed`, `in_progress`, `cancelled`, `queued`, or `incomplete`. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + Whether the response is stored for later retrieval via the API. + + + + Token and request usage broken down by built-in tool. + + + + Image generation tool token usage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web search tool usage. + + + + + + + + The maximum number of most likely tokens to return at each token position, each with an associated log probability. + + + + Represents token usage details including input tokens, output tokens, +a breakdown of output tokens, and the total tokens used. + + + + The number of input tokens. + + + + A detailed breakdown of the input tokens. + + + + The number of input tokens that were written to the cache. + + + + The number of tokens that were retrieved from the cache. +[More on prompt caching](https://platform.openai.com/docs/guides/prompt-caching). + + + + The number of output tokens. + + + + A detailed breakdown of the output tokens. + + + + The number of reasoning tokens. + + + + The total number of tokens used. + + + + Deprecated identifier for the end-user. Replaced by `safety_identifier` and `prompt_cache_key`. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx new file mode 100644 index 000000000..fed87d5d6 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx @@ -0,0 +1,525 @@ +--- +title: "Comfy Router로 GPT 5.5 Pro 사용하기" +description: "Comfy Router를 통해 openai/gpt-5.5-pro를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답입니다." +sidebarTitle: "GPT 5.5 Pro" +translationSourceHash: b3895b99 +translationFrom: development/comfy-router/models/openai/gpt-5-5-pro/code.mdx +translationBlockHashes: + "_intro": fa1f76cc + "Quick start": 5444bbc0 + "Schema": cdf599a5 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/gpt-5.5-pro.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 OpenAI에서 제공하는 `openai/gpt-5.5-pro`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `openai/gpt-5.5-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 응답 생성에 사용되는 모델에 대한 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`의 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 추론 스모크 케이스가 1024를 보내고 채팅 스모크 케이스가 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 채웁니다. 명시적 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 등급 전용입니다. 추론 모델을 위한 구성입니다(예: `{"effort": "medium"}`). 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 등급 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. `text/event-stream`을 중계하는 대신 공급자 응답을 포착하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. 채팅 등급 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들을 위해 이를 거부하지 않습니다. 두 등급이 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성입니다(예: Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`). 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 등급 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘림 전략입니다. 위의 세 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답에 채우므로, 호출자가 보낼 이유가 없습니다. + + +`GET /v2/models/openai/gpt-5.5-pro/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 동일한 문서입니다.### 출력 + + + 시스템(또는 개발자) 메시지를 모델 컨텍스트의 첫 번째 항목으로 삽입합니다. + +`previous_response_id`와 함께 사용할 때, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘라내기 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 제거하여 응답을 컨텍스트 창에 맞게 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청은 400 오류로 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +다중 턴 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 +더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 +구성 옵션입니다. + + + + 나중에 이어지는 턴에서 어떤 추론 항목이 모델에 다시 전달되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력을 +제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 +줄이면 응답이 빨라지고 응답에서 추론에 사용되는 +토큰 수가 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 +이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` +중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 +이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` +중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, +모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 장황함(verbosity)을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 사용할 도구를 어떻게 선택해야 하는지 +지정합니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` +매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답에 대한 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 개수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성이 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 그것이 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 포함하는 SDK 전용 편의 속성입니다(있는 경우). Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 나타나는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하기 위해 OpenAI가 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각각 연관된 로그 확률을 가집니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰의 세부 분석입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 가져온 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-5/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-5/code.mdx new file mode 100644 index 000000000..c72c458f7 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-5/code.mdx @@ -0,0 +1,512 @@ +--- +title: "GPT 5.5를 Comfy Router와 함께 사용하기" +description: "Comfy Router를 통해 openai/gpt-5.5를 호출하는 방법: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 5.5" +translationSourceHash: 1fb68933 +translationFrom: development/comfy-router/models/openai/gpt-5-5/code.mdx +translationBlockHashes: + "_intro": c27b2d4d + "Quick start": 64f51e79 + "Schema": 981b58df + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 제공하고 Comfy Router가 서비스하는 `openai/gpt-5.5`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 raw HTTP로 전송합니다. + +**모델 ID:** `openai/gpt-5.5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 추론 스모크 케이스는 1024를 보내고 채팅 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 여러 턴의 대화를 위한 이전 응답의 ID입니다. + + + + 추론 등급 전용입니다. 추론 모델을 위한 구성으로, 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하십시오. 채팅 등급 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 값을 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 사용량을 집계하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하십시오. + + + + 샘플링 온도입니다. 채팅 등급 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들을 위해 이를 거부하지 않습니다(두 등급이 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하십시오). 따라서 이를 보내는 추론 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 문자열 모드 또는 도구를 명명하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하십시오. + + + + 뉴클리어스 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 등급 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 절단 전략입니다. 위의 세 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 그 집합이 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하므로 이 계약에 존재합니다. OpenAI는 응답에서 이를 채우므로 호출자가 이를 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5.5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 시스템(또는 개발자) 메시지를 모델 컨텍스트의 첫 번째 항목으로 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + 누클리어스 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 truncation 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델이 대화 중간의 input 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 자릅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 멀티턴 대화를 생성할 수 있습니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델에 다시 전달되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력 수준을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 낮추면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰 수가 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema`를 사용하는 것이 더 좋습니다. + + + + 모델 응답의 상세도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불하는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 사람이 읽을 수 있는 오류 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성이 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 타입이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + SDK 전용 편의 속성으로, `output` 배열에 있는 모든 `output_text` 항목의 집계된 텍스트 출력을 포함합니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하기 위해 OpenAI에서 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 수이며, 각 토큰에는 관련 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 내역, 사용된 총 토큰을 포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 세부 내역입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 세부 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx new file mode 100644 index 000000000..fb8da5479 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx @@ -0,0 +1,537 @@ +--- +title: "Comfy Router로 GPT 5.6 Luna 사용하기" +description: "Comfy Router를 통해 openai/gpt-5.6-luna를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "GPT 5.6 Luna" +translationSourceHash: f0b3c793 +translationFrom: development/comfy-router/models/openai/gpt-5-6-luna/code.mdx +translationBlockHashes: + "_intro": f0ae7ed0 + "Quick start": c4c0a28f + "Schema": a166f717 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.6-luna.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-luna`의 API 레퍼런스입니다. Comfy Router가 OpenAI에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5.6-luna` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-luna` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-luna", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-luna", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-luna \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 응답을 생성하는 데 사용되는, 모델에 전달되는 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한이며, 표시되는 출력 토큰과 추론 토큰을 포함합니다. reasoning id에서는 이 상한이 숨김 추론 토큰과 공유되므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 reasoning 스모크 케이스는 1024를 보내고 chat 케이스는 16을 보내는 이유입니다. + + 범위: `1`부터 `…`까지 + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항(OPTIONAL)이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + REASONING 티어 전용입니다. reasoning 모델을 위한 구성이며, 예를 들어 `{"effort": "medium"}`와 같습니다. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 reasoning 가이드를 참조하십시오. chat 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다(INERT). Router는 디스패치 이전에 이를 `false`로 확정합니다. 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하지만 아무도 사용량을 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하십시오. + + + + 샘플링 temperature입니다. CHAT 티어 전용입니다. o 시리즈 reasoning id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이 매개변수를 거부하지 않습니다(두 티어가 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하십시오). 따라서 이를 보내는 reasoning 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0`부터 `2`까지 + + + + 출력 형식 구성이며, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`와 같습니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 선택하는 방법입니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하십시오. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 CHAT 티어 전용입니다. + + 범위: `0`부터 `1`까지 + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기(truncation) 전략입니다. 위의 세 어휘와 달리 여기서는 열거형이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 그동안 늘어나지 않았기 때문입니다. 명시적 `null`도 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 오퍼레이션이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답(RESPONSE)에 채우므로, 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5.6-luna/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 시스템(또는 developer) 메시지를 모델 컨텍스트의 첫 번째 항목으로 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 +응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 developer) +메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 token 수의 상한으로, 표시되는 출력 token과 [reasoning token](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 truncation 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 + 모델의 컨텍스트 창 크기를 초과하면, 모델은 + 대화 중간의 입력 항목을 삭제하여 응답을 컨텍스트 창에 + 맞게 자릅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 + 크기를 초과하면 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +여러 턴의 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-series 모델 전용** + +[reasoning 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 +구성 옵션입니다. + + + + 이후 턴에서 어떤 reasoning 항목을 모델에 다시 렌더링할지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-series 모델 전용** + +[reasoning 모델](https://platform.openai.com/docs/guides/reasoning)의 +reasoning 노력 수준을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. reasoning 노력을 +줄이면 응답이 더 빨라지고 응답에서 reasoning에 사용되는 +token이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 reasoning의 요약입니다. 이는 +모델의 reasoning 과정을 디버깅하고 이해하는 데 +유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 reasoning 모드입니다. + + + + 모델이 수행한 reasoning의 요약입니다. 이는 +모델의 reasoning 과정을 디버깅하고 이해하는 데 +유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 +모델이 제공된 JSON schema와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 `{ "type": "text" }`이며 추가 옵션이 없습니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어 +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema` 사용이 선호됩니다. + + + + 모델 응답의 verbosity를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 +방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` +파라미터를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 billing 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시각의 Unix timestamp(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시각의 Unix timestamp(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 최대 총 호출 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 모더레이션된 완성을 요청한 경우, 응답 입력과 출력에 대한 모더레이션 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 + 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 + 콘텐츠가 담긴 `assistant` 메시지라고 가정하기보다는, SDK에서 + 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + SDK 전용 편의 속성으로, `output` 배열에 있는 모든 `output_text` +항목의 집계된 텍스트 출력을 포함합니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 나타나는지 여부에 따라 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 도움이 되도록 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 계층입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답이 저장되는지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 관련 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 내역, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 세부 내역입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰의 세부 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx new file mode 100644 index 000000000..2f711c456 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx @@ -0,0 +1,534 @@ +--- +title: "Comfy Router와 함께 GPT 5.6 Sol 사용하기" +description: "Comfy Router를 통해 openai/gpt-5.6-sol을 호출하는 방법: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "GPT 5.6 Sol" +translationSourceHash: cdc29939 +translationFrom: development/comfy-router/models/openai/gpt-5-6-sol/code.mdx +translationBlockHashes: + "_intro": 35433a02 + "Quick start": 185aa94b + "Schema": bc45a323 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.6-sol.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 제공하는 Comfy Router에서 서비스하는 `openai/gpt-5.6-sol`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5.6-sol` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-sol` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-sol", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-sol", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-sol \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되는 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 대신 채울 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 추론 스모크 케이스는 1024를 보내고 채팅 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며, Router가 `{model}` 경로 세그먼트에서 이를 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 이전 응답의 ID로, 다중 턴 대화에 사용됩니다. + + + + 추론 등급 전용입니다. 추론 모델을 위한 구성으로, 예를 들어 `{"effort": "medium"}`입니다. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 reasoning 가이드를 참조하세요. 채팅 등급 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정하는데, 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. 채팅 등급 전용입니다. o-시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다(두 등급이 하나의 스키마를 공유하는 이유는 이 컴포넌트의 설명을 참조하세요). 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 선택하는 방식입니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 등급 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위의 필드들과 같은 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답에 채우므로, 호출자가 보낼 이유가 없습니다. + + +`GET /v2/models/openai/gpt-5.6-sol/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하는 경우, 이전 응답의 instructions는 +다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) +메시지를 간단히 교체할 수 있습니다. + + + + 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함하여, +응답에 대해 생성될 수 있는 토큰 수의 상한입니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 truncation 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 + 초과하면, 모델이 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 + 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 + 경우, 요청이 400 오류와 함께 실패합니다. + + 사용 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +멀티턴 대화를 생성합니다. +[대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 +구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델로 다시 전달되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 +추론 노력(effort) 수준을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 +줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 +있습니다. + + 사용 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 사용 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 사용 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, +모델이 제공된 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 상세 정도(verbosity)를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 +방법입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 파라미터를 +참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불하는 책임 주체입니다. + + + + 이 Response가 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 Response가 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 Response 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 사람이 읽을 수 있는 오류 설명입니다. + + + + 지금까지의 텍스트에서 해당 토큰이 나타난 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 개수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 모더레이션된 완성을 요청한 경우, 응답 입력과 출력에 대한 모더레이션 결과입니다. + + + + 이 리소스의 객체 유형으로, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 포함한 `assistant` 메시지라고 가정하기보다는, SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에서 집계된 텍스트 출력을 담고 있는 SDK 전용 편의 속성입니다(항목이 있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 해당 토큰이 나타났는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다(예: `in_memory` 또는 `24h`). + + + + OpenAI의 사용 정책을 위반할 수 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다(예: `auto`, `default`, `flex`, `scale`, `priority`). + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 있습니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분류, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰의 세부 분류입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 검색된 토큰 수입니다. + [프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx new file mode 100644 index 000000000..74f29820c --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx @@ -0,0 +1,516 @@ +--- +title: "Comfy Router에서 GPT 5.6 Terra 사용하기" +description: "Comfy Router를 통해 openai/gpt-5.6-terra를 호출하세요: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "GPT 5.6 Terra" +translationSourceHash: a0f570b8 +translationFrom: development/comfy-router/models/openai/gpt-5-6-terra/code.mdx +translationBlockHashes: + "_intro": 494f4da2 + "Quick start": 89d7b6b4 + "Schema": 9d2248f1 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/gpt-5.6-terra.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-terra`에 대한 API 레퍼런스이며, Comfy Router가 OpenAI로부터 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5.6-terra` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-terra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-terra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-terra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-terra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되어 응답을 생성하는 데 사용되는 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 시스템(또는 개발자) 메시지를 모델 컨텍스트의 첫 번째 항목으로 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 값이 작으면 표시되는 텍스트가 나오기 전에 전체 예산이 소진될 수 있습니다. 그래서 추론 스모크 케이스는 1024를 보내고 채팅 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 설정으로, 예를 들어 `{"effort": "medium"}`입니다. 변경 없이 전달되며, 허용되는 키는 OpenAI의 추론 가이드를 참조하십시오. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 조회할 수 있도록 저장할지 여부입니다. + + + + 이를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 무효입니다. Router는 디스패치 전에 이를 `false`로 확정하는데, `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 사용량을 집계하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하십시오. + + + + 샘플링 온도입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않으며(두 티어가 하나의 스키마를 공유하는 이유는 이 컴포넌트의 설명을 참조), 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 설정으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 선택하는 방식입니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하십시오. + + + + 누클리어스 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 어휘와 달리 여기서는 열거형이 강제되는데, 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. 이 계약에 존재하는 이유는 v1 작업이 요청 본문에 이를 선언하기 때문입니다. OpenAI는 이를 응답에서 채우므로, 호출자가 이를 보낼 이유는 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5.6-terra/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이 문서는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하는 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간편하게 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한이며, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘림(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 다중 턴 대화를 생성합니다. [conversation state](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 구성 옵션입니다. + + + + 이후 턴에서 어떤 reasoning 항목이 모델에 다시 렌더링될지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력 수준을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력 수준을 낮추면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 reasoning 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 반드시 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 설정하면 Structured Outputs가 활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에는 `json_schema` +사용이 권장됩니다. + + + + 모델 응답의 장황함 정도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 Response가 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 Response가 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 Response 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답의 오류 코드입니다.가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 응답의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 모더레이션이 적용된 완성을 요청한 경우, 응답 입력과 출력에 대한 모더레이션 결과입니다. + + + + 이 리소스의 객체 타입이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 그것이 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 담는 SDK 전용 편의 속성입니다(존재하는 경우). Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류한 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Google / 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 내역, 사용된 총 토큰 수를 포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰의 수입니다. + + + + 입력 토큰에 대한 상세 내역입니다. + + + + 캐시에 기록된 입력 토큰의 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰의 상세 내역입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-mini/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-mini/code.mdx new file mode 100644 index 000000000..597302882 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-mini/code.mdx @@ -0,0 +1,523 @@ +--- +title: "Comfy Router에서 GPT 5 Mini 사용하기" +description: "Comfy Router를 통해 openai/gpt-5-mini 호출하기: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "GPT 5 Mini" +translationSourceHash: 0b6b3734 +translationFrom: development/comfy-router/models/openai/gpt-5-mini/code.mdx +translationBlockHashes: + "_intro": 02cc5ae0 + "Quick start": 2fdb62ed + "Schema": ce5d9df5 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/gpt-5-mini.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 제공하고 Comfy Router가 서비스하는 `openai/gpt-5-mini`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5-mini` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되는 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`의 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 가시적 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 가시적 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 추론 스모크 케이스가 1024를 보내고 채팅 케이스가 16을 보내는 이유입니다. + + 범위: `1`부터 `…`까지 + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항(OPTIONAL)이며 Router가 `{model}` 경로 세그먼트에서 이를 채웁니다. 명시적 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성입니다. 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. 이 엔드포인트는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다. 두 티어가 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0`부터 `2`까지 + + + + 출력 형식 구성입니다. 예를 들어 Structured Outputs의 경우 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0`부터 `1`까지 + + + + 컨텍스트가 모델의 창을 초과할 때의 잘림(truncation) 전략입니다. 위의 세 값 목록과 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 그 이후 늘어나지 않았기 때문입니다. 명시적 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투(envelope)입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 RESPONSE에 이를 채우므로, 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5-mini/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하면 이전 응답의 instructions가 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함하여 응답에 대해 생성할 수 있는 토큰 수의 상한입니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘라내기 전략입니다. +- `auto`: 이 응답과 이전 응답들의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled`(기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 다중 턴 대화를 생성합니다. +[대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델에 다시 제공되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 +응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 +디버깅하고 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 +디버깅하고 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 +모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어 +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema`를 사용하는 것이 좋습니다. + + + + 모델 응답의 상세도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 사용할 도구(또는 도구들)를 어떻게 선택해야 하는지 +지정합니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 +참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답의 오류 코드입니다. Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 token에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + moderations가 요청된 경우 응답 입력 및 출력에 대한 moderation 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 가진 `assistant` 메시지라고 가정하기보다는, SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 포함하는 SDK 전용 편의 속성입니다(있는 경우). Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 token에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용합니다. `user` 필드를 대체합니다. + + + + prompt cache의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 수 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale` 또는 `priority`. + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 token 및 요청 사용량입니다. + + + + 이미지 생성 도구의 token 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 token 위치에서 반환할 가장 가능성이 높은 token의 최대 개수이며, 각각 관련 log probability가 함께 제공됩니다. + + + + 입력 token, 출력 token, 출력 token의 세부 내역, 사용된 총 token을 포함한 token 사용 세부 정보를 나타냅니다. + + + + 입력 token 수입니다. + + + + 입력 token의 세부 내역입니다. + + + + 캐시에 기록된 입력 token 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 세부 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예제 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5-nano/code.mdx b/ko/development/comfy-router/models/openai/gpt-5-nano/code.mdx new file mode 100644 index 000000000..c58a1315e --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5-nano/code.mdx @@ -0,0 +1,512 @@ +--- +title: "Comfy Router로 GPT 5 Nano 사용하기" +description: "Comfy Router를 통해 openai/gpt-5-nano를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 5 Nano" +translationSourceHash: dc593fc1 +translationFrom: development/comfy-router/models/openai/gpt-5-nano/code.mdx +translationBlockHashes: + "_intro": 406e2f65 + "Quick start": 4bffdfed + "Schema": d4c8c31e + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/openai/gpt-5-nano.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5-nano`에 대한 API 레퍼런스로, OpenAI에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5-nano` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되는 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 대신 채워줄 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 reasoning 토큰을 포함합니다. reasoning id에서는 이 상한을 숨김 reasoning 토큰과 공유하므로, 값이 작으면 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 reasoning 스모크 케이스는 1024를 보내고 chat 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + REASONING TIER 전용입니다. reasoning 모델을 위한 구성입니다. 예: `{"effort": "medium"}`. 변경 없이 전달되며, 허용되는 키는 OpenAI의 reasoning 가이드를 참조하세요. chat 등급의 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 조회할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이 값을 `false`로 확정합니다. Router가 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI에 의해 과금되지만 아무도 측정하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. CHAT TIER 전용입니다. o-시리즈 reasoning id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들을 위해 이 매개변수를 거부하지 않습니다. 두 등급이 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 reasoning 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성입니다. 예를 들어 Structured Outputs용 `{"format": {"type": "json_schema", ...}}`가 있습니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. CHAT TIER 전용이며, `temperature`와 동일한 조건입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위의 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 오퍼레이션이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답(RESPONSE)에 채우므로 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5-nano/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하는 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간편하게 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용된 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0`부터 `2`까지 + + + + nucleus sampling을 통해 응답의 다양성을 제어합니다 + + 범위: `0`부터 `1`까지 + + + + 모델 응답에 사용할 truncation 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 응답이 컨텍스트 창에 맞도록 자릅니다. +- `disabled`(기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 여러 턴으로 이루어진 대화를 생성할 수 있습니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 구성 옵션입니다. + + + + 나중 턴에서 모델에 다시 렌더링되는 추론 항목을 제어합니다. 예: `auto`, `current_turn`, `all_turns` + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력(effort)을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 상세 정도(verbosity)를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 Response가 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 Response가 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 Response 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답의 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 최대 총 호출 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 조정된 완성이 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, + SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 담는 SDK 전용 편의 속성입니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다(예: `in_memory` 또는 `24h`). + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다(예: `auto`, `default`, `flex`, `scale`, `priority`). + + + + 응답 생성의 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + API를 통해 나중에 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 관련 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰에 대한 자세한 분석입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예제 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-5/code.mdx b/ko/development/comfy-router/models/openai/gpt-5/code.mdx new file mode 100644 index 000000000..cd7e8c2c4 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-5/code.mdx @@ -0,0 +1,518 @@ +--- +title: "Comfy Router에서 GPT 5 사용하기" +description: "Comfy Router를 통해 openai/gpt-5 호출하기: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "GPT 5" +translationSourceHash: 0ddfae5f +translationFrom: development/comfy-router/models/openai/gpt-5/code.mdx +translationBlockHashes: + "_intro": 3fb29b32 + "Quick start": 737bc1e9 + "Schema": 7298ec4e + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5`의 API 레퍼런스이며, OpenAI에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되는 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. Router가 제공할 수 없는 이 계약의 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 값이 작으면 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 추론 스모크 케이스가 1024를 보내고 채팅 케이스가 16을 보내는 이유가 바로 여기에 있습니다. + + 범위: `1`부터 `…`까지 + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항(OPTIONAL)이며, Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성으로, 예를 들어 `{"effort": "medium"}`입니다. 변경 없이 전달됩니다. 허용되는 키에 대해서는 OpenAI의 추론 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다(INERT). Router는 디스패치 이전에 이 값을 `false`로 확정합니다(SETTLES). Router는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않는 결과가 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이 매개변수를 거부하지 않습니다. 두 티어가 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0`부터 `2`까지 + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지 지정합니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0`부터 `1`까지 + + + + 컨텍스트가 모델의 창을 초과할 때 사용할 잘림(truncation) 전략입니다. 위의 세 가지 어휘 목록과 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 그 뒤로 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투(envelope)입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 RESPONSE에 이를 채우므로, 호출자가 이를 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간편하게 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용된 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘림(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답들의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 제거하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류로 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 다중 턴 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델에 다시 전달되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력(effort) 수준을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema` 사용이 선호됩니다. + + + + 모델 응답의 장황함(verbosity) 수준을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 청구 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시각의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시각의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다. + +가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 사람이 읽을 수 있는 오류 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 토큰에 페널티를 부과합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구 총 호출의 최대 개수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성을 요청한 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 타입이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 + 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 + 콘텐츠가 담긴 `assistant` 메시지라고 가정하기보다는, + SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 + 고려하세요. + + + + SDK 전용 편의 속성으로, `output` 배열에 있는 모든 `output_text` 항목의 +집계된 텍스트 출력을 포함합니다(있는 경우). Python 및 JavaScript SDK에서 +지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부과합니다. + + + + 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하기 위해 OpenAI에서 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 수 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 응답이 나중에 API를 통해 검색할 수 있도록 저장되는지 여부입니다. + + + + 내장 도구별로 분류한 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 +토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 상세 분석입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 가져온 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/gpt-6-astra/code.mdx b/ko/development/comfy-router/models/openai/gpt-6-astra/code.mdx new file mode 100644 index 000000000..ff0006cd0 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-6-astra/code.mdx @@ -0,0 +1,526 @@ +--- +title: "Comfy Router와 함께 GPT 6 Astra 사용하기" +description: "Comfy Router를 통해 openai/gpt-6-astra를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "GPT 6 Astra" +translationSourceHash: 2ffdfbf2 +translationFrom: development/comfy-router/models/openai/gpt-6-astra/code.mdx +translationBlockHashes: + "_intro": cc898a3e + "Quick start": 1c601637 + "Schema": 5fa7484e + "Examples": 67e6c8f1 +--- +{/* 생성됨 파일. `pnpm code-pages:gen`에 의해 router-schemas/openai/gpt-6-astra.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI에서 Comfy Router가 제공하는 `openai/gpt-6-astra`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-6-astra` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-6-astra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-6-astra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-6-astra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-6-astra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 응답을 생성하는 데 사용되는, 모델에 전달되는 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 표시되는 출력 토큰과 추론 토큰을 포함하여, 응답을 위해 생성되는 토큰 수의 상한입니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 이것이 추론 스모크 케이스가 1024를 보내고 채팅 케이스가 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며, Router가 `{model}` 경로 세그먼트에서 이를 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성으로, 예를 들어 `{"effort": "medium"}`입니다. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문이며, openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없습니다. 그래서 스트리밍 생성은 OpenAI가 청구하고 아무도 미터링하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다. 두 티어가 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs의 경우 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지입니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 참조를 보세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 그 이후 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에서 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답에 채우므로, 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/gpt-6-astra/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하는 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성될 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘라내기 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델이 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +다중 턴 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 +구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델에 다시 렌더링되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 +노력(effort)을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. +추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 +토큰이 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` +중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정을 +이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` +중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, +모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 장황함(verbosity)을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 +방법입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` +매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 Response가 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`인 경우에만 존재합니다. + + + + 이 Response가 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 Response 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부과합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 응답에서 처리할 수 있는 내장 도구에 대한 최대 총 호출 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 모데레이션이 적용된 완성을 요청한 경우, 응답 입력과 출력에 대한 모데레이션 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려하세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 집계된 텍스트 출력을 담고 있는 SDK 전용 편의 속성입니다(항목이 있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부과합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예를 들어 `in_memory` 또는 `24h`입니다. + + + + OpenAI의 사용 정책을 위반할 수 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 계층입니다. 예를 들어 `auto`, `default`, `flex`, `scale`, `priority`입니다. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류한 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 있습니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 세부 분석입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-image-1-5/code.mdx b/ko/development/comfy-router/models/openai/gpt-image-1-5/code.mdx new file mode 100644 index 000000000..8a01f61e4 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-image-1-5/code.mdx @@ -0,0 +1,248 @@ +--- +title: "Comfy Router로 GPT Image 1.5 사용하기" +description: "Comfy Router를 통해 openai/gpt-image-1.5를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "GPT Image 1.5" +translationSourceHash: aa2b43fe +translationFrom: development/comfy-router/models/openai/gpt-image-1-5/code.mdx +translationBlockHashes: + "_intro": 2c69d7b3 + "Quick start": c7d735cc + "Schema": 7f073ccc + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-1.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 제공하고 Comfy Router가 서비스하는 `openai/gpt-image-1.5`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `openai/gpt-image-1.5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1.5", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1.5", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 스키마 + +### 입력 + + + 배경 투명도 + + 가능한 값: `transparent`, `opaque` + + + + 이미지 생성에 사용할 모델 (예: gpt-image-1, gpt-image-1.5, gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst) + + + + 콘텐츠 검열 설정 + + 가능한 값: `low`, `auto` + + + + 생성할 이미지 수 (1-10). + + + + JPEG 또는 WebP의 압축 수준 (0-100) + + + + 출력 이미지의 형식 + + 가능한 값: `png`, `webp`, `jpeg` + + + + 원하는 이미지에 대한 텍스트 설명 + + + + 생성된 이미지의 품질 + + 가능한 값: `low`, `medium`, `high`, `standard`, `hd` + + + + 이미지 데이터의 응답 형식 + + 가능한 값: `url`, `b64_json` + + + + 이미지의 크기 (예: 1024x1024, 1536x1024, auto) + + + + 이미지의 스타일. 이 작업이 허용하는 gpt-image 모델에서는 사용되지 않습니다. dall-e-3 전용 파라미터였으며, OpenAI가 2026-05-12에 해당 ID들을 종료하면서 함께 폐기되었습니다. + + 가능한 값: `vivid`, `natural` + + + + 최종 사용자 모니터링을 위한 고유 식별자 + + +Router가 `GET /v2/models/openai/gpt-image-1.5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 데이터 + + + + 수정된 프롬프트 + + + + 이미지의 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 생성된 이미지의 배경이 불투명인지 투명인지 여부. fal이 제공하는 분기에서만 채워지며, 이 경우 `opaque`를 보고합니다. + + + + 생성이 완료된 시각의 Unix 타임스탬프(초). 오늘날의 epoch 값은 2^31에 충분히 가까워서, 포맷을 지정하지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드를 만들어내기 때문에 `int64`로 선언되었습니다. + + 형식: `int64` + + + + `data[].b64_json`에 담긴 바이트의 인코딩 (예: `png`). fal이 제공하는 분기에서 채워지며, OpenAI가 제공하는 분기에서는 호출자가 요청한 `output_format`이 우선하기 때문에 존재하지 않습니다. + + + + 생성이 실제로 실행된 품질 등급. fal이 제공하는 분기에서 이를 확인할 수 있을 때 채워지고, 그렇지 않으면 존재하지 않습니다. + + + + 생성이 실제로 실행된 픽셀 크기로, `x` 형식입니다. fal이 제공하는 분기에서 이를 확인할 수 있을 때 채워지고, 그렇지 않으면 존재하지 않습니다. + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/gpt-image-1/code.mdx b/ko/development/comfy-router/models/openai/gpt-image-1/code.mdx new file mode 100644 index 000000000..918f1d5b2 --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-image-1/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router에서 GPT Image 1 사용하기" +description: "Comfy Router를 통해 openai/gpt-image-1을 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "GPT Image 1" +translationSourceHash: 0fc531d9 +translationFrom: development/comfy-router/models/openai/gpt-image-1/code.mdx +translationBlockHashes: + "_intro": 4c0df6e6 + "Quick start": 77f219f1 + "Schema": 500e7e87 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 OpenAI로부터 제공하는 `openai/gpt-image-1`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `openai/gpt-image-1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 스키마 + +### 입력 + + + 배경 투명도 + + 가능한 값: `transparent`, `opaque` + + + + 이미지 생성에 사용할 모델 (예: gpt-image-1, gpt-image-1.5, gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst) + + + + 콘텐츠 검열 설정 + + 가능한 값: `low`, `auto` + + + + 생성할 이미지 수 (1-10). + + + + JPEG 또는 WebP의 압축 수준 (0-100) + + + + 출력 이미지의 형식 + + 가능한 값: `png`, `webp`, `jpeg` + + + + 원하는 이미지에 대한 텍스트 설명 + + + + 생성된 이미지의 품질 + + 가능한 값: `low`, `medium`, `high`, `standard`, `hd` + + + + 이미지 데이터의 응답 형식 + + 가능한 값: `url`, `b64_json` + + + + 이미지의 크기 (예: 1024x1024, 1536x1024, auto) + + + + 이미지의 스타일. 이 작업이 허용하는 gpt-image 모델에서는 사용되지 않습니다. dall-e-3 전용 파라미터였으며, OpenAI가 2026-05-12에 해당 ID들을 종료하면서 함께 폐기되었습니다. + + 가능한 값: `vivid`, `natural` + + + + 최종 사용자 모니터링을 위한 고유 식별자 + + +Router가 `GET /v2/models/openai/gpt-image-1/openapi.json`에서 제공하는 스키마, 즉 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서에서 생성되었습니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 데이터 + + + + 수정된 프롬프트 + + + + 이미지의 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 생성된 이미지의 배경이 불투명인지 투명인지 여부. fal로 제공되는 분기에서만 채워지며, 이 분기는 `opaque`를 보고합니다. + + + + 생성이 완료된 시점의 Unix 타임스탬프(초)입니다. 현재 시점의 epoch 값이 2^31에 충분히 가까워 서식을 지정하지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드를 만들기 때문에 `int64`로 선언되었습니다. + + 형식: `int64` + + + + `data[].b64_json`에 있는 바이트의 인코딩입니다 (예: `png`). fal로 제공되는 분기에서 채워집니다. OpenAI로 제공되는 분기에서는 없으며, 이 경우 호출자가 요청한 `output_format`이 기준이 됩니다. + + + + 생성이 실제로 실행된 품질 등급입니다. fal로 제공되는 분기에서 등급을 확인할 수 있을 때 채워지며, 그렇지 않으면 없습니다. + + + + 생성이 실제로 실행된 픽셀 크기로, `x` 형식입니다. fal로 제공되는 분기에서 크기를 확인할 수 있을 때 채워지며, 그렇지 않으면 없습니다. + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx b/ko/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx new file mode 100644 index 000000000..7b54eb3fa --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router에서 GPT Image 2.5 Flare 사용하기" +description: "Comfy Router를 통해 openai/gpt-image-2.5-flare를 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "GPT Image 2.5 Flare" +translationSourceHash: a3bd711d +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx +translationBlockHashes: + "_intro": c2dfdd54 + "Quick start": 36a7ad58 + "Schema": eb1113b3 + "Examples": 7b3879cc +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/gpt-image-2.5-flare.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2.5-flare`에 대한 API 레퍼런스이며, OpenAI가 Comfy Router를 통해 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**Model ID:** `openai/gpt-image-2.5-flare` + +**Endpoint:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-flare", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-flare", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 스키마 + +### 입력 + + + 배경 투명도 + + 가능한 값: `transparent`, `opaque` + + + + 이미지 생성에 사용할 모델 (예: gpt-image-1, gpt-image-1.5, gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst) + + + + 콘텐츠 검열 설정 + + 가능한 값: `low`, `auto` + + + + 생성할 이미지 수 (1-10). + + + + JPEG 또는 WebP의 압축 수준 (0-100) + + + + 출력 이미지의 형식 + + 가능한 값: `png`, `webp`, `jpeg` + + + + 원하는 이미지에 대한 텍스트 설명 + + + + 생성된 이미지의 품질 + + 가능한 값: `low`, `medium`, `high`, `standard`, `hd` + + + + 이미지 데이터의 응답 형식 + + 가능한 값: `url`, `b64_json` + + + + 이미지 크기 (예: 1024x1024, 1536x1024, auto) + + + + 이미지의 스타일. 이 작업이 허용하는 gpt-image 모델에서는 사용되지 않습니다. dall-e-3 전용 파라미터였으며, OpenAI가 2026-05-12에 해당 id들을 종료하면서 폐기되었습니다. + + 가능한 값: `vivid`, `natural` + + + + 최종 사용자 모니터링을 위한 고유 식별자 + + +Router가 `GET /v2/models/openai/gpt-image-2.5-flare/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 데이터 + + + + 수정된 프롬프트 + + + + 이미지의 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 생성된 이미지의 배경이 불투명인지 투명인지 여부. fal이 제공하는 분기에서만 채워지며, 해당 분기는 `opaque`를 보고합니다. + + + + 생성이 완료된 시점의 Unix 타임스탬프(초). 현재의 epoch 값이 2^31에 충분히 가까워 서식을 지정하지 않은 `integer`가 많은 SDK 생성기에서 32비트 필드를 만들기 때문에 `int64`로 선언되었습니다. + + 형식: `int64` + + + + `data[].b64_json`에 있는 바이트의 인코딩 (예: `png`). fal이 제공하는 분기에서 채워지며, 호출자가 요청한 `output_format`이 우선하는 OpenAI 제공 분기에서는 존재하지 않습니다. + + + + 생성이 실제로 실행된 품질 등급. fal이 제공하는 분기에서 이를 확인할 수 있을 때 채워지며, 그렇지 않으면 존재하지 않습니다. + + + + 생성이 실제로 실행된 픽셀 크기로, `x` 형식입니다. fal이 제공하는 분기에서 이를 확인할 수 있을 때 채워지며, 그렇지 않으면 존재하지 않습니다. + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx b/ko/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx new file mode 100644 index 000000000..ebb4775cd --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router로 GPT Image 2.5 Sunburst 사용하기" +description: "Comfy Router를 통해 openai/gpt-image-2.5-sunburst를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "GPT Image 2.5 Sunburst" +translationSourceHash: 4dfd7fed +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx +translationBlockHashes: + "_intro": 91f42876 + "Quick start": 5c62befd + "Schema": 88886616 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-2.5-sunburst.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2.5-sunburst`에 대한 API 레퍼런스이며, Comfy Router가 OpenAI에서 제공합니다. + +## Quick start {#quick-start} + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `openai/gpt-image-2.5-sunburst` + +**Endpoint:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-sunburst", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-sunburst", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 스키마 + +### 입력 + + + 배경 투명도 + + 가능한 값: `transparent`, `opaque` + + + + 이미지 생성에 사용할 모델 (예: gpt-image-1, gpt-image-1.5, gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst) + + + + 콘텐츠 검열 설정 + + 가능한 값: `low`, `auto` + + + + 생성할 이미지 수 (1-10). + + + + JPEG 또는 WebP 압축 수준 (0-100) + + + + 출력 이미지의 형식 + + 가능한 값: `png`, `webp`, `jpeg` + + + + 원하는 이미지에 대한 텍스트 설명 + + + + 생성된 이미지의 품질 + + 가능한 값: `low`, `medium`, `high`, `standard`, `hd` + + + + 이미지 데이터의 응답 형식 + + 가능한 값: `url`, `b64_json` + + + + 이미지의 크기 (예: 1024x1024, 1536x1024, auto) + + + + 이미지의 스타일. 이 작업이 허용하는 gpt-image 모델에서는 사용되지 않습니다. 이는 dall-e-3 전용 파라미터였으며, OpenAI가 2026-05-12에 해당 id들을 종료하면서 함께 폐기되었습니다. + + 가능한 값: `vivid`, `natural` + + + + 최종 사용자 모니터링을 위한 고유 식별자 + + +Router가 `GET /v2/models/openai/gpt-image-2.5-sunburst/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 데이터 + + + + 수정된 프롬프트 + + + + 이미지의 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 생성된 이미지의 배경이 불투명인지 투명인지 여부. fal이 서비스하는 분기에서만 채워지며, 이때 `opaque`를 보고합니다. + + + + 생성이 완료된 시각의 Unix 타임스탬프(초). 현재의 epoch 값이 2^31에 충분히 가까워, 포맷을 지정하지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드를 만들어내기 때문에 `int64`로 선언되었습니다. + + 형식: `int64` + + + + `data[].b64_json`에 담긴 바이트의 인코딩 (예: `png`). fal이 서비스하는 분기에서 채워지며, OpenAI가 서비스하는 분기에서는 존재하지 않습니다. 이 경우 호출자가 요청한 `output_format`이 기준이 됩니다. + + + + 생성이 실제로 실행된 품질 등급. fal이 서비스하는 분기에서 이를 확인할 수 있을 때 채워지며, 그렇지 않으면 존재하지 않습니다. + + + + 생성이 실제로 실행된 픽셀 크기로, `x` 형식입니다. fal이 서비스하는 분기에서 이를 확인할 수 있을 때 채워지며, 그렇지 않으면 존재하지 않습니다. + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/gpt-image-2/code.mdx b/ko/development/comfy-router/models/openai/gpt-image-2/code.mdx new file mode 100644 index 000000000..d1a36e42b --- /dev/null +++ b/ko/development/comfy-router/models/openai/gpt-image-2/code.mdx @@ -0,0 +1,249 @@ +--- +title: "Comfy Router에서 GPT Image 2 사용하기" +description: "Comfy Router를 통해 openai/gpt-image-2를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "GPT Image 2" +translationSourceHash: 3f7d4810 +translationFrom: development/comfy-router/models/openai/gpt-image-2/code.mdx +translationBlockHashes: + "_intro": 846b7fa3 + "Quick start": 28ebfa70 + "Schema": ca8ae8e5 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 OpenAI로부터 제공하는 `openai/gpt-image-2`의 API Reference입니다. + +## Quick start {#quick-start} + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `openai/gpt-image-2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 스키마 + +### 입력 + + + 배경 투명도 + + 가능한 값: `transparent`, `opaque` + + + + 이미지 생성에 사용할 모델 (예: gpt-image-1, gpt-image-1.5, gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst) + + + + 콘텐츠 검열 설정 + + 가능한 값: `low`, `auto` + + + + 생성할 이미지 수 (1-10). + + + + JPEG 또는 WebP의 압축 수준 (0-100) + + + + 출력 이미지의 형식 + + 가능한 값: `png`, `webp`, `jpeg` + + + + 원하는 이미지에 대한 텍스트 설명 + + + + 생성된 이미지의 품질 + + 가능한 값: `low`, `medium`, `high`, `standard`, `hd` + + + + 이미지 데이터의 응답 형식 + + 가능한 값: `url`, `b64_json` + + + + 이미지 크기 (예: 1024x1024, 1536x1024, auto) + + + + 이미지의 스타일. 이 작업이 허용하는 gpt-image 모델에서는 사용되지 않습니다. dall-e-3 전용 매개변수였으며, OpenAI가 2026-05-12에 해당 id들을 종료하면서 함께 폐기되었습니다. + + 가능한 값: `vivid`, `natural` + + + + 최종 사용자 모니터링을 위한 고유 식별자 + + +Router가 `GET /v2/models/openai/gpt-image-2/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Base64로 인코딩된 이미지 데이터 + + + + 수정된 프롬프트 + + + + 이미지의 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 생성된 이미지의 배경이 불투명인지 투명인지 여부. fal 제공 분기에서만 채워지며, 여기서는 `opaque`를 보고합니다. + + + + 생성이 완료된 시각의 Unix 타임스탬프(초). 현재의 epoch 값은 2^31에 충분히 가까워서, 서식을 지정하지 않은 `integer`는 많은 SDK 생성기에서 32비트 필드를 만들어내므로 `int64`로 선언되었습니다. + + 형식: `int64` + + + + `data[].b64_json`에 담긴 바이트의 인코딩 (예: `png`). fal 제공 분기에서 채워지며, OpenAI 제공 분기에서는 존재하지 않습니다. 이 경우 호출자가 요청한 `output_format`이 기준이 됩니다. + + + + 생성이 실제로 실행된 품질 등급. fal 제공 분기에서 이를 확인할 수 있을 때 채워지고, 그렇지 않으면 존재하지 않습니다. + + + + 생성이 실제로 실행된 픽셀 크기로, `x` 형식입니다. fal 제공 분기에서 이를 확인할 수 있을 때 채워지고, 그렇지 않으면 존재하지 않습니다. + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/o1-pro/code.mdx b/ko/development/comfy-router/models/openai/o1-pro/code.mdx new file mode 100644 index 000000000..5fc344503 --- /dev/null +++ b/ko/development/comfy-router/models/openai/o1-pro/code.mdx @@ -0,0 +1,514 @@ +--- +title: "Comfy Router에서 o1-pro 사용하기" +description: "Comfy Router를 통해 openai/o1-pro를 호출하는 방법: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "o1-pro" +translationSourceHash: e2e4d3ac +translationFrom: development/comfy-router/models/openai/o1-pro/code.mdx +translationBlockHashes: + "_intro": 2e79c0c5 + "Quick start": d5afb203 + "Schema": 5f93e7dc + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o1-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 Comfy Router를 통해 제공하는 `openai/o1-pro`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `openai/o1-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/o1-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`의 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한이 숨김 추론 토큰과 공유되므로, 작은 값은 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 추론 스모크 케이스는 1024를 보내고 채팅 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성입니다. 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 reasoning 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 전달 이전에 이를 `false`로 확정합니다. 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 과금하고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다(두 티어가 하나의 스키마를 공유하는 이유는 이 구성 요소의 설명을 참조하세요). 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성입니다. 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`가 있습니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택할지 지정합니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 참조를 확인하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 값 집합과 달리 여기서는 enum이 강제됩니다. 이 두 값이 OpenAI가 문서화한 전체 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답(RESPONSE)에 채우므로, 호출자가 보낼 이유가 없습니다. + + +`GET /v2/models/openai/o1-pro/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용하면 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘림 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 삭제하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled`(기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과하면 요청이 400 오류로 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용해 여러 턴으로 이루어진 대화를 생성할 수 있습니다. +[대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)에 대한 구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목이 모델로 다시 렌더링되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 빨라지고 응답에서 추론에 사용되는 토큰 수가 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. +`auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 모델이 제공된 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 장황함을 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 사람이 읽을 수 있는 오류 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 완료되지 않은 이유에 대한 세부 정보입니다. + + + + 응답이 완료되지 않은 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구 호출의 최대 총 횟수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완료를 요청한 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + SDK 전용 편의 속성으로, `output` 배열의 모든 `output_text` 항목에서 집계된 텍스트 출력을 포함합니다(있는 경우). Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하기 위해 OpenAI에서 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류한 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각각 연관된 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 세부 분석입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 세부 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/o1/code.mdx b/ko/development/comfy-router/models/openai/o1/code.mdx new file mode 100644 index 000000000..18c752361 --- /dev/null +++ b/ko/development/comfy-router/models/openai/o1/code.mdx @@ -0,0 +1,528 @@ +--- +title: "Comfy Router에서 o1 사용하기" +description: "Comfy Router를 통해 openai/o1을 호출하는 방법: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "o1" +translationSourceHash: c28bee49 +translationFrom: development/comfy-router/models/openai/o1/code.mdx +translationBlockHashes: + "_intro": e4f64988 + "Quick start": 194e7dcc + "Schema": c257f6a0 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/o1.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 OpenAI로부터 제공하는 `openai/o1`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 실행합니다. + +**모델 ID:** `openai/o1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 전달되어 응답 생성에 사용되는 텍스트, 이미지 또는 파일 입력입니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨겨진 추론 토큰과 공유하므로, 값이 작으면 표시되는 텍스트가 나오기 전에 전체 예산이 소진될 수 있습니다. 이것이 추론 스모크 케이스는 1024를 보내고 채팅 케이스는 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 값을 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성으로, 예를 들어 `{"effort": "medium"}`입니다. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 나중에 검색할 수 있도록 생성된 응답을 저장할지 여부입니다. + + + + 이를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정하는데, 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 청구하고 아무도 계량하지 않게 됩니다. 스트림이 필요하다면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 파라미터를 거부합니다. Router는 이들을 위해 이를 거부하지 않습니다. 두 티어가 하나의 스키마를 공유하는 이유는 이 컴포넌트의 설명을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택할지에 대한 설정입니다. 문자열 모드 또는 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + 뉴클리어스 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 어휘와 달리 여기서는 enum이 실제로 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답에 채우므로, 호출자가 보낼 이유는 없습니다. + + +Router가 `GET /v2/models/openai/o1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 +다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) +메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘림(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답들의 컨텍스트가 모델의 컨텍스트 + 창 크기를 초과하면, 모델이 대화 중간의 입력 항목을 버려 + 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 + 초과하면 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 +멀티턴 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 +구성 옵션입니다. + + + + 이후 턴에서 모델에 다시 렌더링되는 추론 항목을 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 +추론 노력(effort)을 제한합니다. +현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 +줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰이 +줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 +이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 디버깅과 모델의 추론 과정 +이해에 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 +활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 +[Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참조하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, +모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 +모델에서는 `json_schema` 사용이 권장됩니다. + + + + 모델 응답의 상세도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 +방법입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` +매개변수를 참조하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시각의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 존재합니다. + + + + 이 응답이 생성된 시각의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패할 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 등장 빈도를 기준으로 새 토큰에 패널티를 부여합니다. + + + + 이 응답(Response)의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성(moderated completions)이 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원하는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열에 있는 모든 `output_text` 항목의 집계된 텍스트 출력을 담는 SDK 전용 편의 속성입니다(해당 항목이 있는 경우). Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 토큰에 패널티를 부여합니다. + + + + 캐시 적중률을 최적화하기 위해 유사한 요청에 대한 응답을 캐시하는 데 OpenAI가 사용합니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다(예: `in_memory` 또는 `24h`). + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다(예: `auto`, `default`, `flex`, `scale` 또는 `priority`). + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류한 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구의 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 웹 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 있습니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 내역, 사용된 총 토큰을 포함한 토큰 사용량 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰의 상세 내역입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/ko/development/comfy-router/models/openai/o3/code.mdx b/ko/development/comfy-router/models/openai/o3/code.mdx new file mode 100644 index 000000000..582e51341 --- /dev/null +++ b/ko/development/comfy-router/models/openai/o3/code.mdx @@ -0,0 +1,511 @@ +--- +title: "Comfy Router와 함께 o3 사용하기" +description: "Comfy Router를 통해 openai/o3 호출하기: endpoint, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "o3" +translationSourceHash: 1ad89234 +translationFrom: development/comfy-router/models/openai/o3/code.mdx +translationBlockHashes: + "_intro": 65fe84c3 + "Quick start": 6577da9c + "Schema": 2f985532 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI가 제공하고 Comfy Router가 서비스하는 `openai/o3`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `openai/o3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/o3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o3", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o3", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. Router가 제공할 수 없는 이 계약의 유일한 필드이며, 아래 `required`에 있는 유일한 항목입니다. + + + + 모델의 컨텍스트 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한을 숨김 추론 토큰과 공유하므로, 값이 작으면 표시되는 텍스트가 나오기 전에 전체 예산을 소진할 수 있습니다. 그래서 추론 스모크 케이스는 1024를 보내고 채팅 스모크 케이스는 16을 보냅니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항이며 Router가 `{model}` 경로 세그먼트에서 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 다중 턴 대화를 위한 이전 응답의 ID입니다. + + + + 추론 티어 전용입니다. 추론 모델을 위한 구성입니다. 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 티어 id는 이를 무시합니다. + + + + OpenAI가 생성된 응답을 나중에 검색할 수 있도록 저장할지 여부입니다. + + + + 이 필드를 보내는 호출자가 거부되지 않도록 선언되어 있지만, 이 표면에서는 아무 효과가 없습니다. Router는 디스패치 이전에 이를 `false`로 확정합니다. Router가 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. 이는 openAiResponsesProxy의 ModifyResponse가 디코딩할 수 없으므로, 스트리밍 생성은 OpenAI가 청구하고 아무도 계량하지 않는 결과가 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 온도입니다. 채팅 티어 전용입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 매개변수를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다(두 티어가 하나의 스키마를 공유하는 이유는 이 컴포넌트의 주석을 참조하세요). 따라서 이를 보내는 추론 호출은 OpenAI 자체 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성입니다. 예를 들어 Structured Outputs용 `{"format": {"type": "json_schema", ...}}`. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택해야 하는지입니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 레퍼런스를 참조하세요. + + + + Nucleus 샘플링 컷오프입니다. `temperature`와 동일한 조건으로 채팅 티어 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘라내기 전략입니다. 위의 세 가지 어휘와 달리 여기서는 열거형이 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 그 이상 늘어나지 않았기 때문입니다. 명시적인 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 이를 응답(RESPONSE)에 채우므로, 호출자가 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/o3/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + 모델의 컨텍스트에서 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새로운 응답에서 시스템(또는 개발자) 메시지를 손쉽게 교체할 수 있습니다. + + + + 응답을 위해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘림(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답들의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델은 대화 중간의 입력 항목을 제거하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청은 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 여러 차례의 대화를 생성할 수 있습니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 구성 옵션입니다. + + + + 이후 차례에 어떤 추론 항목이 모델로 다시 전달되는지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o-시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론 노력(effort)을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰 수가 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어, 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않습니다:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema`를 사용하는 것이 좋습니다. + + + + 모델 응답의 상세 정도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구(또는 도구들)를 사용할지 선택하는 방법입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 매개변수를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답에 대한 비용을 지불할 책임이 있는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다. 가능한 값: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 사람이 읽을 수 있는 오류 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 토큰에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + 가능한 값: `max_output_tokens`, `content_filter` + + + + 응답에서 처리할 수 있는 내장 도구 호출의 최대 총 횟수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성(moderated completions)이 요청된 경우, 응답 입력과 출력에 대한 moderation 결과입니다. + + + + 이 리소스의 객체 유형이며, 항상 `response`로 설정됩니다. + + 가능한 값: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 포함된 집계된 텍스트 출력을 담고 있는 SDK 전용 편의 속성입니다(있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부에 따라 새 토큰에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + 프롬프트 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + 가능한 값: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 토큰 및 요청 사용량입니다. + + + + 이미지 생성 도구 토큰 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 검색 도구 사용량입니다. + + + + + + + + 각 토큰 위치에서 반환할 가장 가능성이 높은 토큰의 최대 개수이며, 각 토큰에는 연관된 로그 확률이 함께 제공됩니다. + + + + 입력 토큰, 출력 토큰, 출력 토큰의 세부 분석, 사용된 총 토큰을 포함한 토큰 사용 세부 정보를 나타냅니다. + + + + 입력 토큰 수입니다. + + + + 입력 토큰에 대한 세부 분석입니다. + + + + 캐시에 기록된 입력 토큰 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자에 대한 지원 중단된 식별자입니다. `safety_identifier`와 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/openai/o4-mini/code.mdx b/ko/development/comfy-router/models/openai/o4-mini/code.mdx new file mode 100644 index 000000000..f3ac8f02d --- /dev/null +++ b/ko/development/comfy-router/models/openai/o4-mini/code.mdx @@ -0,0 +1,511 @@ +--- +title: "Comfy Router로 o4-mini 사용하기" +description: "Comfy Router를 통해 openai/o4-mini를 호출합니다: endpoint, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "o4-mini" +translationSourceHash: 13134b80 +translationFrom: development/comfy-router/models/openai/o4-mini/code.mdx +translationBlockHashes: + "_intro": 03d40f5d + "Quick start": ae3ead9e + "Schema": 14c35480 + "Examples": 67e6c8f1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/openai/o4-mini.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +OpenAI에서 제공하고 Comfy Router가 서비스하는 `openai/o4-mini`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `openai/o4-mini` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/openai/o4-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o4-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o4-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o4-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 스키마 + +### 입력 + + + 모델 응답에 포함할 추가 출력 데이터입니다. + + + + 모델에 대한 텍스트, 이미지 또는 파일 입력으로, 응답을 생성하는 데 사용됩니다. 이 계약에서 Router가 제공할 수 없는 유일한 필드이며, 아래 `required`의 유일한 항목입니다. + + + + 모델 컨텍스트의 첫 번째 항목으로 시스템(또는 개발자) 메시지를 삽입합니다. + + + + 응답을 위해 생성되는 토큰 수의 상한으로, 표시되는 출력 토큰과 추론 토큰을 포함합니다. 추론 id에서는 이 상한이 숨겨진 추론 토큰과 공유되므로, 작은 값을 사용하면 표시되는 텍스트가 나오기 이전에 전체 예산이 소진될 수 있습니다. 이것이 추론 스모크 케이스가 1024를 보내는 반면 채팅 케이스는 16을 보내는 이유입니다. + + 범위: `1` ~ `…` + + + + OpenAI 모델 식별자입니다. Comfy Router에서 이 필드는 선택 사항(OPTIONAL)이며 Router가 `{model}` 경로 세그먼트에서 채웁니다. 명시적인 `null`도 같은 방식으로 교체됩니다. 경로와 일치하지 않는 값을 보내면 거부됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 여러 턴의 대화를 위한 이전 응답의 ID입니다. + + + + 추론 등급 전용(REASONING TIER ONLY)입니다. 추론 모델을 위한 구성으로, 예: `{"effort": "medium"}`. 변경 없이 전달됩니다. 허용되는 키는 OpenAI의 추론 가이드를 참조하세요. 채팅 등급 id는 이를 무시합니다. + + + + OpenAI가 나중에 검색할 수 있도록 생성된 응답을 저장할지 여부입니다. + + + + 이를 보내는 호출자가 거부되지 않도록 선언되었지만, 이 표면에서는 아무 효과가 없습니다(INERT). Router는 디스패치 이전에 이를 `false`로 확정(SETTLES)하는데, 이는 `text/event-stream`을 중계하는 대신 공급자 응답을 캡처하기 때문입니다. openAiResponsesProxy의 ModifyResponse는 이를 디코딩할 수 없으므로, 스트리밍된 생성은 OpenAI에 의해 청구되고 아무도 계량하지 않게 됩니다. 스트림이 필요하면 `POST /proxy/openai/v1/responses`를 사용하세요. + + + + 샘플링 temperature입니다. 채팅 등급 전용(CHAT TIER ONLY)입니다. o 시리즈 추론 id(`o1`, `o1-pro`, `o3`, `o4-mini`)는 OpenAI에서 이 파라미터를 거부합니다. Router는 이들에 대해 이를 거부하지 않습니다. 두 등급이 하나의 스키마를 공유하는 이유에 대해서는 이 컴포넌트의 참고 사항을 참조하세요. 따라서 이를 보내는 추론 호출은 OpenAI 자체의 오류로 응답됩니다. + + 범위: `0` ~ `2` + + + + 출력 형식 구성으로, 예를 들어 Structured Outputs를 위한 `{"format": {"type": "json_schema", ...}}`입니다. 변경 없이 전달됩니다. + + + + 모델이 사용할 도구를 어떻게 선택할지 지정합니다. 문자열 모드이거나 도구를 지정하는 객체입니다. + + + + 모델이 호출할 수 있는 도구 정의입니다. Router는 도구 분류 체계를 좁히지 않습니다. 허용되는 형태는 OpenAI의 Responses API 참조를 확인하세요. + + + + 누클리어스 샘플링(nucleus-sampling) 컷오프입니다. `temperature`와 동일한 조건으로 채팅 등급 전용입니다. + + 범위: `0` ~ `1` + + + + 컨텍스트가 모델의 창을 초과할 때의 잘림 전략입니다. 열거형(enum)은 위의 세 가지 어휘와 달리 여기서는 강제됩니다. 이 두 값이 OpenAI가 문서화한 완전한 집합이며 늘어나지 않았기 때문입니다. 명시적 `null`은 위 필드들과 동일한 조건으로 여전히 허용됩니다. + + 가능한 값: `auto`, `disabled` + + + + 토큰 사용량 봉투(envelope)입니다. v1 작업이 요청 본문에 이를 선언하기 때문에 이 계약에 존재합니다. OpenAI는 응답(RESPONSE)에 이를 채우므로, 호출자가 이를 보낼 이유가 없습니다. + + +Router가 `GET /v2/models/openai/o4-mini/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 시스템(또는 개발자) 메시지를 모델 컨텍스트의 첫 번째 항목으로 삽입합니다. + +`previous_response_id`와 함께 사용할 경우, 이전 응답의 instructions는 다음 응답으로 이어지지 않습니다. 따라서 새 응답에서 시스템(또는 개발자) 메시지를 간단히 교체할 수 있습니다. + + + + 응답에 대해 생성할 수 있는 토큰 수의 상한으로, 표시되는 출력 토큰과 [추론 토큰](https://platform.openai.com/docs/guides/reasoning)을 포함합니다. + + + + 응답을 생성하는 데 사용되는 모델 + + + + 응답의 무작위성을 제어합니다 + + 범위: `0` ~ `2` + + + + nucleus 샘플링을 통해 응답의 다양성을 제어합니다 + + 범위: `0` ~ `1` + + + + 모델 응답에 사용할 잘라내기(truncation) 전략입니다. +- `auto`: 이 응답과 이전 응답의 컨텍스트가 모델의 컨텍스트 창 크기를 초과하면, 모델이 대화 중간의 입력 항목을 제거하여 컨텍스트 창에 맞도록 응답을 잘라냅니다. +- `disabled` (기본값): 모델 응답이 모델의 컨텍스트 창 크기를 초과할 경우, 요청이 400 오류와 함께 실패합니다. + + 가능한 값: `auto`, `disabled` + + + + 모델에 대한 이전 응답의 고유 ID입니다. 이를 사용하여 여러 턴의 대화를 생성합니다. [대화 상태](https://platform.openai.com/docs/guides/conversation-state)에 대해 더 알아보세요. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)을 위한 구성 옵션입니다. + + + + 이후 턴에서 어떤 추론 항목을 모델에 다시 렌더링할지 제어합니다. 예: `auto`, `current_turn`, `all_turns`. + + + + **o 시리즈 모델 전용** + +[추론 모델](https://platform.openai.com/docs/guides/reasoning)의 추론에 대한 노력 수준을 제한합니다. 현재 지원되는 값은 `low`, `medium`, `high`입니다. 추론 노력을 줄이면 응답이 더 빨라지고 응답에서 추론에 사용되는 토큰 수가 줄어들 수 있습니다. + + 가능한 값: `low`, `medium`, `high` + + + + **지원 중단됨:** 대신 `summary`를 사용하세요. + +모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + 응답에 사용되는 추론 모드입니다. + + + + 모델이 수행한 추론의 요약입니다. 이는 모델의 추론 과정을 디버깅하고 이해하는 데 유용할 수 있습니다. `auto`, `concise`, `detailed` 중 하나입니다. + + 가능한 값: `auto`, `concise`, `detailed` + + + + + + + + 모델이 출력해야 하는 형식을 지정하는 객체입니다. + +`{ "type": "json_schema" }`를 구성하면 Structured Outputs가 활성화되어 모델이 제공한 JSON 스키마와 일치하도록 보장합니다. 자세한 내용은 [Structured Outputs 가이드](https://platform.openai.com/docs/guides/structured-outputs)를 참고하세요. + +기본 형식은 추가 옵션이 없는 `{ "type": "text" }`입니다. + +**gpt-4o 및 최신 모델에는 권장되지 않음:** + +`{ "type": "json_object" }`로 설정하면 이전 JSON 모드가 활성화되어, 모델이 생성하는 메시지가 유효한 JSON임을 보장합니다. 이를 지원하는 모델에서는 `json_schema` 사용이 선호됩니다. + + + + 모델 응답의 상세도를 제한합니다. `low`, `medium`, `high` 중 하나입니다. + + + + 응답을 생성할 때 모델이 어떤 도구를 사용할지 선택하는 방식입니다. 모델이 호출할 수 있는 도구를 지정하는 방법은 `tools` 파라미터를 참고하세요. + + + + + + + + 모델 응답이 배경에서 실행되는지 여부입니다. + + + + 응답에 대한 결제 정보입니다. + + + + 응답 비용을 지불하는 주체입니다. + + + + 이 응답이 완료된 시점의 Unix 타임스탬프(초)입니다. 상태가 `completed`일 때만 표시됩니다. + + + + 이 응답이 생성된 시점의 Unix 타임스탬프(초)입니다. + + + + 모델이 응답 생성에 실패했을 때 반환되는 오류 객체입니다. + + + + 응답에 대한 오류 코드입니다.Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 오류에 대한 사람이 읽을 수 있는 설명입니다. + + + + 지금까지의 텍스트에서 기존 빈도를 기준으로 새 token에 페널티를 부여합니다. + + + + 이 Response의 고유 식별자입니다. + + + + 응답이 불완전한 이유에 대한 세부 정보입니다. + + + + 응답이 불완전한 이유입니다. + + Possible values: `max_output_tokens`, `content_filter` + + + + 하나의 응답에서 처리할 수 있는 내장 도구에 대한 총 호출의 최대 개수입니다. + + + + 응답에 첨부할 수 있는 키-값 쌍의 집합입니다. + + + + 검열된 완성이 요청된 경우, 응답 입력과 출력에 대한 검열 결과입니다. + + + + 이 리소스의 객체 유형으로, 항상 `response`로 설정됩니다. + + Possible values: `response` + + + + 모델이 생성한 콘텐츠 항목의 배열입니다. + +- `output` 배열에 있는 항목의 길이와 순서는 모델의 응답에 따라 달라집니다. +- `output` 배열의 첫 번째 항목에 접근하여 모델이 생성한 콘텐츠를 담은 `assistant` 메시지라고 가정하기보다는, SDK에서 지원되는 경우 `output_text` 속성을 사용하는 것을 고려해 보세요. + + + + `output` 배열의 모든 `output_text` 항목에 있는 텍스트 출력을 집계한 값을 담는 SDK 전용 편의 속성입니다(항목이 있는 경우). +Python 및 JavaScript SDK에서 지원됩니다. + + + + 모델이 도구 호출을 병렬로 실행하도록 허용할지 여부입니다. + + + + 지금까지의 텍스트에 등장하는지 여부를 기준으로 새 token에 페널티를 부여합니다. + + + + OpenAI가 유사한 요청에 대한 응답을 캐시하여 캐시 적중률을 최적화하는 데 사용됩니다. `user` 필드를 대체합니다. + + + + prompt 캐시의 보존 정책입니다. 예: `in_memory` 또는 `24h`. + + + + OpenAI의 사용 정책을 위반할 가능성이 있는 애플리케이션 사용자를 감지하는 데 사용되는 안정적인 식별자입니다. + + + + 요청을 처리하는 데 사용되는 처리 등급입니다. 예: `auto`, `default`, `flex`, `scale`, `priority`. + + + + 응답 생성 상태입니다. `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` 중 하나입니다. + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 나중에 API를 통해 검색할 수 있도록 응답을 저장할지 여부입니다. + + + + 내장 도구별로 분류된 token 및 요청 사용량입니다. + + + + 이미지 생성 도구의 token 사용량입니다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 검색 도구 사용량입니다. + + + + + + + + 각 token 위치에서 반환할 가장 가능성이 높은 token의 최대 개수이며, 각각 연관된 log probability를 가집니다. + + + + 입력 token, 출력 token, 출력 token의 세부 분석, 사용된 총 token을 포함한 token 사용량 세부 정보를 나타냅니다. + + + + 입력 token 수입니다. + + + + 입력 token에 대한 세부 분석입니다. + + + + 캐시에 기록된 입력 token 수입니다. + + 캐시에서 검색된 토큰 수입니다. +[프롬프트 캐싱에 대한 자세한 내용](https://platform.openai.com/docs/guides/prompt-caching). + + + + 출력 토큰 수입니다. + + + + 출력 토큰에 대한 상세 분석입니다. + + + + 추론 토큰 수입니다. + + + + 사용된 총 토큰 수입니다. + + + + 최종 사용자를 위한 지원 중단된 식별자입니다. `safety_identifier` 및 `prompt_cache_key`로 교체되었습니다. + + +## 예시 + +### 입력 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 출력 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/pruna/p-video-2/code.mdx b/ko/development/comfy-router/models/pruna/p-video-2/code.mdx new file mode 100644 index 000000000..68c9be88c --- /dev/null +++ b/ko/development/comfy-router/models/pruna/p-video-2/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router로 P Video 2 사용하기" +description: "Comfy Router를 통해 pruna/p-video-2를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "P Video 2" +translationSourceHash: b0e8a66d +translationFrom: development/comfy-router/models/pruna/p-video-2/code.mdx +translationBlockHashes: + "_intro": fd2e661c + "Quick start": cabedd05 + "Schema": 51d0cc63 + "Examples": 0d85c9fe +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/pruna/p-video-2.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Pruna가 Comfy Router를 통해 제공하는 `pruna/p-video-2`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `pruna/p-video-2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/pruna/p-video-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "pruna/p-video-2", + { + "input": { + "aspect_ratio": "16:9", + "draft": False, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("pruna/p-video-2", { + input: { + aspect_ratio: "16:9", + draft: false, + duration: 2, + fps: 24, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "720p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/pruna/p-video-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"aspect_ratio\":\"16:9\",\"draft\":false,\"duration\":2,\"fps\":24,\"prompt\":\"A single red maple leaf resting on a plain white background.\",\"resolution\":\"720p\"}}" +``` + + +## 스키마 + +### 입력 + + + P-Video-2 생성 파라미터입니다. 생성 비용은 완료된 비디오의 초 단위로 청구되며, 반환된 파일을 기준으로 측정되고, 요율은 `resolution`과 `draft`에 따라 결정됩니다. 안전 필터는 항상 켜져 있으며, 요청에 포함된 `disable_safety_filter` 값은 무시됩니다. + + + + 화면 비율: 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 또는 1:1입니다. `image`가 설정된 경우 무시됩니다. + + + + 생성을 조건화할 입력 오디오 URI입니다(flac, mp3 또는 wav). 출력 길이는 오디오를 따릅니다. + + + + 더 빠르지만 품질이 낮은 미리보기이며, draft 요율로 청구됩니다. + + + + 생성된 비디오의 재생 시간(초)입니다(1-20). 생략하면 모델이 프롬프트를 바탕으로 최대 20초까지 길이를 선택합니다. `audio`가 설정된 경우 무시됩니다. + + 범위: `1` ~ `20` + + + + 프레임 레이트: 24 또는 48입니다. + + + + 이미지 기반 비디오 생성용 입력 이미지 URI입니다(jpg, jpeg, png 또는 webp). + + + + 마지막 프레임의 참조 이미지 URI입니다. + + + + 비디오 생성을 위한 텍스트 프롬프트입니다. + + + + 생성 이전에 프롬프트를 재작성합니다. `seed`로 결과를 재현해야 할 때는 비활성화하세요. + + + + 출력 해상도: 720p 또는 1080p입니다. + + + + 비디오에 오디오를 포함하여 저장합니다. + + + + 재현 가능한 생성을 위한 무작위 시드입니다. 생략하면 무작위로 설정됩니다. + + +Router가 `GET /v2/models/pruna/p-video-2/openapi.json`에서 제공하는 스키마에서 생성되며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 오류 메시지입니다. 상태가 failed일 때 표시됩니다. + + + + 완료된 비디오의 URL입니다. 상태가 succeeded일 때 표시됩니다. + + + + 사람이 읽을 수 있는 진행 상황 메시지입니다. + + + + 예측 상태: starting, processing, succeeded, failed 또는 canceled입니다. + + +## 예제 + +### 입력 + +```json +{ + "input": { + "aspect_ratio": "16:9", + "draft": false, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p" + } +} +``` + +### 출력 + +```json +{ + "generation_url": "https://example.invalid/pruna/p-video-2/output.mp4", + "status": "succeeded" +} +``` + + + diff --git a/ko/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx b/ko/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx new file mode 100644 index 000000000..b9b495452 --- /dev/null +++ b/ko/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx @@ -0,0 +1,287 @@ +--- +title: "Comfy Router로 Qwen Image 3.0 Pro 사용하기" +description: "Comfy Router를 통해 qwen/qwen-image-3.0-pro를 호출하는 방법: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Qwen Image 3.0 Pro" +translationSourceHash: caba1a44 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx +translationBlockHashes: + "_intro": b9aa2049 + "Quick start": dee41ecf + "Schema": 3517aa0a + "Examples": a4380dd1 +--- +{/* GENERATED FILE. router-schemas/qwen/qwen-image-3.0-pro.json에서 `pnpm code-pages:gen`으로 생성된 파일입니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Qwen에서 제공하고 Comfy Router가 서비스하는 `qwen/qwen-image-3.0-pro`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `qwen/qwen-image-3.0-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0-pro", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0-pro", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## Schema + +### 입력 + + + 요청 메시지를 담는 입력 파라미터 객체 + + + + 요청 콘텐츠 배열. 단일 턴 대화만 지원하므로 배열에는 정확히 하나의 객체만 포함되어야 합니다 + + + + 메시지 콘텐츠 배열. 텍스트 기반 이미지 생성에서는 텍스트 객체 하나를, 이미지 편집에서는 이미지 객체 1-3개와 텍스트 객체 하나를 포함합니다 + + + + 입력 이미지의 URL 또는 Base64로 인코딩된 데이터. 이미지 편집 시 1-3개의 이미지를 지원합니다 + + + + 생성하거나 편집할 이미지의 내용, 스타일, 구도를 설명하는 긍정 프롬프트 + + + + 메시지 발신자의 역할. user로 설정해야 합니다 + + 가능한 값: `user` + + + + 멀티모달 이미지 생성 및 편집을 위해 호출할 모델의 ID. 사용 가능한 값은 qwen-image-3.0-pro와 qwen-image-3.0입니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/qwen/\{model}의 `{model}` 경로 세그먼트에서 이 값을 채우기 때문입니다. 따라서 Router 호출자는 이를 생략하며, /proxy/ 라우트에 대한 직접 v1 호출은 이를 반드시 제공해야 합니다. + + + + 이미지 생성을 제어하는 추가 파라미터 + + + + 출력 이미지 수. 범위 1-6, 기본값은 1 + + 범위: `1` ~ `6` + + + + 이미지에 나타나지 않았으면 하는 내용을 설명하는 네거티브 프롬프트 + + + + 지능형 프롬프트 재작성 사용 여부. 기본값은 참 + + + + 프롬프트 재작성 방법. direct(기본값, T2I 및 I2I 지원) 또는 agent(T2I만 지원) + + 가능한 값: `direct`, `agent` + + + + 무작위성을 제어하는 난수 시드. 범위 [0, 2147483647] + + 범위: `0` ~ `2147483647` + + + + 출력 이미지 해상도로, 너비*높이 형식입니다(예: 1024*1024). API는 262144(512*512)에서 6553600(2560*2560) 사이의 픽셀 면적과 1:8에서 8:1 사이의 비율을 허용합니다. 지정하지 않으면 모델이 프롬프트를 기반으로 해상도를 자동으로 추천합니다 + + + + 워터마크 추가 여부. 기본값은 거짓 + + +Router가 `GET /v2/models/qwen/qwen-image-3.0-pro/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 모델 생성 결과를 포함합니다 + + + + 결과 옵션 목록 + + + + 작업이 중단된 이유. 작업이 정상적으로 완료되면 값은 stop입니다 + + + + 모델이 반환한 메시지 + + + + 생성된 이미지 정보를 담은 메시지 콘텐츠 + + + + 생성된 이미지의 URL로 PNG 형식입니다. 링크는 24시간 동안 유효합니다 + + + + 이미지 대신 반환되는 텍스트 요소. 이 필드만 담은 요소는 어떤 자산도 생성하지 않았으므로, 호출자는 콘텐츠 요소의 존재 여부가 아니라 `image`를 기준으로 완료 여부를 판단합니다 + + + + 메시지의 역할. assistant로 고정됩니다 + + + + 고유 요청 식별자 + + + + 이 호출의 리소스 사용량. 성공한 경우에만 반환됩니다 + + + + 요청의 입력 이미지 수. 텍스트 기반 이미지 생성의 경우 0을 반환합니다 + + + + 입력 이미지 과금 등급으로 qima_input_1k 또는 qima_input_2k이며, 출력 해상도의 픽셀 면적에 따라 결정됩니다 + + + + 최종 출력 이미지의 높이(픽셀) + + + + 실제로 반환된 출력 이미지 수 + + + + 출력 이미지 과금 등급으로 qima_output_1k 또는 qima_output_2k이며, 출력 해상도의 픽셀 면적에 따라 결정됩니다 + + + + 최종 출력 이미지의 너비(픽셀) + + +## 예시 + +### 입력 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 출력 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx b/ko/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx new file mode 100644 index 000000000..8af21996e --- /dev/null +++ b/ko/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx @@ -0,0 +1,286 @@ +--- +title: "Comfy Router로 Qwen Image 3.0 사용하기" +description: "Comfy Router를 통해 qwen/qwen-image-3.0 호출하기: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Qwen Image 3.0" +translationSourceHash: cfa02806 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0/code.mdx +translationBlockHashes: + "_intro": e007ab60 + "Quick start": 10fc21cc + "Schema": baa6f997 + "Examples": a4380dd1 +--- +{/* GENERATED FILE. Generated from router-schemas/qwen/qwen-image-3.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`qwen/qwen-image-3.0`에 대한 API 레퍼런스이며, Qwen에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `qwen/qwen-image-3.0` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## 스키마 + +### 입력 + + + 요청 메시지를 담는 입력 파라미터 객체 + + + + 요청 콘텐츠 배열. 단일 턴 대화만 지원하므로 배열에는 정확히 하나의 객체만 포함되어야 합니다 + + + + 메시지 콘텐츠 배열. 텍스트 기반 이미지 생성은 텍스트 객체 하나를, 이미지 편집은 이미지 객체 1-3개와 텍스트 객체 하나를 포함합니다 + + + + 입력 이미지의 URL 또는 Base64 인코딩 데이터. 이미지 편집 시 1-3개의 이미지를 지원합니다 + + + + 생성하거나 편집할 이미지의 콘텐츠, 스타일, 구도를 설명하는 긍정 프롬프트 + + + + 메시지 발신자의 역할. user로 설정해야 합니다 + + 사용 가능한 값: `user` + + + + 멀티모달 이미지 생성 및 편집을 위해 호출할 모델의 ID. 사용 가능한 값은 qwen-image-3.0-pro와 qwen-image-3.0입니다. 이 스키마의 `required` 목록에 없는 이유는 Comfy Router가 /v2/models/qwen/\{model} 경로 세그먼트의 `{model}`에서 이 값을 채우기 때문이며, 따라서 Router 호출자는 이를 생략합니다. /proxy/ 경로에 대한 직접 v1 호출은 반드시 이 값을 제공해야 합니다. + + + + 이미지 생성을 제어하는 추가 파라미터 + + + + 출력 이미지 수. 범위 1-6, 기본값은 1 + + 범위: `1` ~ `6` + + + + 이미지에 나타나지 않기를 원하는 콘텐츠를 설명하는 네거티브 프롬프트 + + + + 지능형 프롬프트 재작성 사용 여부. 기본값은 참 + + + + 프롬프트 재작성 방법으로, direct(기본값, T2I 및 I2I 지원) 또는 agent(T2I만 해당) + + 사용 가능한 값: `direct`, `agent` + + + + 무작위성을 제어하는 난수 시드. 범위 [0, 2147483647] + + 범위: `0` ~ `2147483647` + + + + width*height 형식의 출력 이미지 해상도입니다. 예: 1024*1024. API는 262144(512*512)에서 6553600(2560*2560) 사이의 픽셀 면적과 1:8에서 8:1 사이의 비율을 허용합니다. 지정하지 않으면 모델이 프롬프트를 기반으로 해상도를 자동으로 추천합니다 + + + + 워터마크 추가 여부. 기본값은 거짓 + + +Router가 `GET /v2/models/qwen/qwen-image-3.0/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이 문서는 요청이 공급자에게 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 실패한 요청의 오류 코드(요청이 성공하면 반환되지 않음) + + + + 실패한 요청에 대한 상세 정보(요청이 성공하면 반환되지 않음) + + + + 모델 생성 결과를 포함합니다 + + + + 결과 옵션 목록 + + + + 작업이 중단된 이유. 작업이 정상적으로 완료되면 값은 stop입니다 + + + + 모델이 반환한 메시지 + + + + 생성된 이미지 정보를 담은 메시지 콘텐츠 + + + + 생성된 PNG 형식 이미지의 URL. 링크는 24시간 동안 유효합니다 + + + + 이미지 대신 반환되는 텍스트 요소. 이 필드만 담은 요소는 어떤 에셋도 생성하지 않았으므로, 호출자는 콘텐츠 요소의 존재 여부가 아니라 `image`를 기준으로 완료를 판단합니다 + + + + 메시지의 역할. assistant로 고정됩니다 + + + + 고유 요청 식별자 + + + + 이 호출의 리소스 사용량. 성공한 경우에만 반환됩니다 + + + + 요청에 포함된 입력 이미지 수. 텍스트 기반 이미지 생성의 경우 0을 반환합니다 + + + + 입력 이미지 과금 등급으로 qima_input_1k 또는 qima_input_2k이며, 출력 해상도의 픽셀 면적에 따라 결정됩니다 + + + + 최종 출력 이미지의 높이(픽셀) + + + + 실제로 반환된 출력 이미지 수 + + + + 출력 이미지 과금 등급으로 qima_output_1k 또는 qima_output_2k이며, 출력 해상도의 픽셀 면적에 따라 결정됩니다 + + + + 최종 출력 이미지의 너비(픽셀) + + +## 예시 + +### 입력 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 출력 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + diff --git a/ko/development/comfy-router/models/recraft/recraftv2/code.mdx b/ko/development/comfy-router/models/recraft/recraftv2/code.mdx new file mode 100644 index 000000000..4225b34d4 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv2/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router에서 Recraft V2 사용하기" +description: "Comfy Router를 통해 recraft/recraftv2를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Recraft V2" +translationSourceHash: 8215b336 +translationFrom: development/comfy-router/models/recraft/recraftv2/code.mdx +translationBlockHashes: + "_intro": 711eec4f + "Quick start": e5c05b86 + "Schema": 7c25b55c + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Recraft에서 제공하는 `recraft/recraftv2`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv2", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv2", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 입력 + + + 생성된 이미지에 대한 제어 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 편심적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소를 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 언급하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 아무것도 `$ref`하지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 그것을 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`가 필요합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id나 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 발급받을 수 있으며, 이 프록시가 동일한 자격 증명으로 제공합니다. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문은 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv2/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 공급자에게 요청이 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv3/code.mdx b/ko/development/comfy-router/models/recraft/recraftv3/code.mdx new file mode 100644 index 000000000..9f71473c8 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv3/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 Recraft V3 사용하기" +description: "Comfy Router를 통해 recraft/recraftv3를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Recraft V3" +translationSourceHash: 05db64a5 +translationFrom: development/comfy-router/models/recraft/recraftv3/code.mdx +translationBlockHashes: + "_intro": de70f54d + "Quick start": 0e77fb0e + "Schema": 49f16357 + "Examples": 5c6fff21 +--- +{/* 생성됨 파일. `pnpm code-pages:gen`에 의해 router-schemas/recraft/recraftv3.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv3`에 대한 API 레퍼런스이며, Comfy Router가 Recraft에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `recraft/recraftv3` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv3", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv3", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 값 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 역동적이고 기발한 수준은 움직임과 창의성을 도입합니다. + + 범위: `0`부터 `5`까지 + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 지정하는 대신 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 아무것도 `$ref`하지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1`부터 `6`까지 + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. 이 프록시가 동일한 자격 증명으로 제공하는 `POST /proxy/recraft/styles`로 스타일 ID를 발급받으세요. 이 라우트에서 이 짝을 강제하는 것은 아무것도 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv3/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx new file mode 100644 index 000000000..cfb5710aa --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4.1 Pro Vector 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_pro_vector를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Recraft V4.1 Pro Vector" +translationSourceHash: 333d4843 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx +translationBlockHashes: + "_intro": e13c9640 + "Quick start": 8fca5324 + "Schema": c1492000 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_pro_vector`의 API 레퍼런스이며, Recraft에서 제공하고 Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[your Comfy workspace](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_1_pro_vector` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 기발한 수준은 움직임과 창의성을 더합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이 값들을 참조로 언급하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 개의 `recraftv4_styles*` 표기는 추가로 `style_id`를 필요로 합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 개의 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일을 발급받을 수 있으며, 이 프록시가 동일한 자격 증명으로 해당 엔드포인트를 제공합니다. 이 라우트에서는 이 조합을 강제하지 않습니다. 본문은 변경 없이 Recraft로 전달되므로, style_id 없이 `recraftv4_styles*`를 호출하면 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_pro_vector/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 전에 호출을 검증할 때 사용하는 문서와 동일합니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx new file mode 100644 index 000000000..b84ef938c --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4.1 Pro 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_pro를 호출하는 방법: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Recraft V4.1 Pro" +translationSourceHash: 3de4d0c4 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx +translationBlockHashes: + "_intro": d23b84cb + "Quick start": 9f2d5923 + "Schema": 2f41a4b9 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_pro`에 대한 API 레퍼런스입니다. Comfy Router가 Recraft에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `recraft/recraftv4_1_pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### Input + + + 생성된 이미지에 대한 제어 옵션 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 정면으로 응시합니다. 동적이고 개성적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않음 + + + + 생성에 사용할 모델 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 명명하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일 ID를 발급받을 수 있으며, 이 요청은 동일한 자격 증명으로 같은 프록시가 제공합니다. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문이 변경 없이 Recraft로 전달되므로, style_id 없이 보낸 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_pro/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다. + +### Output + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx new file mode 100644 index 000000000..528771829 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4.1 Utility Pro Vector 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_utility_pro_vector 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Recraft V4.1 Utility Pro Vector" +translationSourceHash: aa6c4d7e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx +translationBlockHashes: + "_intro": 1ee48b43 + "Quick start": 644e3b95 + "Schema": ddc74cf2 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Recraft가 Comfy Router를 통해 제공하는 `recraft/recraftv4_1_utility_pro_vector`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_1_utility_pro_vector` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 옵션 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 다이내믹하고 편심적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않습니다 + + + + 생성에 사용할 모델입니다 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 지칭하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 아무것도 `$ref`하지 않아 GET /openapi에서 제공되는 스펙에서 잘려나가므로, 그에 대한 포인터가 제공되는 문서에서 존재하지 않는 대상을 가리키게 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`가 필요합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다 (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 발급받으세요. 이 프록시가 동일한 자격 증명으로 이를 제공합니다. 이 라우트에서는 이 짝을 강제하는 것이 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이것이 없는 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_utility_pro_vector/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 이루어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx new file mode 100644 index 000000000..69ad8eaec --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router에서 Recraft V4.1 Utility Pro 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_utility_pro를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Recraft V4.1 Utility Pro" +translationSourceHash: 748ad94e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx +translationBlockHashes: + "_intro": abd5502a + "Quick start": 53f9b90e + "Schema": fcf4a5c5 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_pro`에 대한 API 레퍼런스로, Comfy Router에서 Recraft를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_1_utility_pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 옵션 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 역동적이고 개성 있는 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않음 + + + + 생성에 사용할 모델 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi로 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 호출을 거부합니다. 동일한 프록시가 동일한 자격 증명으로 제공하는 `POST /proxy/recraft/styles`로 스타일 ID를 발급받으세요. 이 라우트에서 이 짝을 강제하는 것은 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_utility_pro/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx new file mode 100644 index 000000000..b290870d5 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 Recraft V4.1 Utility Vector 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_utility_vector를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Recraft V4.1 Utility Vector" +translationSourceHash: a4f3c412 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx +translationBlockHashes: + "_intro": 996cbb6d + "Quick start": a5357e10 + "Schema": 7877c6fc + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Recraft에서 Comfy Router가 제공하는 `recraft/recraftv4_1_utility_vector`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_1_utility_vector` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 값 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 다이내믹하고 이색적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 지칭하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 포인터가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id나 스타일 참조가 없는 요청을 거부합니다. 이 프록시가 동일한 자격 증명으로 제공하는 `POST /proxy/recraft/styles`로 발급받으세요. 이 경로에서는 이 짝을 강제하는 것이 아무것도 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_utility_vector/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx new file mode 100644 index 000000000..e40b29462 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4.1 Utility 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_utility를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Recraft V4.1 Utility" +translationSourceHash: 490ee1f0 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx +translationBlockHashes: + "_intro": 840be098 + "Quick start": 5eee19b5 + "Schema": 1f2be5cd + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility`의 API 레퍼런스이며, Recraft에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `recraft/recraftv4_1_utility` + +**Endpoint:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 값 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 역동적이고 기발한 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않음 + + + + 생성에 사용할 모델(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다: 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 이름을 지정하는 대신 여기에 직접 나열하는 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 그것에 대한 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다: Recraft는 style_id 또는 style reference가 없는 호출을 거부합니다. 스타일 ID는 `POST /proxy/recraft/styles`로 발급받을 수 있으며, 이 프록시가 동일한 자격 증명으로 제공합니다. 이 라우트에서는 이 짝을 강제하는 것이 아무것도 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이것 없이 `recraftv4_styles*`를 호출하면 파트너에게 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_utility/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx new file mode 100644 index 000000000..ef7299b87 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4.1 Vector 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1_vector를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Recraft V4.1 Vector" +translationSourceHash: 663bb105 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx +translationBlockHashes: + "_intro": 60d9fc16 + "Quick start": aea4706b + "Schema": 9668bdeb + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_vector`에 대한 API Reference이며, Recraft에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `recraft/recraftv4_1_vector` + +**Endpoint:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 항목 + + + + 이미지의 예술적 분위기를 정의합니다. 낮은 단계에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 개성적인 단계에서는 움직임과 창의성이 도입됩니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않습니다 + + + + 생성에 사용할 모델(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지칭하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 명명하는 대신 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 아무것도 `$ref`하지 않아 GET /openapi에서 제공되는 스펙에서 제거되기 때문입니다. 따라서 해당 컴포넌트에 대한 포인터는 제공되는 문서에서 끊어진 참조가 됩니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 발급받을 수 있으며, 이 엔드포인트는 동일한 자격 증명으로 이 프록시가 제공합니다. 이 경로에서는 이 짝을 강제하는 것이 없습니다. 본문은 변경 없이 Recraft로 전달되므로, 이것 없이 `recraftv4_styles*`를 호출하면 파트너에 도달한 뒤 4xx 응답으로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1_vector/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-1/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-1/code.mdx new file mode 100644 index 000000000..19d6a9d27 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-1/code.mdx @@ -0,0 +1,180 @@ +--- +title: "Comfy Router로 Recraft V4.1 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_1을 호출합니다: endpoint, request 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Recraft V4.1" +translationSourceHash: 381c3166 +translationFrom: development/comfy-router/models/recraft/recraftv4-1/code.mdx +translationBlockHashes: + "_intro": 35b040e2 + "Quick start": 4cdf273e + "Schema": 939c5675 + "Examples": 5c6fff21 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/recraft/recraftv4_1.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1`에 대한 API 레퍼런스로, Recraft에서 Comfy Router를 통해 제공됩니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_1` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 다이내믹하고 이색적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소를 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector 및 recraftv4_styles_pro_vector입니다. 이를 참조로 이름을 지정하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi로 제공되는 명세에서 제거되므로, 이에 대한 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`가 필요합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일 ID를 발급받을 수 있으며, 이 동일한 프록시가 동일한 자격 증명으로 해당 엔드포인트를 제공합니다. 이 라우트에서 이 조합을 강제하는 것은 없습니다. 본문은 변경 없이 Recraft로 전달되므로, style_id 없이 `recraftv4_styles*`를 호출하면 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_1/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-pro/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-pro/code.mdx new file mode 100644 index 000000000..f4c092d61 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4 Pro 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_pro를 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Recraft V4 Pro" +translationSourceHash: bb249fa1 +translationFrom: development/comfy-router/models/recraft/recraftv4-pro/code.mdx +translationBlockHashes: + "_intro": bcf3db7b + "Quick start": 740394ca + "Schema": 1cc0dc86 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_pro`에 대한 API 레퍼런스입니다. Recraft에서 제공하며 Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 값 + + + + 이미지의 예술적 분위기를 정의합니다. 낮은 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 개성 강한 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 이름을 지정하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi로 제공되는 스펙에서 제거되므로, 그에 대한 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`가 필요합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기입니다(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일입니다(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id나 style 참조가 없는 요청을 거부합니다. 동일한 프록시가 동일한 자격 증명으로 제공하는 `POST /proxy/recraft/styles`로 발급받으세요. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문은 Recraft로 그대로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +Router가 `GET /v2/models/recraft/recraftv4_pro/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 이루어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx new file mode 100644 index 000000000..7c0f0751a --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 Recraft V4 Styles Pro Vector 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_styles_pro_vector를 호출합니다: endpoint, 요청 형태 그리고 Router가 반환하는 응답." +sidebarTitle: "Recraft V4 Styles Pro Vector" +translationSourceHash: 40752aaa +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx +translationBlockHashes: + "_intro": 5d5ca072 + "Quick start": 27b0d8b1 + "Schema": b37c67d0 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Recraft가 Comfy Router를 통해 제공하는 `recraft/recraftv4_styles_pro_vector`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `recraft/recraftv4_styles_pro_vector` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 옵션 + + + + 이미지의 예술적 분위기를 정의합니다. 단순한 수준에서는 인물이 정적인 스타일로 카메라를 똑바로 응시합니다. 동적이고 개성 있는 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않음 + + + + 생성에 사용할 모델 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지칭하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 여기에서 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi로 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id나 스타일 참조 없이 호출된 해당 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일 ID를 발급받을 수 있으며, 이 엔드포인트는 동일한 프록시가 동일한 자격 증명으로 제공합니다. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문이 그대로 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_styles_pro_vector/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx new file mode 100644 index 000000000..b95d6cc1e --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx @@ -0,0 +1,179 @@ +--- +title: "Comfy Router로 Recraft V4 Styles Pro 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_styles_pro를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Recraft V4 Styles Pro" +translationSourceHash: 1fcaf25c +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx +translationBlockHashes: + "_intro": 62caf367 + "Quick start": ade5d4ae + "Schema": 05ebdd18 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Recraft에서 제공하는 `recraft/recraftv4_styles_pro`의 API 레퍼런스입니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4_styles_pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어입니다 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 이색적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0`부터 `5`까지 + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보내는 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector 및 recraftv4_styles_pro_vector입니다. 이들을 참조로 이름을 지정하는 대신 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 이에 대한 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1`부터 `6`까지 + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id나 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일 ID를 발급받으세요. 이 동일한 프록시가 동일한 자격 증명으로 제공합니다. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문은 변경 없이 Recraft로 전달되므로, 이것이 없는 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_styles_pro/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 생성이 만들어졌을 때의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근하기 위한 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx new file mode 100644 index 000000000..0ed2691c3 --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4 Styles Vector 사용하기" +description: "recraft/recraftv4_styles_vector를 Comfy Router를 통해 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Recraft V4 Styles Vector" +translationSourceHash: b134e87f +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx +translationBlockHashes: + "_intro": 15b084fb + "Quick start": 8bf59c8c + "Schema": 2e061fe2 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles_vector`에 대한 API 레퍼런스이며, Recraft의 Comfy Router에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `recraft/recraftv4_styles_vector` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 역동적이고 기발한 수준은 움직임과 창의성을 도입합니다. + + 범위: `0` ~ `5` + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다: 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이들을 참조로 이름을 지정하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 해당 컴포넌트를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1` ~ `6` + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다: Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. 동일한 프록시가 동일한 자격 증명으로 제공하는 `POST /proxy/recraft/styles`로 발급받을 수 있습니다. 이 경로에서는 이 짝을 강제하지 않습니다. 본문이 변경 없이 Recraft로 전달되므로, 이것이 없는 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 돌아옵니다. + + +`GET /v2/models/recraft/recraftv4_styles_vector/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4-styles/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4-styles/code.mdx new file mode 100644 index 000000000..a457384db --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4-styles/code.mdx @@ -0,0 +1,178 @@ +--- +title: "Comfy Router로 Recraft V4 Styles 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4_styles를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Recraft V4 Styles" +translationSourceHash: 6921e08b +translationFrom: development/comfy-router/models/recraft/recraftv4-styles/code.mdx +translationBlockHashes: + "_intro": f35eca87 + "Quick start": b8651bb0 + "Schema": 9b9320da + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles`에 대한 API 레퍼런스입니다. Recraft에서 제공하며 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `recraft/recraftv4_styles` + +**Endpoint:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 + + + + 이미지의 예술적 톤을 정의합니다. 단순한 수준에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 동적이고 개성적인 수준은 움직임과 창의성을 도입합니다. + + 범위: `0`부터 `5`까지 + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 삽입하지 않습니다 + + + + 생성에 사용할 모델입니다(예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 주소를 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector 및 recraftv4_styles_pro_vector입니다. 여기에 이들을 참조로 명명하지 않고 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 이에 대한 포인터가 제공되는 문서에서 매달린 상태가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참조하세요. + + + + 생성할 이미지 수 + + 범위: `1`부터 `6`까지 + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기(예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일(예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID입니다(예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서 필수입니다. Recraft는 style_id 또는 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일을 발급받을 수 있으며, 이 프록시가 동일한 자격 증명으로 해당 경로를 제공합니다. 이 경로에서는 이 짝을 강제하지 않습니다. 본문이 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4_styles/openapi.json`에서 제공하는 스키마, 즉 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 동일한 문서에서 생성되었습니다. + +### 출력 + + + 생성이 만들어진 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/ko/development/comfy-router/models/recraft/recraftv4/code.mdx b/ko/development/comfy-router/models/recraft/recraftv4/code.mdx new file mode 100644 index 000000000..643ec314c --- /dev/null +++ b/ko/development/comfy-router/models/recraft/recraftv4/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 Recraft V4 사용하기" +description: "Comfy Router를 통해 recraft/recraftv4를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Recraft V4" +translationSourceHash: a459e810 +translationFrom: development/comfy-router/models/recraft/recraftv4/code.mdx +translationBlockHashes: + "_intro": fad0b1c2 + "Quick start": abde0945 + "Schema": f8f3705d + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4`에 대한 API 레퍼런스이며, Recraft에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +키를 [Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `recraft/recraftv4` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/recraft/recraftv4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지에 대한 제어 옵션 + + + + 이미지의 예술적 톤을 정의합니다. 낮은 단계에서는 인물이 정적이고 깔끔한 스타일로 카메라를 똑바로 응시합니다. 다이내믹하고 개성 있는 단계에서는 움직임과 창의성이 도입됩니다. + + 범위: `0`부터 `5`까지 + + + + RGB 색상 값 + + + + + + + + 선호하는 색상의 배열 + + + + + + + + 텍스트 레이아웃을 포함하지 않음 + + + + 생성에 사용할 모델 (예: "recraftv3"). 이 필드는 enum으로 제한되지 않습니다. 프록시는 호출자가 보낸 값을 그대로 전달합니다. Comfy가 제공하는 표기, 즉 Comfy Router가 `recraft/`로 지정하는 집합은 recraftv2, recraftv3, recraftv4, recraftv4_pro, recraftv4_1, recraftv4_1_utility, recraftv4_1_pro, recraftv4_1_utility_pro, recraftv4_styles, recraftv4_styles_pro, recraftv4_1_vector, recraftv4_1_utility_vector, recraftv4_1_pro_vector, recraftv4_1_utility_pro_vector, recraftv4_styles_vector, recraftv4_styles_pro_vector입니다. 이것들을 참조로 지칭하지 않고 여기에 직접 나열한 이유는, 이들을 선언하는 RecraftGenerationModel 컴포넌트가 어디에서도 `$ref`되지 않아 GET /openapi에서 제공되는 스펙에서 제거되므로, 이를 가리키는 포인터가 제공되는 문서에서 끊어진 참조가 되기 때문입니다. 네 가지 `recraftv4_styles*` 표기는 추가로 `style_id`를 요구합니다. 해당 필드를 참고하세요. + + + + 생성할 이미지 수 + + 범위: `1`부터 `6`까지 + + + + 생성할 이미지를 설명하는 텍스트 프롬프트 + + + + 생성된 이미지의 크기 (예: "1024x1024") + + + + 생성된 이미지에 적용할 스타일 (예: "digital_illustration") + + + + 생성된 이미지에 적용할 스타일 ID (예: "123e4567-e89b-12d3-a456-426614174000"). style_id가 제공되면 style은 제공하지 않아야 합니다. 네 가지 `recraftv4_styles*` 모델에서는 필수입니다. Recraft는 style_id나 스타일 참조가 없는 요청을 거부합니다. `POST /proxy/recraft/styles`로 스타일 ID를 발급받을 수 있으며, 이 프록시가 동일한 자격 증명으로 제공합니다. 이 라우트에서는 이 짝을 강제하지 않습니다. 본문이 변경 없이 Recraft로 전달되므로, 이를 포함하지 않은 `recraftv4_styles*` 호출은 파트너에 도달한 뒤 4xx로 반환됩니다. + + +Router가 `GET /v2/models/recraft/recraftv4/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 생성이 만들어진 시점의 Unix 타임스탬프 + + + + 생성에 사용된 크레딧 수 + + + + 생성된 이미지 정보의 배열 + + + + 생성된 이미지의 고유 식별자 + + + + 생성된 이미지에 접근할 수 있는 URL + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/ko/development/comfy-router/models/runway/aleph2/code.mdx b/ko/development/comfy-router/models/runway/aleph2/code.mdx new file mode 100644 index 000000000..30a907368 --- /dev/null +++ b/ko/development/comfy-router/models/runway/aleph2/code.mdx @@ -0,0 +1,176 @@ +--- +title: "Comfy Router로 Aleph 2 사용하기" +description: "Comfy Router를 통해 runway/aleph2를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Aleph 2" +translationSourceHash: 583a548e +translationFrom: development/comfy-router/models/runway/aleph2/code.mdx +translationBlockHashes: + "_intro": c0d540d3 + "Quick start": b9ab4ba4 + "Schema": cb584483 + "Examples": 5512235a +--- +{/* GENERATED FILE. Generated from router-schemas/runway/aleph2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Runway가 제공하고 Comfy Router가 서비스하는 `runway/aleph2`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `runway/aleph2` + +**Endpoint:** `POST https://api.comfy.org/v2/models/runway/aleph2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/aleph2", + { + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/aleph2", { + promptText: "recolor the scene in cool blue tones", + videoUri: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/aleph2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"recolor the scene in cool blue tones\", \"videoUri\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 콘텐츠 검열 시스템의 동작에 영향을 주는 설정입니다. + + + + `low`로 설정하면 콘텐츠 검열 시스템이 인식 가능한 공인(public figure)이 포함된 생성을 차단하는 데 덜 엄격해집니다. + + 가능한 값: `auto`, `low` + + + + 입력 비디오의 특정 지점에 배치되는 시간 지정 가이드 이미지입니다. 최대 5개의 키프레임. + + 가능한 값: `auto`, `low` + + + + 생성에 사용할 모델입니다. Comfy Router 경로 `POST /v2/models/runway/{model}`에서는 이 필드가 경로에서 제공되므로 반드시 전송해서는 안 됩니다. v1 `POST /proxy/runway/video_to_video` 경로에서는 필수이며 RunwayVideoToVideoModelEnum(`aleph2`)으로 제한됩니다. + + + + 비디오의 특정 지점에서 편집을 가이드하기 위한 최대 5개의 이미지 키프레임 목록입니다. + + + + 이미지가 적용되어야 할 출력 비디오 내 위치입니다. + + + + 인코딩된 이미지를 포함하는 HTTPS URL, Runway URI 또는 데이터 URI입니다. + + + + 출력에 무엇이 나타나야 하는지 설명하는 1000자 이하의 비어 있지 않은 문자열입니다. + + + + 생성을 위한 무작위 시드입니다. + + 범위: `0` ~ `4294967295` + + 형식: `int64` + + + + 편집할 입력 비디오입니다(HTTPS URL, Runway upload URI 또는 데이터 URI). 30초 이하여야 합니다. + + +`GET /v2/models/runway/aleph2/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 작업 생성 타임스탬프 + + 형식: `date-time` + + + + 작업 ID + + + + 완료된 생성물의 에셋 URL입니다. `runway/gen4_turbo`와 `runway/aleph2`의 경우 각 요소는 VIDEO URL입니다. 작업이 성공적으로 종료되면 제공되며, 이 목록이 곧 결과입니다. + + + + 작업의 진행률을 나타내는 0과 1 사이의 실수 값입니다. 상태가 RUNNING인 경우에만 사용할 수 있습니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + Runway 작업의 가능한 상태입니다. + + 가능한 값: `SUCCEEDED`, `RUNNING`, `FAILED`, `PENDING`, `CANCELLED`, `THROTTLED` + + +## 예제 + +### 입력 + +```json +{ + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 출력 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/ko/development/comfy-router/models/runway/gen4-image/code.mdx b/ko/development/comfy-router/models/runway/gen4-image/code.mdx new file mode 100644 index 000000000..037a2a225 --- /dev/null +++ b/ko/development/comfy-router/models/runway/gen4-image/code.mdx @@ -0,0 +1,147 @@ +--- +title: "Comfy Router로 Gen 4 Image 사용하기" +description: "Comfy Router를 통해 runway/gen4_image를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Gen 4 Image" +translationSourceHash: d0d00b89 +translationFrom: development/comfy-router/models/runway/gen4-image/code.mdx +translationBlockHashes: + "_intro": cb3c6faa + "Quick start": eb67adf8 + "Schema": d889abf3 + "Examples": 291dbf54 +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/runway/gen4_image.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Runway가 Comfy Router를 통해 제공하는 `runway/gen4_image`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `runway/gen4_image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/runway/gen4_image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_image", + { + "promptText": "a red circle", + "ratio": "1024:1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_image", { + promptText: "a red circle", + ratio: "1024:1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"a red circle\", \"ratio\": \"1024:1024\"}" +``` + + +## 스키마 + +### 입력 + + + 생성에 사용할 모델입니다. Comfy Router 경로 `POST /v2/models/runway/{model}`에서는 이 필드가 경로에서 제공되므로 반드시 전송해서는 안 됩니다. v1 `POST /proxy/runway/text_to_image` 경로에서는 필수이며 `gen4_image`로 제한됩니다. + + + + 이미지 생성을 위한 텍스트 프롬프트 + + + + 가능한 값: `1920:1080`, `1080:1920`, `1024:1024`, `1360:768`, `1080:1080`, `1168:880`, `1440:1080`, `1080:1440`, `1808:768`, `2112:912` + + + + 생성을 안내하는 참조 이미지 배열 + + + + 인코딩된 이미지를 포함하는 HTTPS URL 또는 데이터 URI + + +Router가 `GET /v2/models/runway/gen4_image/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 작업 생성 타임스탬프 + + 형식: `date-time` + + + + 작업 ID + + + + 완료된 생성 결과물의 에셋 URL입니다. `runway/gen4_image`의 경우 각 요소는 이미지 URL입니다. 작업이 성공적으로 종료되면 제공되며, 이 목록이 곧 결과입니다. + + + + 작업의 진행률을 나타내는 0과 1 사이의 실수 값입니다. 상태가 RUNNING인 경우에만 사용할 수 있습니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + Runway 작업의 가능한 상태입니다. + + 가능한 값: `SUCCEEDED`, `RUNNING`, `FAILED`, `PENDING`, `CANCELLED`, `THROTTLED` + + +## 예시 + +### 입력 + +```json +{ + "promptText": "a red circle", + "ratio": "1024:1024" +} +``` + +### 출력 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_image/generated.png" + ], + "status": "SUCCEEDED" +} +``` + + diff --git a/ko/development/comfy-router/models/runway/gen4-turbo/code.mdx b/ko/development/comfy-router/models/runway/gen4-turbo/code.mdx new file mode 100644 index 000000000..83f21ef0e --- /dev/null +++ b/ko/development/comfy-router/models/runway/gen4-turbo/code.mdx @@ -0,0 +1,162 @@ +--- +title: "Comfy Router로 Gen 4 Turbo 사용하기" +description: "Comfy Router를 통해 runway/gen4_turbo를 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Gen 4 Turbo" +translationSourceHash: 5c15b939 +translationFrom: development/comfy-router/models/runway/gen4-turbo/code.mdx +translationBlockHashes: + "_intro": 2edfaa1c + "Quick start": fcdc7564 + "Schema": 5def72fe + "Examples": c4244e75 +--- +{/* GENERATED FILE. Generated from router-schemas/runway/gen4_turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`runway/gen4_turbo`에 대한 API 레퍼런스입니다. Runway에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `runway/gen4_turbo` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/runway/gen4_turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_turbo", + { + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_turbo", { + duration: 5, + promptImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + ratio: "1280:720", + seed: 42, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"promptImage\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"ratio\": \"1280:720\", \"seed\": 42}" +``` + + +## 스키마 + +### 입력 + + + 가능한 값: `5`, `10` + + + + 생성에 사용할 모델입니다. Comfy Router 경로 `POST /v2/models/runway/{model}`에서는 이 필드가 경로에서 제공되므로 전송하면 안 됩니다. v1 `POST /proxy/runway/image_to_video` 경로에서는 필수이며 RunwayModelEnum(`gen4_turbo`)으로 제한됩니다. + + + + 비디오 생성에 사용할 이미지입니다. 단일 URI 또는 위치 정보가 포함된 이미지 객체 배열일 수 있습니다. + + + + 생성을 위한 텍스트 프롬프트 + + + + 가능한 값: `1280:720`, `720:1280`, `1104:832`, `832:1104`, `960:960`, `1584:672`, `1280:768`, `768:1280` + + + + 생성을 위한 랜덤 시드 + + 범위: `0` ~ `4294967295` + + 형식: `int64` + + +Router가 `GET /v2/models/runway/gen4_turbo/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 작업 생성 타임스탬프 + + 형식: `date-time` + + + + 작업 ID + + + + 완료된 생성물의 에셋 URL입니다. `runway/gen4_turbo`와 `runway/aleph2`의 경우 각 요소는 VIDEO URL입니다. 작업이 성공적으로 종료되면 제공되며, 이 목록이 곧 결과입니다. + + + + 작업의 진행률을 나타내는 0과 1 사이의 실수 값입니다. 상태가 RUNNING인 경우에만 사용할 수 있습니다. + + 범위: `0` ~ `1` + + 형식: `float` + + + + Runway 작업의 가능한 상태입니다. + + 가능한 값: `SUCCEEDED`, `RUNNING`, `FAILED`, `PENDING`, `CANCELLED`, `THROTTLED` + + +## 예시 + +### 입력 + +```json +{ + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42 +} +``` + +### 출력 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/ko/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx b/ko/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx new file mode 100644 index 000000000..ec8ad5559 --- /dev/null +++ b/ko/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router로 Hunyuan 3D Part 사용하기" +description: "Comfy Router를 통해 tencent/hunyuan-3d-part를 호출합니다: endpoint, 요청 형태와 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Hunyuan 3D Part" +translationSourceHash: 48dc2ff1 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx +translationBlockHashes: + "_intro": 55a0b224 + "Quick start": 2774fcbb + "Schema": 24e6a64b + "Examples": ee4faeb5 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-part.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Tencent가 제공하고 Comfy Router가 서비스하는 `tencent/hunyuan-3d-part`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `tencent/hunyuan-3d-part` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-part` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-part", + { + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-part", { + File: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-part \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}}" +``` + + +## 스키마 + +### 입력 + + + 컴포넌트 생성을 위한 3D 파일 입력 + + + + 3D 파일 형식 유형 + + 가능한 값: `FBX` + + + + 컴포넌트로 분할할 3D 파일의 URL + + 형식: `uri` + + +Router가 `GET /v2/models/tencent/hunyuan-3d-part/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + 오류가 없을 때 빈 문자열로 문서화되는 Tencent의 오류 코드입니다. `Status`가 있으면 Router는 이 값을 읽지 않습니다. + + + + 오류가 없을 때 빈 문자열로 문서화되는 Tencent의 오류 메시지입니다. `Status`가 있으면 Router는 이 값을 읽지 않습니다. + + + + Tencent와 함께 문제를 해결하기 위한 Tencent 자체의 요청 식별자입니다. 작업 ID도 아니고 애셋도 아닙니다. + + + + 완료된 작업에서 생성된 3D 파일입니다. Router가 반환하는 문서에 존재하며 비어 있지 않고, 최소 한 개 항목에 가져올 수 있는 `Url`이 포함됩니다. 이 링크는 Tencent 자체 링크이며 24시간 동안 유효한 것으로 문서화되어 있습니다. + + + + 이미지 미리보기 URL + + 형식: `uri` + + + + 3D 파일 형식 + + 가능한 값: `GLB`, `OBJ` + + + + 파일 URL(24시간 동안 유효) + + 형식: `uri` + + + + 가능한 값: `DONE` + + +## 예시 + +### 입력 + +```json +{ + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + } +} +``` + +### 출력 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-part/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-part/parts.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx b/ko/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx new file mode 100644 index 000000000..a6e5db257 --- /dev/null +++ b/ko/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx @@ -0,0 +1,183 @@ +--- +title: "Comfy Router로 Hunyuan 3D Smart Topology 사용하기" +description: "Comfy Router를 통해 tencent/hunyuan-3d-smart-topology를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Hunyuan 3D Smart Topology" +translationSourceHash: f777e523 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx +translationBlockHashes: + "_intro": d7aa51d0 + "Quick start": 8de9c627 + "Schema": 31015a4b + "Examples": 6f3af127 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-smart-topology.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-smart-topology`의 API 레퍼런스로, Tencent에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `tencent/hunyuan-3d-smart-topology` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-smart-topology", + { + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-smart-topology", { + File3D: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## 스키마 + +### 입력 + + + 폴리곤 감소 수준. + + 가능한 값: `high`, `medium`, `low` + + + + 스마트 토폴로지를 위한 3D 파일 입력 + + + + 3D 파일 형식 유형 + + 가능한 값: `OBJ`, `GLB` + + + + 리토폴로지할 3D 파일의 URL + + 형식: `uri` + + + + 출력 메시의 폴리곤 유형. 기본값은 삼각형입니다. + + 가능한 값: `triangle`, `quadrilateral` + + +Router가 `GET /v2/models/tencent/hunyuan-3d-smart-topology/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 기준이 되는 것과 동일한 문서입니다. + +### 출력 + + + + + + + Tencent의 오류 코드로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 존재하면 이 값을 읽지 않습니다. + + + + Tencent의 오류 메시지로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 존재하면 이 값을 읽지 않습니다. + + + + Tencent 자체의 요청 식별자로, Tencent와 함께 문제를 해결할 때 사용합니다. 작업 ID도 아니고 에셋도 아닙니다. + + + + 완료된 작업에서 생성된 3D 파일입니다. Router가 반환하는 문서에 존재하며 비어 있지 않고, 최소 한 개 항목에 가져올 수 있는 `Url`이 포함됩니다. 이 링크는 Tencent 자체의 것으로 24시간 동안 유효한 것으로 문서화되어 있습니다. + + + + 이미지 미리보기 URL + + 형식: `uri` + + + + 3D 파일 형식 + + 가능한 값: `GLB`, `OBJ` + + + + 파일 URL(24시간 동안 유효) + + 형식: `uri` + + + + 가능한 값: `DONE` + + +## 예시 + +### 입력 + +```json +{ + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 출력 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-smart-topology/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-smart-topology/retopologised.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx b/ko/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx new file mode 100644 index 000000000..ddab0b092 --- /dev/null +++ b/ko/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx @@ -0,0 +1,196 @@ +--- +title: "Comfy Router로 Hunyuan 3D Texture Edit 사용하기" +description: "Comfy Router를 통해 tencent/hunyuan-3d-texture-edit를 호출합니다: endpoint, 요청 형태 및 Router가 반환하는 응답." +sidebarTitle: "Hunyuan 3D Texture Edit" +translationSourceHash: 7c8d6684 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx +translationBlockHashes: + "_intro": d89c092e + "Quick start": 0d5af5f1 + "Schema": e475b723 + "Examples": d9b41615 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/tencent/hunyuan-3d-texture-edit.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Tencent가 제공하고 Comfy Router가 서비스하는 `tencent/hunyuan-3d-texture-edit`에 대한 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `tencent/hunyuan-3d-texture-edit` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-texture-edit", + { + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + "Prompt": "a kitten", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-texture-edit", { + File3D: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + Prompt: "a kitten", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}, \"Prompt\": \"a kitten\"}" +``` + + +## Schema + +### 입력 + + + PBR 텍스처 파라미터를 활성화할지 여부이며, Prompt를 사용할 때만 지원됩니다. + + + + 텍스처 편집을 위한 3D 파일 입력 + + + + 3D 파일 형식 유형 + + 가능한 값: `FBX` + + + + 텍스처를 편집할 3D 파일의 URL + + 형식: `uri` + + + + 참조 이미지 - Base64 데이터 또는 이미지 URL + + + + Base64로 인코딩된 이미지입니다. 해상도는 한 변당 128-4096이며, 변환된 Base64는 10MB 미만이어야 합니다. 형식은 jpg, jpeg, png입니다. + + + + 이미지 URL입니다. Base64와 Url을 모두 제공하면 Url이 우선합니다. + + 형식: `uri` + + + + 텍스처 편집을 설명합니다. Image 또는 Prompt 중 하나가 필수이며, 둘은 함께 사용할 수 없습니다. + + +`GET /v2/models/tencent/hunyuan-3d-texture-edit/openapi.json`에서 Router가 제공하는 스키마에서 생성되며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 문서와 동일합니다. + +### 출력 + + + + + + + Tencent의 오류 코드로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 존재하면 이 값을 읽지 않습니다. + + + + Tencent의 오류 메시지로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 존재하면 이 값을 읽지 않습니다. + + + + Tencent 자체 요청 식별자로, Tencent와 함께 문제를 해결할 때 사용합니다. 작업 ID도, 자산도 아닙니다. + + + + 완료된 작업에서 생성된 3D 파일입니다. Router가 반환하는 문서에 존재하며 비어 있지 않고, 최소 한 개 항목에 가져올 수 있는 `Url`이 포함됩니다. 링크는 Tencent 자체 링크이며 24시간 동안 유효한 것으로 문서화되어 있습니다. + + + + 이미지 미리보기 URL + + 형식: `uri` + + + + 3D 파일 형식 + + 가능한 값: `GLB`, `OBJ` + + + + 파일 URL (24시간 동안 유효) + + 형식: `uri` + + + + 가능한 값: `DONE` + + +## 예시 + +### 입력 + +```json +{ + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + }, + "Prompt": "a kitten" +} +``` + +### 출력 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-texture-edit/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-texture-edit/retextured.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx b/ko/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx new file mode 100644 index 000000000..35e7b1921 --- /dev/null +++ b/ko/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx @@ -0,0 +1,171 @@ +--- +title: "Comfy Router로 Hunyuan 3D Uv 사용하기" +description: "Comfy Router를 통해 tencent/hunyuan-3d-uv를 호출합니다: 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Hunyuan 3D Uv" +translationSourceHash: 41573987 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx +translationBlockHashes: + "_intro": cc16c86e + "Quick start": d368c7e6 + "Schema": 925d33c0 + "Examples": dcaa8745 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-uv.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Tencent의 모델인 `tencent/hunyuan-3d-uv`에 대한 API 레퍼런스이며, Comfy Router에서 서빙합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용합니다. cURL 스니펫은 동일한 호출을 raw HTTP로 수행한 것입니다. + +**모델 ID:** `tencent/hunyuan-3d-uv` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-uv", + { + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-uv", { + File: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## 스키마 + +### 입력 + + + UV 언래핑을 위한 3D 파일 입력 + + + + 3D 파일 형식 유형 + + 가능한 값: `FBX`, `OBJ`, `GLB` + + + + UV 언래핑이 필요한 3D 파일의 URL + + 형식: `uri` + + +Router가 `GET /v2/models/tencent/hunyuan-3d-uv/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + + + + + 텐센트의 오류 코드로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 있으면 이 값을 읽지 않습니다. + + + + 텐센트의 오류 메시지로, 오류가 없을 때는 빈 문자열로 문서화되어 있습니다. Router는 `Status`가 있으면 이 값을 읽지 않습니다. + + + + 텐센트 자체 요청 식별자로, 텐센트와 함께 문제를 해결할 때 사용합니다. 작업 ID도 아니고 에셋도 아닙니다. + + + + 완료된 작업에서 생성된 3D 파일입니다. Router가 반환하는 문서에 존재하며 비어 있지 않고, 최소 한 개 항목에 가져올 수 있는 `Url`이 포함됩니다. 링크는 텐센트 자체 링크이며 24시간 동안 유효한 것으로 문서화되어 있습니다. + + + + 미리보기 이미지 URL + + 형식: `uri` + + + + 3D 파일 형식 + + 가능한 값: `GLB`, `OBJ` + + + + 파일 URL (24시간 동안 유효) + + 형식: `uri` + + + + 가능한 값: `DONE` + + +## 예시 + +### 입력 + +```json +{ + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 출력 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-uv/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-uv/unwrapped.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx new file mode 100644 index 000000000..35b39520c --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx @@ -0,0 +1,240 @@ +--- +title: "Comfy Router로 Veo 2.0 Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-2.0-generate-001을 호출합니다. 엔드포인트, 요청 형태, Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Veo 2.0 Generate 001" +translationSourceHash: 7d6a780f +translationFrom: development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 0db7d712 + "Quick start": f29101c0 + "Schema": fb4a9a14 + "Examples": cfcc0f09 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-2.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 Veo에서 제공하는 `veo/veo-2.0-generate-001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `veo/veo-2.0-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-2.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-2.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-2.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 6, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-2.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":6,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 비디오 생성을 안내하는 선택적 이미지 + + + + 형식: `byte` + + + + + + + + + + + + 비디오에 대한 텍스트 설명 + + + + + + + + + + + + + + + + + + + + + + + + 생성된 비디오에 등장하는 사람을 제어합니다. `dont_allow`, `allow_adult`, `allowAll`은 Vertex AI 자체 표기이며, VeoGenVidRequest가 동일한 필드에 대해 게시하는 값입니다. `ALLOW`와 `BLOCK`은 이 컴포넌트가 Router에서 작성되기 이전에 이를 기반으로 생성된 클라이언트와의 호환성을 위해 유지됩니다. Veo2GenVidRequest 상단의 참고 사항을 확인하세요. + + 가능한 값: `ALLOW`, `BLOCK`, `dont_allow`, `allow_adult`, `allowAll` + + + + + + + + 형식: `uint32` + + + + 비디오를 업로드할 선택적 Cloud Storage URI + + +Router가 `GET /v2/models/veo/veo-2.0-generate-001/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다. + +### 출력 + + + 작업이 완료되었는지 여부 + + + + 작업이 실패한 경우 표시되는 오류 세부 정보 + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + done이 참일 때 표시되는 예측 응답 + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형(video/mp4) + + +## 예제 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/ko/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..92a72e25e --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx @@ -0,0 +1,391 @@ +--- +title: "Comfy Router로 Veo 3.0 Fast Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-3.0-fast-generate-001을 호출하는 방법을 설명합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Veo 3.0 Fast Generate 001" +translationSourceHash: a31a905f +translationFrom: development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": a97006f3 + "Quick start": 0698269f + "Schema": 9ed9aea3 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.0-fast-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-fast-generate-001`에 대한 API Reference입니다. Veo에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `veo/veo-3.0-fast-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 카메라 모션 유형입니다. 이미지가 제공되어야 합니다. + + 가능한 값: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + 비디오 생성을 유도하는 선택적 첫 프레임 이미지입니다. + + + + Base64로 인코딩된 이미지 데이터입니다. + + 형식: `byte` + + + + 이미지의 Cloud Storage URI입니다. + + + + 이미지의 MIME 유형입니다(image/jpeg 또는 image/png). + + 가능한 값: `image/jpeg`, `image/png` + + + + 선택적 마지막 프레임 이미지입니다. image와 함께 사용하여 첫 프레임과 마지막 프레임 사이의 비디오를 생성합니다. Veo 3.0+ 모델에서 지원됩니다. + + + + Base64로 인코딩된 이미지 데이터입니다. + + 형식: `byte` + + + + 이미지의 Cloud Storage URI입니다. + + + + 이미지의 MIME 유형입니다(image/jpeg 또는 image/png). + + 가능한 값: `image/jpeg`, `image/png` + + + + 비디오 편집을 위한 선택적 마스크입니다. 입력 비디오에 적용됩니다. + + + + Base64로 인코딩된 마스크 바이트입니다. + + 형식: `byte` + + + + 마스크 파일의 Cloud Storage URI입니다. + + + + 마스크가 적용되는 방식입니다. + + 가능한 값: `insert`, `remove`, `remove_static`, `outpaint` + + + + 마스크의 MIME 유형입니다(image/png, image/jpeg, image/webp 또는 비디오 형식). + + + + 생성할 비디오에 대한 텍스트 설명입니다. + + + + 비디오 생성을 유도하는 선택적 참조 이미지입니다. 최대 3개의 asset 이미지 또는 1개의 style 이미지를 지원합니다. Veo 3.1 모델(미리보기)에서 지원됩니다. + + + + + + + + Base64로 인코딩된 이미지 데이터입니다. + + 형식: `byte` + + + + 이미지의 Cloud Storage URI입니다. + + + + 이미지의 MIME 유형입니다(image/jpeg 또는 image/png). + + 가능한 값: `image/jpeg`, `image/png` + + + + 참조 이미지에 대한 선택적 식별자입니다. + + + + 참조 이미지의 유형입니다. + + 가능한 값: `asset`, `style` + + + + 비디오 확장 또는 편집을 위한 선택적 입력 비디오입니다. image 및 referenceImages와 함께 사용할 수 없습니다. + + + + Base64로 인코딩된 비디오 바이트입니다. + + 형식: `byte` + + + + 입력 비디오의 Cloud Storage URI입니다. + + + + 비디오의 MIME 유형입니다. + + 가능한 값: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 생성된 비디오의 화면 비율입니다. 기본값: 16:9 + + 가능한 값: `16:9`, `9:16` + + + + 비디오 압축 품질입니다. 기본값: optimized + + 가능한 값: `optimized`, `lossless` + + + + 생성된 비디오의 목표 재생 시간(초)입니다. Veo 2: 5-8. Veo 3/3.1: 4, 6 또는 8. 기본값: 8 + + + + 더 높은 품질을 위해 프롬프트를 자동으로 개선합니다. 기본값은 참입니다. + + + + 생성된 비디오의 프레임 속도(초당 프레임 수)입니다. + + + + 비디오와 함께 오디오를 생성할지 여부입니다. 기본값은 참입니다. Veo 3.0+ 모델에서 지원됩니다. + + + + 생성된 비디오에서 피해야 할 내용을 설명하는 텍스트입니다. + + + + 생성된 비디오에서 사람을 제어합니다. 기본값: allow_adult + + 가능한 값: `dont_allow`, `allow_adult`, `allowAll` + + + + 진행 상황 업데이트를 위한 Cloud Pub/Sub 주제입니다(projects/\{project}/topics/\{topic}). + + + + 입력 이미지에 대한 크기 조정 방식입니다. 기본값: pad + + 가능한 값: `pad`, `crop` + + + + 출력 비디오 해상도입니다. Veo 3.0+ 모델에서 지원됩니다. 기본값: 720p + + 가능한 값: `720p`, `1080p`, `4k` + + + + 생성할 비디오 수입니다. 지정하지 않으면 비디오 1개가 생성됩니다. + + Range: `1` to `4` + + + + Random seed for deterministic output. Different seeds used per video if sampleCount > 1. + + Format: `uint32` + + + + Cloud Storage URI (gs://) for saving generated videos + + + + Operation type for the video generation request + + Possible values: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Generated from the schema Router serves at `GET /v2/models/veo/veo-3.0-fast-generate-001/openapi.json`, the same document it validates a call against before the request reaches the provider.### 출력 + + + 작업이 완료되었는지 여부 + + + + 오류 세부 정보, 작업이 실패한 경우 제공됨 + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + 예측 응답으로, done이 참일 때 제공됨 + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형 (video/mp4) + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/ko/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx new file mode 100644 index 000000000..a0aea7fcd --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router로 Veo 3.0 Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-3.0-generate-001을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Veo 3.0 Generate 001" +translationSourceHash: 56aa1769 +translationFrom: development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": c87da726 + "Quick start": 69eae087 + "Schema": e9acd9e6 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-generate-001`에 대한 API 레퍼런스이며, Comfy Router가 Veo에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `veo/veo-3.0-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 카메라 모션 유형입니다. 이미지를 제공해야 합니다. + + 가능한 값: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + 비디오 생성을 유도하는 선택적 첫 프레임 이미지 + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 선택적 마지막 프레임 이미지입니다. image와 함께 사용하여 첫 프레임과 마지막 프레임 사이의 비디오를 생성합니다. Veo 3.0+ 모델에서 지원됩니다. + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 비디오 편집을 위한 선택적 마스크입니다. 입력 비디오에 적용됩니다. + + + + Base64로 인코딩된 마스크 바이트 + + 형식: `byte` + + + + 마스크 파일의 Cloud Storage URI + + + + 마스크가 적용되는 방식 + + 가능한 값: `insert`, `remove`, `remove_static`, `outpaint` + + + + 마스크의 MIME 유형 (image/png, image/jpeg, image/webp 또는 비디오 형식) + + + + 생성할 비디오에 대한 텍스트 설명 + + + + 비디오 생성을 유도하는 선택적 참조 이미지입니다. 최대 3개의 에셋 이미지 또는 1개의 스타일 이미지를 지원합니다. Veo 3.1 모델(미리보기)에서 지원됩니다. + + + + + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 참조 이미지의 선택적 식별자 + + + + 참조 이미지의 유형 + + 가능한 값: `asset`, `style` + + + + 비디오 확장 또는 편집을 위한 선택적 입력 비디오입니다. image 및 referenceImages와 함께 사용할 수 없습니다. + + + + Base64로 인코딩된 비디오 바이트 + + 형식: `byte` + + + + 입력 비디오의 Cloud Storage URI + + + + 비디오의 MIME 유형 + + 가능한 값: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 생성된 비디오의 화면 비율입니다. 기본값: 16:9 + + 가능한 값: `16:9`, `9:16` + + + + 비디오 압축 품질입니다. 기본값: optimized + + 가능한 값: `optimized`, `lossless` + + + + 생성된 비디오의 목표 재생 시간(초)입니다. Veo 2: 5-8. Veo 3/3.1: 4, 6 또는 8. 기본값: 8 + + + + 더 높은 품질을 위해 프롬프트를 자동으로 개선합니다. 기본값은 참입니다. + + + + 생성된 비디오의 프레임 레이트(초당 프레임 수) + + + + 비디오와 함께 오디오를 생성할지 여부입니다. 기본값은 참입니다. Veo 3.0+ 모델에서 지원됩니다. + + + + 생성된 비디오에서 피해야 할 내용을 설명하는 텍스트 + + + + 생성된 비디오의 인물을 제어합니다. 기본값: allow_adult + + 가능한 값: `dont_allow`, `allow_adult`, `allowAll` + + + + 진행 상황 업데이트를 위한 Cloud Pub/Sub 토픽 (projects/\{project}/topics/\{topic}) + + + + 입력 이미지의 크기 조정 방식입니다. 기본값: pad + + 가능한 값: `pad`, `crop` + + + + 출력 비디오 해상도입니다. Veo 3.0+ 모델에서 지원됩니다. 기본값: 720p + + 가능한 값: `720p`, `1080p`, `4k` + + + + 생성할 비디오 수입니다. 지정하지 않으면 비디오 1개가 생성됩니다. + + 범위: `1` ~ `4` + + + + 결정론적 출력을 위한 랜덤 시드입니다. sampleCount > 1인 경우 비디오마다 다른 시드가 사용됩니다. + + 형식: `uint32` + + + + 생성된 비디오를 저장하기 위한 Cloud Storage URI(gs://) + + + + 비디오 생성 요청의 작업 유형입니다. + + 가능한 값: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Router가 `GET /v2/models/veo/veo-3.0-generate-001/openapi.json`에서 제공하는 스키마를 기반으로 생성되었습니다. 이 문서는 요청이 공급자에 도달하기 이전에 Router가 호출을 검증할 때 기준으로 삼는 것과 동일한 문서입니다.### 출력 + + + 작업이 완료되었는지 여부 + + + + 오류 세부 정보. 작업이 실패한 경우 제공됩니다. + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + 예측 응답. done이 참일 때 제공됩니다. + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형(video/mp4) + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ko/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx new file mode 100644 index 000000000..a7a5d9453 --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx @@ -0,0 +1,391 @@ +--- +title: "Comfy Router로 Veo 3.1 Fast Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-3.1-fast-generate-001을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Veo 3.1 Fast Generate 001" +translationSourceHash: 57aa0fe0 +translationFrom: development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 25f9d753 + "Quick start": 690fb658 + "Schema": 7a21ed84 + "Examples": 88e27039 +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/veo/veo-3.1-fast-generate-001.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Veo가 제공하는 `veo/veo-3.1-fast-generate-001`에 대한 API 레퍼런스이며, Comfy Router를 통해 서비스됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `veo/veo-3.1-fast-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 카메라 모션 유형입니다. 이미지를 제공해야 합니다. + + 사용 가능한 값: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + 비디오 생성을 유도하는 선택적 첫 프레임 이미지 + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 사용 가능한 값: `image/jpeg`, `image/png` + + + + 선택적 마지막 프레임 이미지입니다. image와 함께 사용하여 첫 프레임과 마지막 프레임 사이의 비디오를 생성합니다. Veo 3.0+ 모델에서 지원됩니다. + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 사용 가능한 값: `image/jpeg`, `image/png` + + + + 비디오 편집을 위한 선택적 마스크입니다. 입력 비디오에 적용됩니다. + + + + Base64로 인코딩된 마스크 바이트 + + 형식: `byte` + + + + 마스크 파일의 Cloud Storage URI + + + + 마스크가 적용되는 방식 + + 사용 가능한 값: `insert`, `remove`, `remove_static`, `outpaint` + + + + 마스크의 MIME 유형 (image/png, image/jpeg, image/webp 또는 비디오 형식) + + + + 생성할 비디오에 대한 텍스트 설명 + + + + 비디오 생성을 유도하는 선택적 참조 이미지입니다. 최대 3개의 asset 이미지 또는 1개의 style 이미지를 지원합니다. Veo 3.1 모델(미리보기)에서 지원됩니다. + + + + + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 사용 가능한 값: `image/jpeg`, `image/png` + + + + 참조 이미지의 선택적 식별자 + + + + 참조 이미지의 유형 + + 사용 가능한 값: `asset`, `style` + + + + 비디오 확장 또는 편집을 위한 선택적 입력 비디오입니다. image 및 referenceImages와 호환되지 않습니다. + + + + Base64로 인코딩된 비디오 바이트 + + 형식: `byte` + + + + 입력 비디오의 Cloud Storage URI + + + + 비디오의 MIME 유형 + + 사용 가능한 값: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 생성된 비디오의 화면 비율입니다. 기본값: 16:9 + + 사용 가능한 값: `16:9`, `9:16` + + + + 비디오 압축 품질입니다. 기본값: optimized + + 사용 가능한 값: `optimized`, `lossless` + + + + 생성된 비디오의 목표 재생 시간(초)입니다. Veo 2: 5-8. Veo 3/3.1: 4, 6 또는 8. 기본값: 8 + + + + 더 높은 품질을 위해 프롬프트를 자동으로 개선합니다. 기본값은 참입니다. + + + + 생성된 비디오의 프레임 속도(초당 프레임 수) + + + + 비디오와 함께 오디오를 생성할지 여부입니다. 기본값은 참입니다. Veo 3.0+ 모델에서 지원됩니다. + + + + 생성된 비디오에서 피해야 할 사항을 설명하는 텍스트 + + + + 생성된 비디오에서 사람을 제어합니다. 기본값: allow_adult + + 사용 가능한 값: `dont_allow`, `allow_adult`, `allowAll` + + + + 진행 상황 업데이트를 위한 Cloud Pub/Sub 주제 (projects/\{project}/topics/\{topic}) + + + + 입력 이미지의 크기 조정 방식입니다. 기본값: pad + + 사용 가능한 값: `pad`, `crop` + + + + 출력 비디오 해상도입니다. Veo 3.0+ 모델에서 지원됩니다. 기본값: 720p + + 사용 가능한 값: `720p`, `1080p`, `4k` + + + + 생성할 비디오 수입니다. 지정하지 않으면 비디오 1개가 생성됩니다. + + Range: `1` to `4` + + + + Random seed for deterministic output. Different seeds used per video if sampleCount > 1. + + Format: `uint32` + + + + Cloud Storage URI (gs://) for saving generated videos + + + + Operation type for the video generation request + + Possible values: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Generated from the schema Router serves at `GET /v2/models/veo/veo-3.1-fast-generate-001/openapi.json`, the same document it validates a call against before the request reaches the provider.### 출력 + + + 작업이 완료되었는지 여부 + + + + 오류 세부 정보이며, 작업이 실패한 경우 표시됩니다 + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + 예측 응답이며, done이 참일 때 표시됩니다 + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형(video/mp4) + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/ko/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx new file mode 100644 index 000000000..1abde6cab --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router로 Veo 3.1 Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-3.1-generate-001을 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Veo 3.1 Generate 001" +translationSourceHash: 82b6c3ea +translationFrom: development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx +translationBlockHashes: + "_intro": 0925e6d2 + "Quick start": 14060114 + "Schema": bc219941 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Veo가 제공하고 Comfy Router가 서비스하는 `veo/veo-3.1-generate-001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `veo/veo-3.1-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 카메라 움직임 유형. 이미지를 제공해야 합니다. + + 가능한 값: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + 비디오 생성을 유도하는 선택적 첫 프레임 이미지 + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 선택적 마지막 프레임 이미지. image와 함께 사용하여 첫 프레임과 마지막 프레임 사이의 비디오를 생성합니다. Veo 3.0+ 모델에서 지원됩니다. + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 비디오 편집을 위한 선택적 마스크. 입력 비디오에 적용됩니다. + + + + Base64로 인코딩된 마스크 바이트 + + 형식: `byte` + + + + 마스크 파일의 Cloud Storage URI + + + + 마스크가 적용되는 방식 + + 가능한 값: `insert`, `remove`, `remove_static`, `outpaint` + + + + 마스크의 MIME 유형 (image/png, image/jpeg, image/webp 또는 비디오 형식) + + + + 생성할 비디오에 대한 텍스트 설명 + + + + 비디오 생성을 유도하는 선택적 참조 이미지. 최대 3개의 에셋 이미지 또는 1개의 스타일 이미지를 지원합니다. Veo 3.1 모델(미리보기)에서 지원됩니다. + + + + + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 참조 이미지에 대한 선택적 식별자 + + + + 참조 이미지의 유형 + + 가능한 값: `asset`, `style` + + + + 비디오 확장 또는 편집을 위한 선택적 입력 비디오. image 및 referenceImages와 호환되지 않습니다. + + + + Base64로 인코딩된 비디오 바이트 + + 형식: `byte` + + + + 입력 비디오의 Cloud Storage URI + + + + 비디오의 MIME 유형 + + 가능한 값: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 생성된 비디오의 화면 비율. 기본값: 16:9 + + 가능한 값: `16:9`, `9:16` + + + + 비디오 압축 품질. 기본값: optimized + + 가능한 값: `optimized`, `lossless` + + + + 생성된 비디오의 목표 재생 시간(초). Veo 2: 5-8. Veo 3/3.1: 4, 6 또는 8. 기본값: 8 + + + + 더 높은 품질을 위해 프롬프트를 자동으로 개선합니다. 기본값은 참입니다. + + + + 생성된 비디오의 프레임 레이트(초당 프레임 수) + + + + 비디오와 함께 오디오를 생성할지 여부입니다. 기본값은 참입니다. Veo 3.0+ 모델에서 지원됩니다. + + + + 생성된 비디오에서 피해야 할 내용을 설명하는 텍스트 + + + + 생성된 비디오의 인물을 제어합니다. 기본값: allow_adult + + 가능한 값: `dont_allow`, `allow_adult`, `allowAll` + + + + 진행 상황 업데이트를 위한 Cloud Pub/Sub 토픽 (projects/\{project}/topics/\{topic}) + + + + 입력 이미지의 크기 조정 방식. 기본값: pad + + 가능한 값: `pad`, `crop` + + + + 출력 비디오 해상도. Veo 3.0+ 모델에서 지원됩니다. 기본값: 720p + + 가능한 값: `720p`, `1080p`, `4k` + + + + 생성할 비디오 수입니다. 지정하지 않으면 비디오 1개가 생성됩니다. + + 범위: `1`부터 `4`까지 + + + + 결정론적 출력을 위한 랜덤 시드입니다. sampleCount > 1이면 비디오마다 다른 시드가 사용됩니다. + + 형식: `uint32` + + + + 생성된 비디오를 저장하기 위한 Cloud Storage URI(gs://) + + + + 비디오 생성 요청의 작업 유형 + + 가능한 값: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Router가 `GET /v2/models/veo/veo-3.1-generate-001/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 작업이 완료되었는지 여부 + + + + 오류 세부 정보이며, 작업이 실패한 경우에 표시됩니다 + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + 예측 응답이며, done이 참일 때 표시됩니다 + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형 (video/mp4) + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ko/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx b/ko/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx new file mode 100644 index 000000000..12223338d --- /dev/null +++ b/ko/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "Comfy Router로 Veo 3.1 Lite Generate 001 사용하기" +description: "Comfy Router를 통해 veo/veo-3.1-lite-generate-001을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Veo 3.1 Lite Generate 001" +translationSourceHash: b1314fef +translationFrom: development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx +translationBlockHashes: + "_intro": 17d94e61 + "Quick start": c437f227 + "Schema": bf6fab55 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-lite-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Veo에서 Comfy Router를 통해 제공되는 `veo/veo-3.1-lite-generate-001`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내기하세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**모델 ID:** `veo/veo-3.1-lite-generate-001` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-lite-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-lite-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## 스키마 + +### 입력 + + + + + + + 카메라 모션 유형. 이미지가 제공되어야 합니다. + + 가능한 값: `fixed`, `pan_left`, `pan_right`, `tilt_up`, `tilt_down`, `truck_left`, `truck_right`, `pedestal_up`, `pedestal_down`, `push_in`, `pull_out` + + + + 비디오 생성을 안내할 선택적 첫 프레임 이미지 + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 선택적 마지막 프레임 이미지. image와 함께 사용하여 첫 프레임과 마지막 프레임 사이의 비디오를 생성합니다. Veo 3.0+ 모델에서 지원됩니다. + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 비디오 편집용 선택적 마스크. 입력 비디오에 적용됩니다. + + + + Base64로 인코딩된 마스크 바이트 + + 형식: `byte` + + + + 마스크 파일의 Cloud Storage URI + + + + 마스크가 적용되는 방식 + + 가능한 값: `insert`, `remove`, `remove_static`, `outpaint` + + + + 마스크의 MIME 유형 (image/png, image/jpeg, image/webp 또는 비디오 형식) + + + + 생성할 비디오에 대한 텍스트 설명 + + + + 비디오 생성을 안내할 선택적 참조 이미지. 최대 3개의 asset 이미지 또는 1개의 style 이미지를 지원합니다. Veo 3.1 모델(미리보기)에서 지원됩니다. + + + + + + + + Base64로 인코딩된 이미지 데이터 + + 형식: `byte` + + + + 이미지의 Cloud Storage URI + + + + 이미지의 MIME 유형 (image/jpeg 또는 image/png) + + 가능한 값: `image/jpeg`, `image/png` + + + + 참조 이미지의 선택적 식별자 + + + + 참조 이미지의 유형 + + 가능한 값: `asset`, `style` + + + + 비디오 확장 또는 편집을 위한 선택적 입력 비디오. image 및 referenceImages와 함께 사용할 수 없습니다. + + + + Base64로 인코딩된 비디오 바이트 + + 형식: `byte` + + + + 입력 비디오의 Cloud Storage URI + + + + 비디오의 MIME 유형 + + 가능한 값: `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/x-flv` + + + + + + + + 생성된 비디오의 화면 비율. 기본값: 16:9 + + 가능한 값: `16:9`, `9:16` + + + + 비디오 압축 품질. 기본값: optimized + + 가능한 값: `optimized`, `lossless` + + + + 생성된 비디오의 목표 재생 시간(초). Veo 2: 5-8. Veo 3/3.1: 4, 6 또는 8. 기본값: 8 + + + + 더 높은 품질을 위해 프롬프트를 자동으로 개선합니다. 기본값은 참입니다. + + + + 생성된 비디오의 초당 프레임 수 + + + + 비디오와 함께 오디오를 생성할지 여부. 기본값은 참입니다. Veo 3.0+ 모델에서 지원됩니다. + + + + 생성된 비디오에서 피해야 할 내용을 설명하는 텍스트 + + + + 생성된 비디오의 사람을 제어합니다. 기본값: allow_adult + + 가능한 값: `dont_allow`, `allow_adult`, `allowAll` + + + + 진행 상황 업데이트를 위한 Cloud Pub/Sub 주제 (projects/\{project}/topics/\{topic}) + + + + 입력 이미지의 크기 조정 방식. 기본값: pad + + 가능한 값: `pad`, `crop` + + + + 출력 비디오 해상도. Veo 3.0+ 모델에서 지원됩니다. 기본값: 720p + + 가능한 값: `720p`, `1080p`, `4k` + + + + 생성할 비디오 수입니다. 지정하지 않으면 비디오 1개가 생성됩니다. + + 범위: `1` ~ `4` + + + + 결정적 출력을 위한 랜덤 시드입니다. sampleCount > 1이면 비디오마다 서로 다른 시드가 사용됩니다. + + 형식: `uint32` + + + + 생성된 비디오를 저장하기 위한 Cloud Storage URI (gs://) + + + + 비디오 생성 요청의 작업 유형 + + 가능한 값: `textToVideo`, `imageToVideo`, `referenceToVideo`, `edit`, `extend`, `upscale` + + +Router가 `GET /v2/models/veo/veo-3.1-lite-generate-001/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + 작업이 완료되었는지 여부 + + + + 오류 세부 정보이며, 작업이 실패한 경우 표시됩니다 + + + + gRPC 오류 코드 + + + + 오류 메시지 + + + + 작업 리소스 이름 + + + + 예측 응답이며, done이 참일 때 표시됩니다 + + + + + + + + 책임 있는 AI 정책에 의해 필터링된 비디오 수 + + + + 책임 있는 AI 정책에 의해 비디오가 필터링된 이유 + + + + + + + + Base64로 인코딩된 비디오 콘텐츠 + + + + 생성된 비디오의 Cloud Storage URI + + + + 비디오 MIME 유형(video/mp4) + + +## 예시 + +### 입력 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 출력 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx new file mode 100644 index 000000000..8a0d68437 --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx @@ -0,0 +1,427 @@ +--- +title: "Comfy Router로 HappyHorse 1.0 I2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.0-i2v을 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.0 I2V" +translationSourceHash: e2663082 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx +translationBlockHashes: + "_intro": 24c1988d + "Quick start": 810ab797 + "Schema": 7ad667d0 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. 이 디렉터리의 code.yaml을 편집한 뒤 `pnpm code-pages:gen`을 실행하세요. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 I2V API 레퍼런스입니다. HappyHorse 1.0 이미지 기반 비디오 생성은 정지된 첫 프레임을 애니메이션화하고 동일한 패스에서 동기화된 오디오를 렌더링합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `wan/happyhorse-1.0-i2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link type과 first_frame/last_frame type은 + 동일한 요청 내에서 함께 사용할 수 없습니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 type + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 대상을 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 2개는 각각 최대 2.5초, 비디오 3개는 그보다 비례하여 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델용 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 길이(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부입니다. 기본값은 참입니다 + + + + 생성되는 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어의 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.0-i2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함한 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx new file mode 100644 index 000000000..a7b262fc3 --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy Router로 HappyHorse 1.0 R2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.0-r2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.0 R2V" +translationSourceHash: 03ea8ead +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx +translationBlockHashes: + "_intro": c9fdbfc5 + "Quick start": 477da529 + "Schema": 604ab7a9 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 R2V API 레퍼런스입니다. HappyHorse 1.0 레퍼런스 기반 비디오 생성은 하나 이상의 레퍼런스 이미지에 담긴 대상을 새로운 장면에서도 일관되게 유지하며, 프롬프트에서 character1, character2 등으로 지정해 참조합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `wan/happyhorse-1.0-r2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 지정합니다. +각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1개), last_frame (최대 1개), reference_image (최대 10개), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1개, link와 함께 사용할 수 없음), link (최대 1개, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트는 비디오 화면에 나타나지 않았으면 하는 콘텐츠를 설명하는 데 사용됩니다. + + + + 텍스트 프롬프트. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과하는 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1이 길가에서 노래하고, Character2가 그 옆에서 춤춘다" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 비디오 1개는 최대 5초, 2개는 각각 최대 2.5초, 3개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 지원 없음) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 사용 여부. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 결정됩니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 지원 없음) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 해상도와 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델 생성 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.0-r2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함한 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 총 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 응답의 최상위(ROOT)에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 응답의 최상위(ROOT)에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx new file mode 100644 index 000000000..221d8eb22 --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx @@ -0,0 +1,427 @@ +--- +title: "Comfy Router로 HappyHorse 1.0 T2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.0-t2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.0 T2V" +translationSourceHash: 8e898153 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx +translationBlockHashes: + "_intro": 7555288c + "Quick start": 88660925 + "Schema": 3037f420 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 T2V API 레퍼런스입니다. HappyHorse 1.0 텍스트 기반 비디오 생성은 프롬프트 하나만으로 동기화된 오디오가 포함된 짧은 비디오를 만듭니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `wan/happyhorse-1.0-t2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1개), last_frame (최대 1개), reference_image (최대 10개), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1개, link와 함께 사용할 수 없음), link (최대 1개, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다(Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 역방향 프롬프트 단어로, 비디오 화면에 나타나지 않았으면 하는 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과한 콘텐츠는 잘립니다). +참조 비디오가 여러 개인 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 참조 비디오 +순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드에서는 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 2개는 각각 최대 2.5초, 비디오 3개는 그보다 비례하여 짧아집니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약이 없습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음, -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)는 입력 미디어 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P(기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P(업스트림 기본값 1080P) +이 프록시는 해상도와 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.0-t2v/openapi.json`에서 제공하는 스키마에서 생성되었습니다. 이 문서는 요청이 공급자에 도달하기 전에 호출을 검증할 때 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간은 24시간입니다 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않습니다). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않습니다). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx new file mode 100644 index 000000000..fcb6cff3e --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx @@ -0,0 +1,439 @@ +--- +title: "Comfy Router로 HappyHorse 1.0 Video Edit 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.0-video-edit을 호출하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.0 Video Edit" +translationSourceHash: 7bbd47ee +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx +translationBlockHashes: + "_intro": 43ae28bb + "Quick start": 83992b09 + "Schema": 7f54592c + "Examples": a41df668 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 Video Edit API 레퍼런스. HappyHorse 1.0 비디오 편집은 텍스트 지시문에 따라 기존 클립을 다시 작성하며, 선택적으로 참조 이미지를 가이드로 사용할 수 있습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `wan/happyhorse-1.0-video-edit` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-video-edit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-video-edit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\"}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서가 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 역방향 프롬프트는 비디오 화면에 나타나지 않았으면 하는 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과하는 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 참조 +비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드에서는 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오는 최대 5초, 비디오 두 개는 각각 최대 2.5초, 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이 값을 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간의 합이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 사용 여부입니다. 기본값은 참입니다 + + + + 생성되는 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어의 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 해상도와 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 비디오 해상도이며 너비*높이 형식입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.0-video-edit/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 기준이 되는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 항목을 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P" + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx new file mode 100644 index 000000000..da9cb29ef --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx @@ -0,0 +1,428 @@ +--- +title: "Comfy Router로 HappyHorse 1.1 I2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.1-i2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.1 I2V" +translationSourceHash: 8fa3c9fe +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx +translationBlockHashes: + "_intro": df62101a + "Quick start": 804bc637 + "Schema": b49a9a2c + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 I2V의 API 레퍼런스입니다. HappyHorse 1.1 이미지 기반 비디오 생성은 정지 상태의 첫 프레임을 애니메이션으로 만들고, 같은 과정에서 동기화된 대사, 효과음, 음악을 함께 렌더링합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `wan/happyhorse-1.1-i2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 입력 + + + 프롬프트 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델의 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 +자료(이미지, 오디오, 비디오)를 지정합니다. 각 요소는 type과 url 필드를 +포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame(최대 1개), last_frame(최대 1개), reference_image(최대 10개), + reference_video(최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio(최대 5개 클립, + 총 재생 시간 \<= 15초), file(최대 1개, link와 함께 사용할 수 없음), link(최대 1개, + file과 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame + 유형은 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 + 에셋의 참조 순서(Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 역프롬프트는 비디오 화면에 나타나지 않았으면 하는 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자. 한도를 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 +media 배열에서 해당 순서에 있는 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없습니다 +참조 재생 시간: 단일 비디오는 최대 5초, 비디오 두 개는 각각 최대 2.5초, 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약이 없습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이 값을 제공해야 하며, 허용되는 표기의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto(기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수이며, 비디오 입력이 있으면 + 총 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 사용 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어의 비율과 의도에 따라 +적절한 화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P(기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P(업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다. + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오(기본값) +- multi: 멀티 샷 비디오 + + 사용 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P(480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V(480P 없음)의 경우: + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.1-i2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함하는 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간은 24시간입니다 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx new file mode 100644 index 000000000..f6d3082f2 --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy Router로 HappyHorse 1.1 R2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.1-r2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.1 R2V" +translationSourceHash: bcc3fe39 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx +translationBlockHashes: + "_intro": 9cfab6c4 + "Quick start": 85fe82b4 + "Schema": 6abf7a04 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 R2V의 API 레퍼런스입니다. HappyHorse 1.1 레퍼런스 기반 비디오 생성은 최대 9장의 레퍼런스 이미지에 담긴 피사체를 새로운 장면 전반에서 일관되게 유지하며, 프롬프트에서는 character1, character2 등으로 지칭합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행한 것입니다. + +**모델 ID:** `wan/happyhorse-1.1-r2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64 인코딩 데이터. I2V 모델에서는 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360~2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 지정합니다. +각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 같은 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서 + (Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에 나타나지 않기를 원하는 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우, 참조 비디오 순서에 따라 'character1', 'character2' +등으로 대상을 지칭하세요. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우, media 배열 내 해당 순서에 따라 'Image 1', 'Video 1', 'Audio 1' +등으로 미디어 에셋을 지칭하세요. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL. 1~3개의 비디오 URL 배열. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1~3개 비디오 +- 단일 비디오 길이: 2~30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 비디오 세 개는 그보다 비례적으로 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID. 이 컴포넌트에서는 NOT constrained입니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 지원 없음) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 + 입력 비디오 총 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음; -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화함 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성이 활성화되었는지 여부. 기본값은 참 + + + + 생성되는 비디오의 화면 비율. wan2.7 및 wan3.0 모델 전용. +wan2.7 모델의 경우, 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우, adaptive(기본값)는 입력 미디어 비율과 의도에 따라 +적절한 화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 지원 없음) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 해상도와 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.1-r2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 응답 envelope의 최상위(ROOT)에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 응답 envelope의 최상위(ROOT)에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## Examples + +### 입력 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx b/ko/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx new file mode 100644 index 000000000..68349c122 --- /dev/null +++ b/ko/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router로 HappyHorse 1.1 T2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/happyhorse-1.1-t2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "HappyHorse 1.1 T2V" +translationSourceHash: d2a04691 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx +translationBlockHashes: + "_intro": 9a8430cd + "Quick start": fe1ffe46 + "Schema": 42258343 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 T2V API 레퍼런스입니다. HappyHorse 1.1 텍스트 기반 비디오 생성은 프롬프트만으로 대사, 효과, 음악이 동기화된 짧은 비디오를 만듭니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 실행한 것입니다. + +**모델 ID:** `wan/happyhorse-1.1-t2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 지정합니다. +각 요소는 type 및 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다(Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자이며, 한도를 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 대상을 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1~3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1~3개 비디오 +- 단일 비디오 길이: 2~30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수이고, 비디오 입력이 있으면 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간의 합계가 30초를 초과할 수 없습니다. + -1은 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 활성화 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 설정됩니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어의 비율과 의도에 따라 적절한 +비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델에 적용됩니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음)의 경우: + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/happyhorse-1.1-t2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 수준 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx b/ko/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx new file mode 100644 index 000000000..490d95e32 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx @@ -0,0 +1,335 @@ +--- +title: "Wan 2.5 I2I Preview를 Comfy Router와 함께 사용하기" +description: "Comfy Router를 통해 wan/wan2.5-i2i-preview를 호출합니다. 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 다룹니다." +sidebarTitle: "Wan 2.5 I2I Preview" +translationSourceHash: 69f17d11 +translationFrom: development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx +translationBlockHashes: + "_intro": 54209465 + "Quick start": abe86d7a + "Schema": c8fca9d2 + "Examples": 3d10fc60 +--- +{/* GENERATED FILE. Generated from router-schemas/wan/wan2.5-i2i-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-i2i-preview`의 API 레퍼런스로, Wan에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행합니다. + +**Model ID:** `wan/wan2.5-i2i-preview` + +**Endpoint:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2i-preview", + { + "input": { + "images": ["https://example.invalid/red-maple-leaf.png"], + "prompt": "Make the leaf golden.", + }, + "parameters": { + "n": 1, + "size": "768*768", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-i2i-preview", { + input: { + images: ["https://example.invalid/red-maple-leaf.png"], + prompt: "Make the leaf golden.", + }, + parameters: { + n: 1, + size: "768*768", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"images\":[\"https://example.invalid/red-maple-leaf.png\"],\"prompt\":\"Make the leaf golden.\"}, \"parameters\": {\"n\":1,\"size\":\"768*768\"}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어, 이미지 등 기본 정보를 입력합니다. + + + + 이미지 기반 이미지 생성을 위한 이미지 URL 배열 + + + + 이미지에 나타나지 않았으면 하는 콘텐츠를 설명하는 부정 프롬프트 단어 + + + + 기대하는 이미지 요소와 시각적 특징을 설명하는 긍정 프롬프트 단어입니다. 중국어와 영어를 지원하며, 길이는 2000자를 초과할 수 없습니다. + + + + 이미지 기반 이미지 생성에 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이 값을 채웁니다. `POST /proxy/wan/api/v1/services/aigc/image2image/image-synthesis`에 대한 직접 v1 호출에서는 반드시 이 값을 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanImage2ImageGenerationRequest`에 있습니다. + + + + 이미지 처리 파라미터 + + + + 생성되는 이미지 수입니다. 범위 1-4, 기본값은 1입니다. + + 범위: `1` ~ `4` + + + + 무작위성을 제어하는 난수 시드입니다. 범위 [0, 2147483647] + + 범위: `0` ~ `2147483647` + + + + 너비*높이 형식의 출력 이미지 해상도입니다. 기본값은 1280*1280입니다. API는 픽셀 면적 589824(768*768)에서 1638400(1280*1280) 사이, 가로세로 비율 1:4에서 4:1 사이를 허용합니다. + + + + 오른쪽 아래 모서리에 워터마크 로고를 추가할지 여부 + + +`GET /v2/models/wan/wan2.5-i2i-preview/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함한 I2V 작업용 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아닌 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아닌 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "images": [ + "https://example.invalid/red-maple-leaf.png" + ], + "prompt": "Make the leaf golden." + }, + "parameters": { + "n": 1, + "size": "768*768" + } +} +``` + +### 출력 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx b/ko/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx new file mode 100644 index 000000000..8954f1a11 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx @@ -0,0 +1,427 @@ +--- +title: "Comfy Router로 Wan 2.5 I2V Preview 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.5-i2v-preview를 호출하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.5 I2V Preview" +translationSourceHash: 11676d6d +translationFrom: development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx +translationBlockHashes: + "_intro": 92f3b1d3 + "Quick start": a48b510f + "Schema": affcfad3 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.5 I2V Preview의 API 레퍼런스입니다. Wan 2.5 이미지 기반 비디오 생성은 정지된 첫 프레임을 짧은 비디오로 변환하며, 움직임과 카메라 무브는 프롬프트로 설명합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 전송합니다. + +**모델 ID:** `wan/wan2.5-i2v-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2v-preview", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-i2v-preview", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64 인코딩 데이터입니다. I2V 모델에서는 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1개), last_frame (최대 1개), reference_image (최대 10개), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1개, link와 함께 사용할 수 없음), link (최대 1개, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서 + (Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며, 길이는 800자를 초과할 수 +없습니다 (wan3.0-video의 경우 최대 20,000자이며, 제한을 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 비디오 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약이 없습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`를 직접 v1 호출할 때는 반드시 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없으며, -1은 + 모델이 적합한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 활성화 여부입니다. 기본값은 true입니다 + + + + 생성되는 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공하지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도에 따라 적합한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/wan2.5-i2v-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이 문서는 요청이 공급자에 도달하기 이전에 호출을 검증할 때 사용하는 문서와 동일합니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업의 경우) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업의 경우) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx b/ko/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx new file mode 100644 index 000000000..f7933457d --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx @@ -0,0 +1,330 @@ +--- +title: "Comfy Router로 Wan 2.5 T2I Preview 사용하기" +description: "Comfy Router를 통해 wan/wan2.5-t2i-preview를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Wan 2.5 T2I Preview" +translationSourceHash: 51b71001 +translationFrom: development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx +translationBlockHashes: + "_intro": bdf16bb7 + "Quick start": e89c207d + "Schema": 579649db + "Examples": e420aca1 +--- +{/* 생성된 파일. `pnpm code-pages:gen`에 의해 router-schemas/wan/wan2.5-t2i-preview.json에서 생성되었습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-t2i-preview`에 대한 API 레퍼런스이며, Wan에서 Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 뒤 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 전송합니다. + +**모델 ID:** `wan/wan2.5-t2i-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2i-preview", + { + "input": { + "prompt": "A single red maple leaf on a plain white background.", + }, + "parameters": { + "n": 1, + "size": "1280*1280", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-t2i-preview", { + input: { + prompt: "A single red maple leaf on a plain white background.", + }, + parameters: { + n: 1, + size: "1280*1280", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"A single red maple leaf on a plain white background.\"}, \"parameters\": {\"n\":1,\"size\":\"1280*1280\"}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 이미지에서 보고 싶지 않은 콘텐츠를 설명하는 반대 프롬프트 단어입니다 + + + + 기대하는 이미지 요소와 시각적 특징을 설명하는 긍정 프롬프트 단어입니다. 중국어와 영어를 지원하며, 길이는 800자를 초과할 수 없습니다 + + + + 텍스트 기반 이미지 생성에 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이 값을 채웁니다. `POST /proxy/wan/api/v1/services/aigc/text2image/image-synthesis`에 대한 직접 v1 호출은 반드시 이 값을 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanImageGenerationRequest`에 있습니다. + + + + 이미지 처리 파라미터 + + + + 생성되는 이미지 수입니다. 범위 1-4, 기본값은 4입니다 + + 범위: `1` ~ `4` + + + + 프롬프트 지능형 재작성을 활성화합니다. 기본값은 참입니다 + + + + 무작위성을 제어하는 난수 시드입니다. 범위 [0, 2147483647] + + 범위: `0` ~ `2147483647` + + + + 출력 이미지 해상도로, 너비*높이 형식입니다. 기본값은 1280*1280입니다. API는 1638400(1280*1280)에서 2073600(1440*1440) 사이의 픽셀 면적과 1:4에서 4:1 사이의 비율을 허용하므로 768*2700도 유효합니다 + + + + 오른쪽 아래 모서리에 워터마크 로고를 추가할지 여부 + + +Router가 `GET /v2/models/wan/wan2.5-t2i-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성 기능이 있는 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간은 24시간입니다 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에서 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에서 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 넘어가기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "A single red maple leaf on a plain white background." + }, + "parameters": { + "n": 1, + "size": "1280*1280" + } +} +``` + +### 출력 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx b/ko/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx new file mode 100644 index 000000000..e928593cc --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx @@ -0,0 +1,424 @@ +--- +title: "Comfy Router로 Wan 2.5 T2V Preview 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.5-t2v-preview를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.5 T2V Preview" +translationSourceHash: 8b4019e8 +translationFrom: development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx +translationBlockHashes: + "_intro": 09319905 + "Quick start": 8d9cb70e + "Schema": d747859e + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.5 T2V Preview에 대한 API 레퍼런스입니다. Wan 2.5 텍스트 기반 비디오 생성은 프롬프트만으로 짧은 비디오를 만들며, 참조 이미지나 비디오가 필요하지 않습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 raw HTTP로 동일한 호출을 수행합니다. + +**모델 ID:** `wan/wan2.5-t2v-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2v-preview", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-t2v-preview", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델의 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 지정합니다. 각 요소는 type 및 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame(최대 1), last_frame(최대 1), reference_image(최대 10), + reference_video(최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio(최대 5개 클립, + 총 재생 시간 \<= 15초), file(최대 1, link와 함께 사용할 수 없음), link(최대 1, + file과 함께 사용할 수 없음). reference_*/file/link 타입과 first_frame/last_frame 타입은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서 + (Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 타입 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어로, 비디오 화면에 나타나지 않았으면 하는 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자이며, 한도를 초과하는 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1이 길가에서 노래하고, Character2가 옆에서 춤을 춥니다" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 +media 배열 내 해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오는 최대 5초, 두 개의 비디오는 각각 최대 2.5초, 세 개의 비디오는 그보다 비례적으로 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이 값을 제공해야 하며, 허용되는 표기의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto(기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성된 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수이며, 비디오 입력이 있으면 + 총 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 사용 여부입니다. 기본값은 true입니다 + + + + 생성된 비디오의 화면 비율. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도를 기반으로 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P(기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P(업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고 추가 여부. 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/wan2.5-t2v-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 총 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 항목을 먼저 확인하세요. + + +## 예제 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관하려면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-6-i2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-6-i2v/code.mdx new file mode 100644 index 000000000..8c64fd5e4 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-6-i2v/code.mdx @@ -0,0 +1,427 @@ +--- +title: "Comfy Router로 Wan 2.6 I2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.6-i2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태를 설명합니다" +sidebarTitle: "Wan 2.6 I2V" +translationSourceHash: d02cf0cb +translationFrom: development/comfy-router/models/wan/wan2-6-i2v/code.mdx +translationBlockHashes: + "_intro": 13e5c8cc + "Quick start": 64466010 + "Schema": 85b61b37 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.6 I2V API 레퍼런스. Wan 2.6 이미지 기반 비디오 생성은 정지된 첫 프레임을 720P 또는 1080P로 최대 15초까지 애니메이션화합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 보낸 것입니다. + +**Model ID:** `wan/wan2.6-i2v` + +**Endpoint:** `POST https://api.comfy.org/v2/models/wan/wan2.6-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360~2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트 내 에셋의 참조 + 순서(이미지 1, 비디오 1, 오디오 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자이며, 제한을 초과하는 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1~3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 수량: 1~3개 비디오 +- 단일 비디오 길이: 2~30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 2개는 각각 최대 2.5초, 비디오 3개는 그에 비례해 더 짧습니다. +과금: 실제로 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성된 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5, 10 또는 15초 +- wan2.6-r2v: 5 또는 10초만 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델에만 해당합니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도를 기반으로 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 (480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델에 해당합니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다. +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고 추가 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +`GET /v2/models/wan/wan2.6-i2v/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 내용을 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-6-r2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-6-r2v/code.mdx new file mode 100644 index 000000000..d62f92771 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-6-r2v/code.mdx @@ -0,0 +1,428 @@ +--- +title: "Comfy Router로 Wan 2.6 R2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.6-r2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.6 R2V" +translationSourceHash: 6d5ca4d7 +translationFrom: development/comfy-router/models/wan/wan2-6-r2v/code.mdx +translationBlockHashes: + "_intro": e8706b25 + "Quick start": b9e4a192 + "Schema": 2f56f8e9 + "Examples": dd88ebee +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.6 R2V API 레퍼런스입니다. Wan 2.6 레퍼런스 기반 비디오 생성은 하나에서 세 개의 레퍼런스 비디오에 등장하는 피사체를 새로운 장면으로 가져오며, 프롬프트에서 character1, character2 등으로 지정합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `wan/wan2.6-r2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.6-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + reference_video_urls: ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"reference_video_urls\":[\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1개), last_frame (최대 1개), reference_image (최대 10개), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1개, link와 함께 사용할 수 없음), link (최대 1개, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 대상을 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL. 1-3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개인 경우 각각 최대 2.5초, 세 개인 경우 그보다 비례적으로 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID. 이 컴포넌트에서는 제약이 없습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 작업 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델용 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠에 따라 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 (15초 지원 없음) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음, -1은 모델이 + 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화함 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 활성화 여부. 기본값은 참 + + + + 생성되는 비디오의 화면 비율. wan2.7 및 wan3.0 모델 전용. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급을 기준으로 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도를 기반으로 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 (480P 지원 없음) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 해상도와 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/wan2.6-r2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": [ + "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-6-t2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-6-t2v/code.mdx new file mode 100644 index 000000000..a033b3367 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-6-t2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router로 Wan 2.6 T2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.6-t2v를 호출하기 위한 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.6 T2V" +translationSourceHash: 67885546 +translationFrom: development/comfy-router/models/wan/wan2-6-t2v/code.mdx +translationBlockHashes: + "_intro": 2f5a31f7 + "Quick start": b90dbbd9 + "Schema": 5a150e56 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.6 T2V의 API 레퍼런스입니다. Wan 2.6 텍스트 기반 비디오 생성은 프롬프트만으로 720P 또는 1080P 해상도, 최대 15초 길이의 짧은 비디오를 만듭니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `wan/wan2.6-t2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.6-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 +참조 자료(이미지, 오디오, 비디오)를 지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 타입과 first_frame/last_frame 타입은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서 + (Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 타입 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에 나타나지 않기를 원하는 콘텐츠를 설명하는 데 사용됩니다. + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 +없습니다 (wan3.0-video의 경우 최대 20,000자, 제한을 초과한 콘텐츠는 잘립니다). +참조 비디오가 여러 개인 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 대상을 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 +media 배열 내 해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 비디오 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`를 직접 v1 호출하는 경우 반드시 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델용 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 + 입력 비디오 총 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없으며, -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 활성화 여부입니다. 기본값은 참입니다. + + + + 생성되는 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공하지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 선택하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 사용 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/wan2.6-t2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됨 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-7-i2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-7-i2v/code.mdx new file mode 100644 index 000000000..b505a97a9 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-7-i2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy Router로 Wan 2.7 I2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.7-i2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.7 I2V" +translationSourceHash: ea6272b5 +translationFrom: development/comfy-router/models/wan/wan2-7-i2v/code.mdx +translationBlockHashes: + "_intro": b2a5e3a6 + "Quick start": a9c6fffc + "Schema": 5aa218af + "Examples": 5ffd46d7 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.7 I2V API 레퍼런스입니다. Wan 2.7 이미지 기반 비디오 생성은 media 목록을 통해 제공되는 첫 프레임에 애니메이션을 적용하며, 이 목록은 마지막 프레임, 구동 오디오 트랙, 오프닝 클립도 받을 수 있습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `wan/wan2.7-i2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.7-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1개), last_frame (최대 1개), reference_image (최대 10개), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1개, link와 함께 사용할 수 없음), link (최대 1개, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 동일한 + 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서(이미지 1, 비디오 1, + 오디오 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트는 비디오 화면에 나타나지 않았으면 하는 내용을 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자이며, 한도를 초과한 내용은 잘립니다). +참조 비디오가 여러 개인 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1이 길가에서 노래하고, Character2가 옆에서 춤춘다" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서에 있는 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성된 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수이고, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 모델이 적절한 + 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성 활성화 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어의 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P(기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P(업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드입니다 + + 범위: `0`부터 `2147483647`까지 + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +`GET /v2/models/wan/wan2.7-i2v/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간은 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 비디오를 보관해야 한다면 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-7-r2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-7-r2v/code.mdx new file mode 100644 index 000000000..30fe4edfb --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-7-r2v/code.mdx @@ -0,0 +1,444 @@ +--- +title: "Comfy Router로 Wan 2.7 R2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.7-r2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드, 결과 형태를 설명합니다" +sidebarTitle: "Wan 2.7 R2V" +translationSourceHash: 5dbe07b4 +translationFrom: development/comfy-router/models/wan/wan2-7-r2v/code.mdx +translationBlockHashes: + "_intro": 3361a1c4 + "Quick start": e1e26620 + "Schema": 72700081 + "Examples": a91cb6b1 +--- +{/* 생성된 파일입니다. 이 디렉터리의 code.yaml을 편집한 뒤 `pnpm code-pages:gen`을 실행하세요. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.7 R2V의 API 레퍼런스입니다. Wan 2.7 레퍼런스 기반 비디오 생성은 레퍼런스 이미지와 레퍼런스 비디오의 피사체를 새로운 장면으로 옮기며, 프롬프트에서 character1, character2 등으로 지칭합니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `wan/wan2.7-r2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.7-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64 인코딩 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, + file과 함께 사용할 수 없음). reference_*/file/link 타입과 first_frame/last_frame 타입은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다(Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 타입 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL(공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다. + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과하지 않아야 + 합니다(wan3.0-video의 경우 최대 20,000자, 한도를 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 대상을 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 미디어 +배열 내 해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오는 최대 5초, 비디오 두 개는 각각 최대 2.5초, 비디오 세 개는 그에 비례하여 더 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약이 없습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델용 비디오 오디오 설정입니다. +- auto(기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능(15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음, -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화함 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부입니다. 기본값은 참입니다 + + + + 생성되는 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)는 입력 미디어의 비율과 의도를 기반으로 +적절한 화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능(480P 미지원) +- wan2.7 모델(i2v, t2v, r2v, videoedit): 720P, 1080P(기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P(업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다. + + 범위: `0`부터 `2147483647`까지 + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 적용됩니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다. +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다. + + +Router가 `GET /v2/models/wan/wan2.7-r2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함하는 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 레벨 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관해야 하는 경우 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-7-t2v/code.mdx b/ko/development/comfy-router/models/wan/wan2-7-t2v/code.mdx new file mode 100644 index 000000000..b576b718a --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-7-t2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router로 Wan 2.7 T2V 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.7-t2v를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.7 T2V" +translationSourceHash: e920aeea +translationFrom: development/comfy-router/models/wan/wan2-7-t2v/code.mdx +translationBlockHashes: + "_intro": 6f7df68c + "Quick start": e0c4fb4d + "Schema": 380909b6 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.7 T2V에 대한 API 레퍼런스입니다. Wan 2.7 텍스트 기반 비디오 생성은 프롬프트만으로 720P 또는 1080P 해상도, 2초에서 15초 길이의 짧은 비디오를 만듭니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**Model ID:** `wan/wan2.7-t2v` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.7-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360~2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 지정합니다. +각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15s), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15s), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, + file과 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 사용 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다. + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 한도를 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우, 'character1', 'character2' 등을 사용해 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우, 'Image 1', 'Video 1', 'Audio 1' 등을 사용해 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL. 1~3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1~3개 비디오 +- 개별 비디오 길이: 2~30초 +- 개별 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 비디오 1개는 최대 5초, 2개는 각각 최대 2.5초, 3개는 그보다 비례적으로 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID. 이 컴포넌트에서는 제약이 없습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠에 따라 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 사용 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5, 10 또는 15초 +- wan2.6-r2v: 5 또는 10초만 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적합한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부. 기본값은 참입니다 + + + + 생성된 비디오의 비율. wan2.7 및 wan3.0 모델에만 해당합니다. +wan2.7 모델의 경우, 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우, adaptive(기본값)가 입력 미디어 비율과 의도를 기반으로 적절한 +비율을 자동으로 추천합니다. + + 사용 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 레벨. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 선택하기 때문입니다. + + 사용 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다. + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델 전용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다. +wan2.5 T2V: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다. + + +Router가 `GET /v2/models/wan/wan2.7-t2v/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트(비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업용 오디오 URL + + + + 실패한 요청의 오류 코드(요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보(요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트(비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트(활성화된 경우) + + + + 이미지 오류 코드(일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보(일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 수준(I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초)(I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트(wan3.0-video 작업) + + + + 생성된 이미지 수(T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0(wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초)(wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9(wan3.0-video 작업) + + + + 이미지 해상도(T2I 및 I2I 작업) + + + + 생성된 비디오 수(T2V 작업) + + + + 생성된 비디오의 재생 시간(초)(T2V 작업) + + + + 비디오 해상도 비율(T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다(요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다(요청이 성공하면 반환되지 않음). `output.message`로 대체하기 이전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx b/ko/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx new file mode 100644 index 000000000..f972ac9c8 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx @@ -0,0 +1,442 @@ +--- +title: "Comfy Router로 Wan 2.7 Video Edit 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan2.7-videoedit을 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 2.7 Video Edit" +translationSourceHash: 93e5669b +translationFrom: development/comfy-router/models/wan/wan2-7-videoedit/code.mdx +translationBlockHashes: + "_intro": 47b7d5e3 + "Quick start": 66b5f72c + "Schema": 515068a3 + "Examples": 622d1416 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 2.7 Video Edit의 API 레퍼런스입니다. Wan 2.7 video edit은 텍스트 지시를 바탕으로 기존 클립을 다시 작성하며, 선택적으로 참조 이미지의 안내를 받을 수 있습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 순수 HTTP로 수행한 것입니다. + +**모델 ID:** `wan/wan2.7-videoedit` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan2.7-videoedit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-videoedit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-videoedit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + audio_setting: "origin", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-videoedit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\",\"audio_setting\":\"origin\"}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3, wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64 인코딩 데이터. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델용 미디어 에셋 목록입니다. 비디오 생성에 사용할 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type 및 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, + file과 함께 사용할 수 없음). reference_*/file/link 타입과 first_frame/last_frame 타입은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다(Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 타입 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 네거티브 프롬프트 단어는 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 제한을 초과한 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우, 참조 비디오 순서대로 대상을 가리킬 때 +'character1', 'character2' 등을 사용합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우, media 배열 내 해당 순서의 미디어 에셋을 가리킬 때 +'Image 1', 'Video 1', 'Audio 1' 등을 사용합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개의 비디오 URL 배열. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 2개는 각각 최대 2.5초, 비디오 3개는 그보다 비례하여 짧아집니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID. 이 컴포넌트에서는 제약되지 않습니다. Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 가능 (15초 지원 없음) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음. -1은 모델이 + 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화함 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부. 기본값은 참 + + + + 생성되는 비디오의 화면 비율. wan2.7 및 wan3.0 모델 전용. +wan2.7 모델의 경우 제공하지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)는 입력 미디어의 비율과 의도에 따라 +적절한 화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 지원 없음) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 난수 시드로, 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용됩니다 + + 범위: `0`부터 `2147483647`까지 + + + + 지능형 멀티 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용입니다. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 사용 가능한 값: `multi`, `single` + + + + 비디오 해상도로, 너비*높이 형식입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다 + + +Router가 `GET /v2/models/wan/wan2.7-videoedit/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성을 포함하는 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됨 + + + + 비디오 해상도 수준 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin" + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx b/ko/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx new file mode 100644 index 000000000..7fcaa9a36 --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx @@ -0,0 +1,425 @@ +--- +title: "Comfy Router로 Wan 3.0 Video Prime 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan3.0-video-prime을 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 3.0 Video Prime" +translationSourceHash: b3fd2952 +translationFrom: development/comfy-router/models/wan/wan3-0-video-prime/code.mdx +translationBlockHashes: + "_intro": ddcfe1dd + "Quick start": efd176ed + "Schema": 550c6895 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video Prime에 대한 API 레퍼런스입니다. Wan 3.0 Video Prime은 Wan 3.0 Video의 더 높은 품질 등급이며, 동일한 Router 프롬프트와 미디어 스키마에 대해 검증되었습니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP로 동일한 호출을 수행합니다. + +**모델 ID:** `wan/wan3.0-video-prime` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video-prime` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video-prime", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video-prime", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video-prime \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터. I2V 모델에 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델의 미디어 에셋 목록. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type 및 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서를 + 정의합니다 (Image 1, Video 1, Audio 1, ...). + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 비디오 화면에서 보고 싶지 않은 콘텐츠를 설명하는 데 사용되는 반대 프롬프트 단어 + + + + 텍스트 프롬프트 단어. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 한도를 초과하는 콘텐츠는 잘립니다). +여러 참조 비디오가 있는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 참조 +비디오 순서대로 피사체를 참조합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 참조합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL. 1-3개의 비디오 URL 배열입니다. +입력 제한 사항: +- 형식: mp4, mov +- 개수: 1-3개 비디오 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 2개는 각각 최대 2.5초, 비디오 3개는 그보다 비례하여 짧아집니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름. 선택 사항. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 이를 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 이를 반드시 제공해야 하며, 허용되는 표기법의 enum은 해당 오퍼레이션 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정. +- auto (기본값): 모델이 프롬프트 콘텐츠를 기반으로 지능적으로 판단 +- origin: 입력 비디오의 원본 오디오를 강제로 유지 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초): +- wan2.5 모델: 5 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5, 10 또는 15초 +- wan2.6-r2v: 5 또는 10초만 가능 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없음, -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화함 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능적 재작성을 활성화할지 여부. 기본값은 참 + + + + 생성된 비디오의 비율. wan2.7 및 wan3.0 모델 전용. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 설정됩니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도에 따라 적절한 +비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 가능 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 해상도와 크기 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드입니다. + + 범위: `0`부터 `2147483647`까지 + + + + 지능형 다중 렌즈 제어입니다. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델에 적용됩니다. +- single: 단일 샷 비디오 (기본값) +- multi: 다중 샷 비디오 + + 사용 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도입니다. 지원되는 해상도는 모델에 따라 다릅니다: +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다. + + +`GET /v2/models/wan/wan3.0-video-prime/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업의 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됨 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없으면 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wan/wan3-0-video/code.mdx b/ko/development/comfy-router/models/wan/wan3-0-video/code.mdx new file mode 100644 index 000000000..6dc455bfe --- /dev/null +++ b/ko/development/comfy-router/models/wan/wan3-0-video/code.mdx @@ -0,0 +1,444 @@ +--- +title: "Comfy Router로 Wan 3.0 Video 사용하기" +description: "Comfy Router를 통해 HTTP로 wan/wan3.0-video를 호출하는 Python, TypeScript, cURL 스니펫과 요청 필드 및 결과 형태" +sidebarTitle: "Wan 3.0 Video" +translationSourceHash: e9c2144b +translationFrom: development/comfy-router/models/wan/wan3-0-video/code.mdx +translationBlockHashes: + "_intro": e7e79c75 + "Quick start": eecace93 + "Schema": 521b4b8d + "Examples": 5ffd46d7 +--- +{/* 생성된 파일입니다. 이 디렉터리의 code.yaml을 편집한 후 `pnpm code-pages:gen`을 실행하세요. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video API 레퍼런스. Wan 3.0 Video는 프롬프트만으로 생성하거나, 첫 프레임과 마지막 프레임, 레퍼런스 이미지, 비디오, 오디오로 구성된 미디어 목록으로 생성할 수 있으며, 프롬프트에서는 각각 Image 1, Video 1, Audio 1로 지칭됩니다. + + + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `wan/wan3.0-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 스키마 + +### 입력 + + + 프롬프트 단어 등 기본 정보를 입력합니다. + + + + 오디오 파일 다운로드 URL입니다. 지원 형식: mp3 및 wav. reference_video_urls와 함께 사용할 수 없습니다. + + + + 첫 프레임 이미지 URL 또는 Base64로 인코딩된 데이터입니다. I2V 모델에서 필수입니다. 이미지 형식: JPEG, JPG, PNG, BMP, WEBP. 해상도: 360-2000 픽셀. 파일 크기: 최대 10MB. + + + + wan2.7 및 wan3.0 모델의 미디어 에셋 목록입니다. 비디오 생성을 위한 참조 자료(이미지, 오디오, 비디오)를 +지정합니다. 각 요소는 type과 url 필드를 포함합니다. +지원되는 type 값은 모델에 따라 다릅니다: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame (최대 1), last_frame (최대 1), reference_image (최대 10), + reference_video (최대 5개 클립, 총 재생 시간 \<= 15초), reference_audio (최대 5개 클립, + 총 재생 시간 \<= 15초), file (최대 1, link와 함께 사용할 수 없음), link (최대 1, file과 + 함께 사용할 수 없음). reference_*/file/link 유형과 first_frame/last_frame 유형은 + 동일한 요청 내에서 상호 배타적입니다. 배열 순서는 프롬프트에서 에셋의 참조 순서 + (Image 1, Video 1, Audio 1, ...)를 정의합니다. + + + + 미디어 에셋 유형 + + 가능한 값: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 미디어 파일의 URL (공개 HTTP/HTTPS URL 또는 OSS 임시 URL) + + + + 역방향 프롬프트 단어는 비디오 화면에 표시되길 원하지 않는 내용을 설명하는 데 사용됩니다 + + + + 텍스트 프롬프트 단어입니다. 중국어와 영어를 지원하며 길이는 800자를 초과할 수 없습니다 +(wan3.0-video의 경우 최대 20,000자, 한도를 초과하는 내용은 잘립니다). +여러 참조 비디오를 사용하는 wan2.6-r2v의 경우 'character1', 'character2' 등을 사용하여 +참조 비디오 순서대로 피사체를 지칭합니다. 예: "Character1 sings on the roadside, Character2 dances beside it" +wan3.0-video 참조 모드의 경우 'Image 1', 'Video 1', 'Audio 1' 등을 사용하여 media 배열 내 +해당 순서의 미디어 에셋을 지칭합니다. + + + + wan2.6-r2v 모델 전용 참조 비디오 URL입니다. 1-3개 비디오 URL의 배열입니다. +입력 제한: +- 형식: mp4, mov +- 개수: 비디오 1-3개 +- 단일 비디오 길이: 2-30초 +- 단일 파일 크기: 최대 30MB +- audio_url과 함께 사용할 수 없음 +참조 재생 시간: 단일 비디오 최대 5초, 비디오 두 개는 각각 최대 2.5초, 비디오 세 개는 그보다 비례적으로 짧습니다. +과금: 실제 사용된 참조 재생 시간을 기준으로 합니다. + + + + 비디오 효과 템플릿 이름입니다. 선택 사항입니다. 현재 지원: squish, flying, carousel. 사용 시 prompt 파라미터는 무시됩니다. + + + + 호출할 모델의 ID입니다. 이 컴포넌트에서는 제약되지 않습니다: Comfy Router가 `POST /v2/models/wan/{model}`의 `{model}` 경로 세그먼트에서 값을 채우므로 Router 호출자는 이를 생략합니다. `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis`에 대한 직접 v1 호출은 반드시 이를 제공해야 하며, 허용되는 표기법의 enum은 해당 작업 자체의 컴포넌트인 `WanVideoGenerationRequest`에 있습니다. + + + + 비디오 처리 파라미터 + + + + 비디오에 오디오를 추가할지 여부 + + + + wan2.7-videoedit 모델의 비디오 오디오 설정입니다. +- auto (기본값): 모델이 프롬프트 콘텐츠에 따라 지능적으로 판단합니다 +- origin: 입력 비디오의 원본 오디오를 강제로 유지합니다 + + 가능한 값: `auto`, `origin` + + + + 생성되는 비디오의 재생 시간(초)입니다: +- wan2.5 모델: 5초 또는 10초 +- wan2.6-t2v, wan2.6-i2v: 5초, 10초 또는 15초 +- wan2.6-r2v: 5초 또는 10초만 (15초 미지원) +- wan2.7-i2v, wan2.7-t2v: [2, 15] 범위의 정수 +- wan2.7-r2v, wan2.7-videoedit: [2, 10] 범위의 정수 +- wan3.0-video: 비디오 입력이 없으면 [2, 30] 범위의 정수, 비디오 입력이 있으면 총 + 입력 비디오 재생 시간 + 출력 비디오 재생 시간이 30초를 초과할 수 없습니다. -1은 + 모델이 적절한 재생 시간을 선택하는 스마트 재생 시간 모드를 활성화합니다 + + 범위: `-1` ~ `30` + + + + 프롬프트 지능형 재작성을 활성화할지 여부입니다. 기본값은 참입니다 + + + + 생성된 비디오의 화면 비율입니다. wan2.7 및 wan3.0 모델 전용입니다. +wan2.7 모델의 경우 제공되지 않으면 해상도 등급에 따라 기본값이 정해집니다. +wan3.0-video의 경우 adaptive(기본값)가 입력 미디어 비율과 의도에 따라 적절한 +화면 비율을 자동으로 추천합니다. + + 가능한 값: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 해상도 등급입니다. 지원되는 값은 모델에 따라 다릅니다: +- wan2.5-i2v-preview: 480P, 720P, 1080P +- wan2.6-i2v: 720P, 1080P만 (480P 미지원) +- wan2.7 모델 (i2v, t2v, r2v, videoedit): 720P, 1080P (기본값 1080P) +- wan3.0-video, wan3.0-video-prime: 480P, 720P, 1080P (업스트림 기본값 1080P) +이 프록시는 resolution과 size를 모두 제공하지 않는 비디오 생성 요청을 거부합니다. +해상도 등급이 과금 요율을 결정하기 때문입니다. + + 가능한 값: `480P`, `720P`, `1080P` + + 모델이 생성하는 콘텐츠의 무작위성을 제어하는 데 사용되는 난수 시드 + + 범위: `0` ~ `2147483647` + + + + 지능형 멀티 렌즈 제어. prompt_extend가 활성화된 경우에만 동작합니다. +wan2.6 및 wan2.7-r2v 모델용. +- single: 단일 샷 비디오 (기본값) +- multi: 멀티 샷 비디오 + + 가능한 값: `multi`, `single` + + + + 너비*높이 형식의 비디오 해상도. 지원되는 해상도는 모델에 따라 다릅니다. +wan2.5 T2V의 경우: 480P (480*832, 832*480, 624*624), 720P, 1080P 크기 +wan2.6 T2V/R2V의 경우 (480P 없음): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 워터마크 로고를 추가할지 여부이며, 워터마크는 오른쪽 아래 모서리에 위치합니다. + + +Router가 `GET /v2/models/wan/wan3.0-video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다.### 출력 + + + + + + + 지능형 재작성 이후의 실제 프롬프트 (비디오 작업용) + + + + 오디오 생성이 포함된 I2V 작업용 오디오 URL + + + + 실패한 요청의 오류 코드 (요청이 성공하면 반환되지 않음) + + + + 작업 완료 시간 + + + + 실패한 요청에 대한 상세 정보 (요청이 성공하면 반환되지 않음) + + + + 원본 입력 프롬프트 (비디오 작업용) + + + + 이미지 생성 작업의 작업 결과 목록 + + + + 지능형 재작성 이후의 실제 프롬프트 (활성화된 경우) + + + + 이미지 오류 코드 (일부 작업이 실패할 때 반환됨) + + + + 이미지 오류 정보 (일부 작업이 실패할 때 반환됨) + + + + 원본 입력 프롬프트 + + + + 생성된 이미지 URL 주소 + + + + 작업 실행 시간 + + + + 작업 제출 시간 + + + + 작업 ID + + + + 이미지 생성 작업의 작업 결과 통계 + + + + 실패한 작업 수 + + + + 성공한 작업 수 + + + + 전체 작업 수 + + + + 작업 상태 + + 가능한 값: `PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 완료된 비디오 생성 작업의 비디오 URL. 링크 유효 기간 24시간 + + + + 고유 요청 식별자 + + + + 출력 정보 통계. 성공한 결과만 집계됩니다 + + + + 비디오 해상도 등급 (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 재생 시간(초) (I2V 및 wan3.0-video 작업) + + + + 생성된 비디오의 프레임 레이트 (wan3.0-video 작업) + + + + 생성된 이미지 수 (T2I 및 I2I 작업) + + + + 입력 비디오의 재생 시간(초), 비디오 입력이 없을 때는 0.0 (wan3.0-video 작업) + + + + 출력 비디오의 재생 시간(초) (wan3.0-video 작업) + + + + 생성된 비디오의 화면 비율, 예: 16:9 (wan3.0-video 작업) + + + + 이미지 해상도 (T2I 및 I2I 작업) + + + + 생성된 비디오 수 (T2V 작업) + + + + 생성된 비디오의 재생 시간(초) (T2V 작업) + + + + 비디오 해상도 비율 (T2V 작업) + + + + 실패한 요청의 오류 코드로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). + + + + 실패한 요청에 대한 상세 정보로, `output` 아래가 아니라 envelope의 ROOT에 보고됩니다 (요청이 성공하면 반환되지 않음). `output.message`로 대체하기 전에 이 값을 먼저 확인하세요. + + +## 예시 + +### 입력 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 출력 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +비디오 URL은 24시간 동안 유효합니다. 보관이 필요하다면 비디오를 즉시 다운로드하세요. + + diff --git a/ko/development/comfy-router/models/wavespeed/flashvsr/code.mdx b/ko/development/comfy-router/models/wavespeed/flashvsr/code.mdx new file mode 100644 index 000000000..b036535a9 --- /dev/null +++ b/ko/development/comfy-router/models/wavespeed/flashvsr/code.mdx @@ -0,0 +1,177 @@ +--- +title: "Comfy Router로 Flashvsr 사용하기" +description: "Comfy Router를 통해 wavespeed/flashvsr를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Flashvsr" +translationSourceHash: 098838c2 +translationFrom: development/comfy-router/models/wavespeed/flashvsr/code.mdx +translationBlockHashes: + "_intro": 9f6b0669 + "Quick start": bf2f0a80 + "Schema": 0dace1f8 + "Examples": f0f03046 +--- +{/* GENERATED FILE. Generated from router-schemas/wavespeed/flashvsr.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`wavespeed/flashvsr`의 API 레퍼런스이며, Comfy Router가 WaveSpeed에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `wavespeed/flashvsr` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wavespeed/flashvsr` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/flashvsr", + { + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/flashvsr", { + duration: 4, + target_resolution: "1080p", + video: "https://samplelib.com/mp4/sample-30s.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/flashvsr \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"target_resolution\": \"1080p\", \"video\": \"https://samplelib.com/mp4/sample-30s.mp4\"}" +``` + + +## 스키마 + +### 입력 + + + 비디오의 재생 시간(초) + + + + 업스케일할 대상 해상도. + + 가능한 값: `720p`, `1080p`, `2k`, `4k` + + + + 업스케일할 비디오입니다. 비디오 파일의 URL이거나 base64로 인코딩된 비디오일 수 있습니다. + + +Router가 `GET /v2/models/wavespeed/flashvsr/openapi.json`에서 제공하는 스키마에서 생성되며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + WavespeedAI 자체의 envelope 상태 코드로, HTTP 상태를 그대로 반영합니다(이 스키마가 설명하는 문서에서는 200). Wavespeed는 일부 실패를 전송 상태가 아니라 여기에 보고합니다. + + + + + + + + Wavespeed가 prediction을 생성한 시각의 ISO-8601 타임스탬프입니다. + + + + Wavespeed의 자유 형식 실패 사유이며, 없을 경우 빈 문자열입니다. 실제로 실패한 prediction은 이 문서가 아니라 Comfy Router 오류로 Router 호출자에게 전달됩니다. + + + + Router가 제출하고 폴링한 prediction에 대한 Wavespeed의 식별자입니다. + + + + prediction이 실행된 Wavespeed 모델 id입니다. + + + + 완료된 생성 결과입니다. Router가 반환하는 문서에서는 항상 존재하고 비어 있지 않으며, 이 목록 자체가 결과입니다. 각 요소는 생성된 콘텐츠의 URL입니다. `wavespeed/flashvsr`의 경우 MP4, 두 업스케일러의 경우 이미지이며, 두 이미지 id의 경우 요청에서 `enable_base64_output`을 설정했다면 base64로 인코딩된 바이트 자체입니다. 링크는 Wavespeed 자체의 것이며 만료됩니다. + + + + Wavespeed가 표기한 그대로의 prediction 터미널 상태입니다. 여기서는 enum으로 좁혀지지 않습니다. Router는 값을 변경하지 않고 전달하며, 폴링 분류기는 비교 이전에 소문자로 변환하므로 성공은 대소문자에 관계없이 `completed`, `succeeded`, `success` 또는 `done`으로 정상적으로 도착할 수 있습니다. + + + + Wavespeed 자체의 타이밍 측정값입니다. + + + + 추론 시간(밀리초)입니다. Comfy 청구 금액이 아니라 Wavespeed의 수치입니다. + + + + prediction에 대한 Wavespeed 자체의 링크입니다. + + + + Router가 폴링한 prediction 결과 URL입니다. + + + + envelope 상태 메시지, 예: `success`. + + +## 예시 + +### 입력 + +```json +{ + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4" +} +``` + +### 출력 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/flashvsr/upscaled.mp4" + ], + "status": "completed", + "timings": { + "inference": 128000 + } + }, + "message": "success" +} +``` + + + diff --git a/ko/development/comfy-router/models/wavespeed/seedvr2/code.mdx b/ko/development/comfy-router/models/wavespeed/seedvr2/code.mdx new file mode 100644 index 000000000..bbaf036e8 --- /dev/null +++ b/ko/development/comfy-router/models/wavespeed/seedvr2/code.mdx @@ -0,0 +1,180 @@ +--- +title: "Comfy Router로 Seedvr 2 사용하기" +description: "Comfy Router를 통해 wavespeed/seedvr2 호출하기: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Seedvr 2" +translationSourceHash: 3458a74d +translationFrom: development/comfy-router/models/wavespeed/seedvr2/code.mdx +translationBlockHashes: + "_intro": 538f574f + "Quick start": ea636f07 + "Schema": a04647c3 + "Examples": f2be022d +--- +{/* 생성된 파일. `pnpm code-pages:gen`으로 router-schemas/wavespeed/seedvr2.json에서 생성됨. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +WaveSpeed에서 Comfy Router를 통해 제공하는 `wavespeed/seedvr2`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `wavespeed/seedvr2` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wavespeed/seedvr2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/seedvr2", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/seedvr2", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/seedvr2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## 스키마 + +### 입력 + + + 활성화하면 출력이 URL 대신 BASE64 문자열로 인코딩됩니다. + + + + 업스케일할 이미지의 URL입니다. + + + + 출력 이미지의 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + 출력 이미지의 목표 해상도입니다. + + 가능한 값: `2k`, `4k`, `8k` + + +Router가 `GET /v2/models/wavespeed/seedvr2/openapi.json`에서 제공하는 스키마에서 생성되며, 요청이 공급자에 도달하기 이전에 Router가 호출을 검증하는 기준이 되는 동일한 문서입니다. + +### 출력 + + + WavespeedAI 자체의 envelope 상태 코드로, HTTP 상태를 반영합니다(이 스키마가 설명하는 문서에서는 200). Wavespeed는 일부 실패를 전송 상태가 아니라 여기에 보고합니다. + + + + + + + + Wavespeed가 예측을 생성한 시점의 ISO-8601 타임스탬프입니다. + + + + Wavespeed의 자유 형식 실패 사유이며, 없는 경우 빈 문자열입니다. 실제로 실패한 예측은 이 문서가 아니라 Comfy Router 오류의 형태로 Router 호출자에게 전달됩니다. + + + + Router가 제출하고 폴링한 예측에 대한 Wavespeed의 식별자입니다. + + + + 예측이 실행된 Wavespeed 모델 id입니다. + + + + 완료된 생성 결과입니다. Router가 반환하는 문서에서는 존재하며 비어 있지 않습니다. 이 목록 자체가 결과입니다. 각 요소는 생성된 콘텐츠의 URL(`wavespeed/flashvsr`의 경우 MP4, 두 업스케일러의 경우 이미지)이거나, 요청에서 `enable_base64_output`을 설정한 경우 두 이미지 id에 대해 base64로 인코딩된 바이트 자체입니다. 링크는 Wavespeed 자체의 것이며 만료됩니다. + + + + Wavespeed가 표기한 예측의 최종 상태입니다. 여기서는 enum으로 좁히지 않습니다. Router는 값을 변경 없이 전달하고 폴링 분류기는 비교 이전에 소문자로 변환하므로, 성공은 `completed`, `succeeded`, `success` 또는 `done`으로 대소문자에 관계없이 정당하게 도착할 수 있습니다. + + + + Wavespeed 자체의 타이밍 측정값입니다. + + + + 밀리초 단위의 추론 시간입니다. Comfy 청구가 아니라 Wavespeed의 수치입니다. + + + + 예측에 대한 Wavespeed 자체의 링크입니다. + + + + Router가 폴링한 예측 결과 URL입니다. + + + + envelope 상태 메시지입니다(예: `success`). + + +## 예시 {#examples} + +### 입력 {#input} + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 출력 {#output} + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/seedvr2/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 4200 + } + }, + "message": "success" +} +``` + + + diff --git a/ko/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx b/ko/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx new file mode 100644 index 000000000..577d3bfab --- /dev/null +++ b/ko/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx @@ -0,0 +1,181 @@ +--- +title: "Comfy Router로 Ultimate Image Upscaler 사용하기" +description: "Comfy Router를 통해 wavespeed/ultimate-image-upscaler를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Ultimate Image Upscaler" +translationSourceHash: 958a2265 +translationFrom: development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx +translationBlockHashes: + "_intro": 45710ad8 + "Quick start": 0df9b0ec + "Schema": 96a7a47b + "Examples": c8d9b760 +--- + +{/* GENERATED FILE. Generated from router-schemas/wavespeed/ultimate-image-upscaler.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`wavespeed/ultimate-image-upscaler`의 API 레퍼런스이며, Comfy Router가 WaveSpeed를 통해 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `wavespeed/ultimate-image-upscaler` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/ultimate-image-upscaler", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/ultimate-image-upscaler", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## 스키마 + +### 입력 + + + 활성화하면 출력이 URL 대신 BASE64 문자열로 인코딩됩니다. + + + + 업스케일할 이미지의 URL입니다. + + + + 출력 이미지의 형식입니다. + + 가능한 값: `jpeg`, `png`, `webp` + + + + 출력 이미지의 목표 해상도입니다. + + 가능한 값: `2k`, `4k`, `8k` + + +`GET /v2/models/wavespeed/ultimate-image-upscaler/openapi.json`에서 Router가 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + WavespeedAI 자체의 봉투 상태 코드로, HTTP 상태를 그대로 반영합니다(이 스키마가 설명하는 문서에서는 200). Wavespeed는 일부 실패를 전송 상태가 아니라 여기에 보고합니다. + + + + + + + + Wavespeed가 예측을 생성한 시각의 ISO-8601 타임스탬프입니다. + + + + Wavespeed의 자유 형식 실패 사유이며, 없으면 빈 문자열입니다. 실제로 실패한 예측은 이 문서가 아니라 Comfy Router 오류로 Router 호출자에게 전달됩니다. + + + + Router가 제출하고 폴링한 예측에 대한 Wavespeed의 식별자입니다. + + + + 예측이 실행된 Wavespeed 모델 id입니다. + + + + 완료된 생성 결과입니다. Router가 반환하는 문서에서는 존재하며 비어 있지 않습니다. 이 목록이 곧 결과입니다. 각 요소는 생성된 콘텐츠의 URL입니다. `wavespeed/flashvsr`의 경우 MP4, 두 업스케일러의 경우 이미지이며, 요청에서 `enable_base64_output`을 설정한 두 이미지 id의 경우에는 base64로 인코딩된 바이트 자체입니다. 링크는 Wavespeed 자체 링크이며 만료됩니다. + + + + Wavespeed가 표기한 예측의 최종 상태입니다. 여기서는 enum으로 좁히지 않습니다. Router는 값을 그대로 전달하고 폴링 분류기는 비교 이전에 소문자로 변환하므로, 성공은 대소문자와 무관하게 `completed`, `succeeded`, `success`, `done` 중 어느 것으로든 도착할 수 있습니다. + + + + Wavespeed 자체의 타이밍 측정값입니다. + + + + 밀리초 단위의 추론 시간입니다. Comfy 청구가 아니라 Wavespeed의 수치입니다. + + + + 예측에 대한 Wavespeed 자체의 링크입니다. + + + + Router가 폴링한 예측 결과 URL입니다. + + + + 봉투 상태 메시지입니다. 예: `success`. + + +## 예시 + +### 입력 + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 출력 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/ultimate-image-upscaler/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 9100 + } + }, + "message": "success" +} +``` + + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx new file mode 100644 index 000000000..dd0652e0a --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx @@ -0,0 +1,185 @@ +--- +title: "Comfy Router에서 Grok Imagine Image 2.0 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-image-2.0을 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Grok Imagine Image 2.0" +translationSourceHash: 8bcbfc88 +translationFrom: development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx +translationBlockHashes: + "_intro": df08f63e + "Quick start": 99cca79e + "Schema": 9a41423a + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-2.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-2.0`에 대한 API 레퍼런스입니다. 이 모델은 xAI에서 제공하며 Comfy Router가 서비스합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `xai/grok-imagine-image-2.0` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-2.0", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-2.0", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지의 가로세로 비율입니다. 기본값은 auto이며, 프롬프트에 가장 적합한 비율을 자동으로 선택합니다. + + 가능한 값: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 사용할 모델입니다. 지원: grok-imagine-image (기본값), grok-imagine-image-pro, grok-imagine-image-quality, grok-imagine-image-2.0. 지원 중단된 -beta id는 GA 모델의 별칭으로 지정됩니다. + + + + 생성할 이미지 수 + + 범위: `1` ~ `10` + + + + 이미지 생성을 위한 프롬프트 + + + + 출력 이미지의 품질입니다. grok-imagine-image-2.0의 경우 가격 등급(low/medium, 기본값은 medium)을 선택합니다. 다른 모델은 현재 이 값을 무시합니다. + + 가능한 값: `low`, `medium`, `high` + + + + 생성된 이미지의 해상도입니다. 기본값은 1k입니다. + + 가능한 값: `1k`, `2k` + + + + 이미지를 반환할 응답 형식입니다. url 또는 b64_json일 수 있습니다. Comfy Router (`POST /v2/models/xai/{model}`)는 아웃바운드 요청 시 이 값을 `url`로 강제 변환합니다. 어느 쪽이든 이미지 결과를 재호스팅된 URL로 제공하기 때문입니다. 이 `/proxy/` 라우트는 작성된 그대로 이 값을 따릅니다. + + 가능한 값: `url`, `b64_json` + + + + 이미지 크기 (지원되지 않음) + + + + 이미지 스타일 (지원되지 않음) + + + + 최종 사용자를 나타내는 고유 식별자로, xAI가 남용을 모니터링하고 탐지하는 데 도움이 됩니다 + + +Router가 `GET /v2/models/xai/grok-imagine-image-2.0/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 요청이 입력 검열에 의해 차단된 경우 차단 사유를 포함합니다 + + + + 생성된 이미지 객체의 목록 + + + + 생성된 이미지의 base64 인코딩 문자열 표현(jpeg 인코딩)입니다 (response_format이 b64_json인 경우) + + + + 생성된 이미지의 MIME 타입입니다 (예: image/png, image/jpeg, image/webp). + + + + 생성된 이미지의 url입니다 (response_format이 url인 경우) + + + + 이미지 생성 요청에 대한 사용량 정보 + + + + 이 요청의 정확한 비용(USD 틱 단위, 10,000,000,000틱 = 1 USD) + + +## 예제 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx new file mode 100644 index 000000000..c29de6bc0 --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router로 Grok Imagine Image Pro 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-image-pro를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Grok Imagine Image Pro" +translationSourceHash: c9301ace +translationFrom: development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx +translationBlockHashes: + "_intro": 2d3503a0 + "Quick start": 25496f31 + "Schema": 6f4e60ac + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 xAI로부터 제공하는 `xai/grok-imagine-image-pro`의 API Reference입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 수행합니다. + +**모델 ID:** `xai/grok-imagine-image-pro` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지의 가로세로 비율입니다. 기본값은 auto이며, 프롬프트에 가장 적합한 비율을 자동으로 선택합니다. + + 가능한 값: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 사용할 모델입니다. 지원: grok-imagine-image(기본값), grok-imagine-image-pro, grok-imagine-image-quality, grok-imagine-image-2.0. 지원 중단된 -beta ID는 GA 모델의 별칭으로 매핑됩니다. + + + + 생성할 이미지 수 + + 범위: `1` ~ `10` + + + + 이미지 생성을 위한 프롬프트 + + + + 출력 이미지의 품질입니다. grok-imagine-image-2.0의 경우 가격 등급(low/medium, 기본값은 medium)을 선택합니다. 다른 모델은 현재 이를 무시합니다. + + 가능한 값: `low`, `medium`, `high` + + + + 생성된 이미지의 해상도입니다. 기본값은 1k입니다. + + 가능한 값: `1k`, `2k` + + + + 이미지를 반환할 응답 형식입니다. url 또는 b64_json일 수 있습니다. Comfy Router(`POST /v2/models/xai/{model}`)는 아웃바운드 요청에서 이를 `url`로 강제 변환합니다. 어느 경우든 이미지 결과를 재호스팅된 URL로 제공하기 때문입니다. 이 `/proxy/` 라우트는 작성된 그대로 이를 따릅니다. + + 가능한 값: `url`, `b64_json` + + + + 이미지의 크기(지원되지 않음) + + + + 이미지의 스타일(지원되지 않음) + + + + 최종 사용자를 나타내는 고유 식별자로, xAI가 남용을 모니터링하고 탐지하는 데 도움이 됩니다 + + +Router가 `GET /v2/models/xai/grok-imagine-image-pro/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 입력 검열로 요청이 차단된 경우 차단 사유를 포함합니다 + + + + 생성된 이미지 객체 목록 + + + + 생성된 이미지의 base64 인코딩 문자열 표현(jpeg 인코딩, response_format이 b64_json인 경우) + + + + 생성된 이미지의 MIME 유형(예: image/png, image/jpeg, image/webp). + + + + 생성된 이미지의 URL(response_format이 url인 경우) + + + + 이미지 생성 요청에 대한 사용량 정보 + + + + 이 요청의 정확한 비용(USD 틱 단위, 10,000,000,000틱 = 1 USD) + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx new file mode 100644 index 000000000..f6ed92606 --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx @@ -0,0 +1,185 @@ +--- +title: "Comfy Router로 Grok Imagine Image Quality 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-image-quality를 호출합니다: endpoint, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Grok Imagine Image Quality" +translationSourceHash: a2c395de +translationFrom: development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx +translationBlockHashes: + "_intro": db3b72ef + "Quick start": 43082ab0 + "Schema": ddaa8685 + "Examples": 3222291b +--- +{/* 생성된 파일. `pnpm code-pages:gen`이 router-schemas/xai/grok-imagine-image-quality.json에서 생성했습니다. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-quality`에 대한 API 레퍼런스입니다. Comfy Router가 xAI에서 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 raw HTTP로 실행합니다. + +**모델 ID:** `xai/grok-imagine-image-quality` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-quality` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-quality", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-quality", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-quality \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 이미지의 가로세로 비율입니다. 기본값은 auto이며, 프롬프트에 가장 적합한 비율을 자동으로 선택합니다. + + 가능한 값: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 사용할 모델입니다. 지원: grok-imagine-image (기본값), grok-imagine-image-pro, grok-imagine-image-quality, grok-imagine-image-2.0. 지원 중단된 -beta id는 해당 GA 모델의 별칭으로 처리됩니다. + + + + 생성할 이미지 수 + + 범위: `1` ~ `10` + + + + 이미지 생성을 위한 프롬프트 + + + + 출력 이미지의 품질입니다. grok-imagine-image-2.0의 경우 가격 등급을 선택합니다(low/medium, 기본값은 medium). 다른 모델은 현재 이 값을 무시합니다. + + 가능한 값: `low`, `medium`, `high` + + + + 생성된 이미지의 해상도입니다. 기본값은 1k입니다. + + 가능한 값: `1k`, `2k` + + + + 이미지를 반환할 응답 형식입니다. url 또는 b64_json일 수 있습니다. Comfy Router(`POST /v2/models/xai/{model}`)는 이미지 결과를 어느 경우든 재호스팅된 URL로 제공하므로 아웃바운드 요청에서 이 값을 `url`로 강제 변환합니다. 이 `/proxy/` 경로는 기록된 그대로 이 값을 따릅니다. + + 가능한 값: `url`, `b64_json` + + + + 이미지 크기 (지원되지 않음) + + + + 이미지 스타일 (지원되지 않음) + + + + 최종 사용자를 나타내는 고유 식별자로, xAI가 남용을 모니터링하고 탐지하는 데 도움이 됩니다 + + +Router가 `GET /v2/models/xai/grok-imagine-image-quality/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에 도달하기 전에 Router가 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 입력 검열로 인해 요청이 차단된 경우 차단 사유를 포함합니다 + + + + 생성된 이미지 객체 목록 + + + + 생성된 이미지를 jpeg 인코딩으로 나타낸 base64 인코딩 문자열입니다 (response_format이 b64_json인 경우) + + + + 생성된 이미지의 MIME 타입입니다 (예: image/png, image/jpeg, image/webp). + + + + 생성된 이미지의 URL입니다 (response_format이 url인 경우) + + + + 이미지 생성 요청의 사용량 정보 + + + + 이 요청의 정확한 비용을 USD 틱 단위로 나타냅니다 (10,000,000,000틱 = 1 USD) + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-image/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-image/code.mdx new file mode 100644 index 000000000..a4ee0ac85 --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-image/code.mdx @@ -0,0 +1,184 @@ +--- +title: "Comfy Router로 Grok Imagine Image 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-image를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답을 설명합니다." +sidebarTitle: "Grok Imagine Image" +translationSourceHash: dc887d63 +translationFrom: development/comfy-router/models/xai/grok-imagine-image/code.mdx +translationBlockHashes: + "_intro": f267d74f + "Quick start": 564ff767 + "Schema": b3c91ddc + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +Comfy Router가 xAI로부터 제공하는 `xai/grok-imagine-image`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 원시 HTTP를 통한 동일한 호출입니다. + +**모델 ID:** `xai/grok-imagine-image` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 입력 + + + 생성된 이미지의 비율입니다. 프롬프트에 가장 적합한 비율을 자동으로 선택하려면 기본값인 auto를 사용합니다. + + 가능한 값: `1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 사용할 모델입니다. 지원: grok-imagine-image (기본값), grok-imagine-image-pro, grok-imagine-image-quality, grok-imagine-image-2.0. 지원 중단된 -beta id는 해당 GA 모델의 별칭으로 연결됩니다. + + + + 생성할 이미지 수 + + 범위: `1` ~ `10` + + + + 이미지 생성을 위한 프롬프트 + + + + 출력 이미지의 품질입니다. grok-imagine-image-2.0의 경우 가격 등급을 선택합니다(low/medium, 기본값은 medium). 다른 모델은 현재 이 값을 무시합니다. + + 가능한 값: `low`, `medium`, `high` + + + + 생성된 이미지의 해상도입니다. 기본값은 1k입니다. + + 가능한 값: `1k`, `2k` + + + + 이미지를 반환할 응답 형식입니다. url 또는 b64_json일 수 있습니다. Comfy Router(`POST /v2/models/xai/{model}`)는 어느 경우든 이미지 결과를 다시 호스팅된 URL로 제공하므로 아웃바운드 요청에서 이 값을 `url`로 강제 변환합니다. 이 `/proxy/` 경로는 작성된 그대로 값을 따릅니다. + + 가능한 값: `url`, `b64_json` + + + + 이미지의 크기 (지원되지 않음) + + + + 이미지의 스타일 (지원되지 않음) + + + + 최종 사용자를 나타내는 고유 식별자로, xAI가 악용을 모니터링하고 탐지하는 데 도움이 됩니다 + + +Router가 `GET /v2/models/xai/grok-imagine-image/openapi.json`에서 제공하는 스키마를 기반으로 생성되었으며, 이는 요청이 공급자에게 도달하기 전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 입력 검열로 인해 요청이 차단된 경우 차단 사유가 포함됩니다 + + + + 생성된 이미지 객체의 목록 + + + + jpeg 인코딩으로 생성된 이미지의 base64 인코딩 문자열 표현입니다(response_format이 b64_json인 경우) + + + + 생성된 이미지의 MIME 타입입니다(예: image/png, image/jpeg, image/webp). + + + + 생성된 이미지의 url입니다(response_format이 url인 경우) + + + + 이미지 생성 요청에 대한 사용 정보 + + + + 이 요청의 정확한 비용을 USD ticks 단위로 나타냅니다(10,000,000,000 ticks = 1 USD) + + +## 예시 + +### 입력 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 출력 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx new file mode 100644 index 000000000..86058a3ae --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx @@ -0,0 +1,199 @@ +--- +title: "Comfy Router로 Grok Imagine Video 1.5 Preview 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-video-1.5-preview를 호출하는 방법: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답." +sidebarTitle: "Grok Imagine Video 1.5 Preview" +translationSourceHash: 04ff660a +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx +translationBlockHashes: + "_intro": 6ab2a8c5 + "Quick start": 66aa1c97 + "Schema": d4972c90 + "Examples": 53c80746 +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-video-1.5-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video-1.5-preview`에 대한 API 레퍼런스입니다. 이 모델은 Comfy Router가 xAI로부터 제공합니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python과 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `xai/grok-imagine-video-1.5-preview` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5-preview", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5-preview", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 비디오의 화면 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3` + + + + 비디오 재생 시간(초). 범위 [1, 15]. 기본값 8. + + 범위: `1` ~ `15` + + + + xAI 엔드포인트용 입력 이미지 객체 + + + + 이미지 입력의 유형 + + 가능한 값: `image_url` + + + + 입력 이미지의 URL(공개 URL 또는 base64로 인코딩된 데이터 URI) + + + + 사용할 모델. 지원 대상: grok-imagine-video(기본값), grok-imagine-video-1.5-preview, grok-imagine-video-1.5. 지원 중단된 grok-imagine-video-beta id는 grok-imagine-video의 별칭입니다. + + + + 생성된 비디오의 선택적 출력 대상 + + + + 비디오 생성을 위한 프롬프트. 최대 4,096자. + + + + 비디오 생성을 안내하는 하나 이상의 레퍼런스 이미지(레퍼런스 기반 비디오 생성 모드). image와 함께 사용할 수 없습니다. Router는 application/json만 전달하며 이 객체와 XAIImageObject 모두 file_id를 허용하지 않으므로, 이 경로에서는 파일 기반 이미지 입력이 지원되지 않습니다. + + + + 레퍼런스 이미지의 URL. HTTPS URL(공개) 또는 base64로 인코딩된 데이터 URL(예: data:image/jpeg;base64,...)을 지원합니다. + + + + 출력 비디오의 해상도 + + + + 출력 비디오의 크기 + + + + 최종 사용자를 나타내는 고유 식별자 + + +Router가 `GET /v2/models/xai/grok-imagine-video-1.5-preview/openapi.json`에서 제공하는 스키마에서 생성되었으며, 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 요청이 입력 검열로 인해 차단된 경우 차단 사유를 포함합니다 + + + + 비디오 생성에 사용된 모델 + + + + 지연된 요청의 상태: "pending" 또는 "done" + + 가능한 값: `pending`, `done` + + + + 비디오 생성 요청에 대한 사용량 정보 + + + + 이 요청의 비용을 USD 틱으로 나타낸 값입니다. 1 미국 센은 100,000,000틱이므로 1 미국 달러는 10,000,000,000틱입니다. + + + + xAI에서 생성된 비디오 + + + + 생성된 비디오의 재생 시간(초) + + + + 모델이 생성한 비디오가 검열 규칙을 준수하는지 여부 + + + + 생성된 비디오의 다운로드 URL입니다. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 다시 작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 유효 시간이 1시간도 되지 않은 URL이 반환될 수 있습니다. 재호스팅을 수행할 수 없는 경우에는 이 필드가 xAI 자체의 수명이 짧은 URL을 그대로 유지합니다. NULLABLE: `url`이 비어 있는 성공은 완료된 생성이 아닙니다. 어느 경우든 링크는 만료되므로 URL을 저장하지 말고 비디오를 다운로드하세요. + + +## 예시 + +### 입력 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 출력 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx new file mode 100644 index 000000000..9548d5fcc --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx @@ -0,0 +1,200 @@ +--- +title: "Comfy Router로 Grok Imagine Video 1.5 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-video-1.5를 호출합니다: 엔드포인트, 요청 형태, 그리고 Router가 반환하는 응답입니다." +sidebarTitle: "Grok Imagine Video 1.5" +translationSourceHash: 628498a9 +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx +translationBlockHashes: + "_intro": 9cd89e4e + "Quick start": 041f88be + "Schema": 7567f6f2 + "Examples": 53c80746 +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-video-1.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +xAI가 Comfy Router를 통해 제공하는 `xai/grok-imagine-video-1.5`의 API 레퍼런스입니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK를 사용하며(`pip install comfy-sdk`, `npm install @comfyorg/sdk`), cURL 스니펫은 동일한 호출을 원시 HTTP로 전송합니다. + +**모델 ID:** `xai/grok-imagine-video-1.5` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 비디오의 화면 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3` + + + + 비디오 재생 시간(초). 범위 [1, 15]. 기본값 8. + + 범위: `1` ~ `15` + + + + xAI 엔드포인트용 입력 이미지 객체 + + + + 이미지 입력의 유형 + + 가능한 값: `image_url` + + + + 입력 이미지의 URL(공개 URL 또는 base64로 인코딩된 data URI) + + + + 사용할 모델. 지원: grok-imagine-video(기본값), grok-imagine-video-1.5-preview, grok-imagine-video-1.5. 지원 중단된 grok-imagine-video-beta id는 grok-imagine-video의 별칭입니다. + + + + 생성된 비디오의 선택적 출력 대상 + + + + 비디오 생성을 위한 프롬프트. 최대 4,096자. + + + + 비디오 생성을 안내할 하나 이상의 레퍼런스 이미지(레퍼런스 기반 비디오 생성 모드). image와 함께 사용할 수 없습니다. Router는 application/json만 전달하며 이 객체와 XAIImageObject 모두 file_id를 허용하지 않으므로, 이 경로에서는 파일 기반 이미지 입력이 지원되지 않습니다. + + + + 레퍼런스 이미지의 URL. HTTPS URL(공개) 또는 base64로 인코딩된 data URL(예: data:image/jpeg;base64,...)을 지원합니다. + + + + 출력 비디오의 해상도 + + + + 출력 비디오의 크기 + + + + 최종 사용자를 나타내는 고유 식별자 + + +Router가 `GET /v2/models/xai/grok-imagine-video-1.5/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이는 요청이 공급자에 도달하기 이전에 Router가 호출을 검증하는 바로 그 문서입니다. + +### 출력 + + + 입력 검열로 요청이 차단된 경우 차단 사유를 포함합니다 + + + + 비디오 생성에 사용된 모델 + + + + 지연된 요청의 상태: "pending" 또는 "done" + + 가능한 값: `pending`, `done` + + + + 비디오 생성 요청의 사용량 정보 + + + + 이 요청의 비용을 USD tick 단위로 나타낸 값. 1 미국 센트는 100,000,000 tick이고, 1 미국 달러는 10,000,000,000 tick입니다. + + + + xAI가 생성한 비디오 + + + + 생성된 비디오의 재생 시간(초) + + + + 모델이 생성한 비디오가 검열 규칙을 준수하는지 여부 + + + + 생성된 비디오의 다운로드 URL. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시 24시간으로 서명되고 23시간 메모에서 재생되므로, 나중에 폴링하면 남은 유효 기간이 1시간도 되지 않는 URL을 받을 수 있습니다. 재호스팅을 수행할 수 없었던 경우에는 이 필드가 xAI 자체의 단기 URL을 유지합니다. NULLABLE: `url`이 비어 있는 성공은 완료된 생성이 아닙니다. 어느 경우든 링크는 만료되므로, URL을 저장하지 말고 비디오를 다운로드하세요. + + +## 예시 + +### 입력 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 출력 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + + diff --git a/ko/development/comfy-router/models/xai/grok-imagine-video/code.mdx b/ko/development/comfy-router/models/xai/grok-imagine-video/code.mdx new file mode 100644 index 000000000..54a15b7db --- /dev/null +++ b/ko/development/comfy-router/models/xai/grok-imagine-video/code.mdx @@ -0,0 +1,200 @@ +--- +title: "Comfy Router로 Grok Imagine Video 사용하기" +description: "Comfy Router를 통해 xai/grok-imagine-video 호출하기: 엔드포인트, 요청 형태, Router가 반환하는 응답." +sidebarTitle: "Grok Imagine Video" +translationSourceHash: 81ba818e +translationFrom: development/comfy-router/models/xai/grok-imagine-video/code.mdx +translationBlockHashes: + "_intro": aaeed1e5 + "Quick start": 170d6503 + "Schema": 8371176e + "Examples": 1085f4b8 +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/ko/comfy-router/model-code-footer.mdx"; + +xAI의 `xai/grok-imagine-video`에 대한 API 레퍼런스로, Comfy Router를 통해 제공됩니다. + +## 빠른 시작 + +[Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하고 `COMFY_API_KEY`로 내보내세요. Python 및 TypeScript 스니펫은 Comfy SDK(`pip install comfy-sdk`, `npm install @comfyorg/sdk`)를 사용하며, cURL 스니펫은 동일한 호출을 원시 HTTP로 수행합니다. + +**모델 ID:** `xai/grok-imagine-video` + +**엔드포인트:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## 스키마 + +### 입력 + + + 생성된 비디오의 화면 비율 + + 가능한 값: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3` + + + + 비디오 재생 시간(초). 범위 [1, 15]. 기본값 8. + + 범위: `1` ~ `15` + + + + xAI 엔드포인트용 입력 이미지 객체 + + + + 이미지 입력의 유형 + + 가능한 값: `image_url` + + + + 입력 이미지의 URL (공개 URL 또는 base64로 인코딩된 데이터 URI) + + + + 사용할 모델. 지원: grok-imagine-video(기본값), grok-imagine-video-1.5-preview, grok-imagine-video-1.5. 지원 중단된 grok-imagine-video-beta id는 grok-imagine-video의 별칭입니다. + + + + 생성된 비디오의 선택적 출력 대상 + + + + 비디오 생성을 위한 프롬프트. 최대 4,096자. + + + + 비디오 생성을 유도하기 위한 하나 이상의 레퍼런스 이미지(레퍼런스 기반 비디오 생성 모드). image와 함께 사용할 수 없습니다. Router는 application/json만 전달하며 이 객체와 XAIImageObject 모두 file_id를 허용하지 않으므로, 이 경로에서는 파일 기반 이미지 입력이 지원되지 않습니다. + + + + 레퍼런스 이미지의 URL. HTTPS URL(공개) 또는 base64로 인코딩된 데이터 URL(예: data:image/jpeg;base64,...)을 지원합니다. + + + + 출력 비디오의 해상도 + + + + 출력 비디오의 크기 + + + + 최종 사용자를 나타내는 고유 식별자 + + +Router가 `GET /v2/models/xai/grok-imagine-video/openapi.json`에서 제공하는 스키마에서 생성되었으며, 이 문서는 요청이 공급자에게 도달하기 이전에 호출을 검증하는 데 사용하는 것과 동일한 문서입니다. + +### 출력 + + + 입력 검열로 인해 요청이 차단된 경우 차단 사유를 포함합니다 + + + + 비디오를 생성하는 데 사용된 모델 + + + + 지연된 요청의 상태: "pending" 또는 "done" + + 가능한 값: `pending`, `done` + + + + 비디오 생성 요청에 대한 사용량 정보 + + + + USD 틱으로 표시된 이 요청의 비용입니다. 1 USD 센트는 100,000,000틱이므로, 1 미국 달러는 10,000,000,000틱입니다. + + + + xAI에서 생성된 비디오 + + + + 생성된 비디오의 재생 시간(초) + + + + 모델이 생성한 비디오가 검열 규칙을 준수하는지 여부 + + + + 생성된 비디오의 다운로드 URL. Router는 비디오를 Comfy 스토리지에 다시 호스팅하고 이 필드를 재작성하므로, 일반적으로 최대 24시간 동안 유효한 Comfy 서명 URL입니다. 발급 시점에 24시간으로 서명되며 23시간짜리 메모에서 재생되므로, 나중에 폴링하면 남은 유효 시간이 1시간도 되지 않은 URL이 반환될 수 있습니다. 다시 호스팅할 수 없는 경우에는 이 필드가 xAI 자체의 수명이 짧은 URL을 그대로 유지합니다. NULLABLE: `url`이 비어 있는 성공은 완료된 생성이 아닙니다. 어느 경우든 링크는 만료되므로 URL을 저장하기보다 비디오를 다운로드하세요. + + +## 예시 + +### 입력 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 출력 + +```json +{ + "model": "grok-imagine-video", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + + diff --git a/ko/development/comfy-router/quickstart.mdx b/ko/development/comfy-router/quickstart.mdx index a53842a87..00dea0415 100644 --- a/ko/development/comfy-router/quickstart.mdx +++ b/ko/development/comfy-router/quickstart.mdx @@ -1,330 +1,117 @@ --- title: "Comfy Router 빠른 시작" +sidebarTitle: "빠른 시작" description: "아무것도 없는 상태에서 Python과 TypeScript로 Comfy Router를 사용해 약 5분 만에 생성된 이미지를 얻는 방법." -translationSourceHash: 50fc5524 +translationSourceHash: 77d3b143 translationFrom: development/comfy-router/quickstart.mdx -translationBlockHashes: - "_intro": 46050c92 - "Why this page uses `bfl/flux-2-pro`": 0eaf0bb3 - "Get a key": 843d281f - "cURL": bc3e1e4c - "Python": 059e95b8 - "TypeScript": 1053430f - "Reading the `422`": 602cd505 - "Find a model": 9b7855c1 - "Where the model's fields come from": 7861bd52 - "Next": 6aa641e1 --- - -**Comfy Router는 아직 일반에 공개되지 않았습니다.** 아래의 라우트, 즉 `POST /v1/models/{provider}/{model}` 및 해당 카탈로그와 스키마 관련 라우트는 아직 요청을 처리하지 않습니다. 현재 인증된 호출은 `404`를 반환합니다. 이 페이지는 이 라우트가 제공할 계약을 문서화하며, 해당 출시에 앞서 게시되어 통합 코드를 미리 작성할 수 있도록 합니다. 지금 바로 사용할 수 있는 동작에 대한 설명은 아닙니다. - -Comfy Router는 파트너 모델을 하나의 호스트, 하나의 자격 증명, 하나의 라우트 형태 뒤에서 실행합니다. 이 페이지는 생성된 이미지에 도달하는 가장 짧은 완전한 경로입니다. 클라이언트를 설치하고, 키를 설정하고, 요청을 하나 보내고, 결과를 읽고, 실제로 마주하기 이전에 첫 번째 실패가 어떤 모습인지 확인하는 것입니다. +
-Base URL은 `https://api.comfy.org`입니다. 라우트는 `POST /v1/models/{provider}/{model}`이며, 요청 본문은 모델 자체의 네이티브 JSON 입력이고, `200`은 모델 자체의 네이티브 JSON 출력을 전달합니다. Router는 입력도 출력도 래핑하지 않으므로, 이미 파트너 API에 대해 작성한 호출은 호스트만 변경하면 Router 호출이 됩니다. +Comfy Router를 사용하면 하나의 Comfy API 키로 `https://api.comfy.org`를 통해 파트너 모델을 호출할 수 있습니다. 모델의 입력을 `POST /v2/models/{provider}/{model}`로 보내고 완료된 결과를 기다리면 됩니다. 이 예시에서는 `bfl/flux-2-pro`로 이미지를 생성합니다. -## 이 페이지에서 `bfl/flux-2-pro`를 사용하는 이유 + + + [Comfy 워크스페이스](https://platform.comfy.org/profile/api-keys)에서 키를 생성하세요. Bash 호환 터미널에서 다음을 설정합니다: -`bfl/flux-2-pro`는 p50 기준 약 3.1초 만에 결과를 반환하며, 이는 Router에서 측정된 경로 중 가장 빠른 것입니다. 바로 이 점 덕분에 5분 안에 첫 결과를 얻는 것이 현실적입니다. 더 느린 모델을 사용한다면 그 시간을 문서를 읽는 대신 기다리는 데 쓰게 될 것입니다. + ```bash + export COMFY_API_KEY="comfyui-..." + ``` -이는 편의를 위한 것이지 필수 사항은 아닙니다. Router의 다른 모든 모델도 정확히 동일한 방식으로 호출됩니다. 동일한 라우트, 동일한 자격 증명 헤더, 동일한 오류 범주, 동일한 `X-Comfy-Request-Id`를 사용합니다. 변경되는 것은 모델 ID, 요청 본문 내부의 필드, 그리고 반환되는 결과의 형태뿐입니다. 예를 들어 Gemini는 p95 기준 72.8초로 여유 있게 완료됩니다. Router는 폴링할 작업 핸들을 반환하는 대신 전체 생성 과정 동안 연결을 유지합니다. 긴 호출을 중도에 끊는 엣지 상한선은 없지만, Router는 호출 자체에 한계를 둡니다. 자체 서버 데드라인(기본 10분)이 연결을 유지하는 최대 시간이며, 이를 초과하면 `504` / `deadline_exceeded`로 응답하고 청구하지 않습니다. 모델 ID를 교체하고 해당 모델의 필드를 자체 스키마(아래)에서 읽으면 됩니다. + API 키는 서버나 로컬 환경에 보관하세요. 이 예시는 터미널 또는 서버용이며, 브라우저 JavaScript용이 아닙니다. + -## 키 발급받기 + + 이 이미지에 대해 이 값을 한 번 생성하세요. 같은 요청을 다시 시도할 때는 이 값을 재사용하세요. -Router는 Comfy API 키로 인증합니다. [platform.comfy.org/profile/api-keys](https://platform.comfy.org/profile/api-keys)에서 키를 생성한 다음 환경 변수에 넣으세요. 아래 두 샘플 모두 `COMFY_API_KEY`를 읽으며 키를 리터럴로 받지 않으므로, 복사해서 붙여넣은 스니펫에는 자격 증명이 포함되지 않아 커밋에 올라갈 일이 없습니다. + ```bash + export COMFY_REQUEST_KEY="$(uuidgen)" + ``` -```bash -export COMFY_API_KEY="comfyui-..." -``` + `uuidgen`을 사용할 수 없다면 다른 UUID 생성기를 사용하세요. 새로운 이미지를 시작할 때는 새 키를 사용하세요. + - -`comfyui-` 키는 **`X-API-Key`** 헤더와 **`Authorization: Bearer`** 중 어느 쪽으로 보내도 허용됩니다. 서비스가 API 키임을 판별하는 기준은 헤더가 아니라 `comfyui-` 접두사이므로, 두 형식은 동일하게 조회됩니다. 아래 예시는 `X-API-Key`를 사용하지만 `Authorization: Bearer $COMFY_API_KEY`도 동등합니다. 두 헤더를 모두 보내면 `X-API-Key`의 키가 우선합니다. `comfyui-` 접두사가 **없는** 값을 `Authorization: Bearer`로 보내면 Cloud/Firebase **JWT**로 취급됩니다 (생성된 [API reference](/ko/development/comfy-router/reference)에서 "bearer token"이 의미하는 바가 바로 이것입니다). - + + 언어를 선택하고 예시를 실행하세요. 이미지 생성에는 몇 분이 걸릴 수 있습니다. -키는 워크스페이스별로 존재하며 해당 워크스페이스의 모델 사용 권한과 크레딧 잔액을 수반합니다. 사용 가능한 자격 증명이 없는 요청은 `X-Comfy-Error-Type: unauthorized`와 함께 `401`을 반환하고, 워크스페이스가 모델을 실행할 수 없는 요청은 `403` / `forbidden`을 반환합니다. + -## cURL + ```bash cURL + curl --max-time 660 \ + https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $COMFY_REQUEST_KEY" \ + -H "Content-Type: application/json" \ + -d '{"prompt": "a red teapot on a windowsill, morning light"}' + ``` -가장 짧은 호출로, 스크립트, 스모크 테스트, 터미널에 복사하여 붙여넣기용입니다: + ```python Python + # Python 3.10+ + # Install: python -m pip install "comfy-sdk>=0.1.9" + # Save as quickstart.py, then run: python quickstart.py -```bash -curl https://api.comfy.org/v1/models/bfl/flux-2-pro \ - -H "X-API-Key: $COMFY_API_KEY" \ - -H "Idempotency-Key: $(uuidgen)" \ - -H "Content-Type: application/json" \ - -d '{"prompt": "a red teapot on a windowsill, morning light"}' -``` + import os -응답은 모델의 네이티브 출력이며, 아래 샘플들이 읽는 것과 정확히 동일합니다. 실패 시 본문에는 오류가 포함되고 `X-Comfy-Error-Type` 헤더가 오류 범주를 명명합니다. 나중에 문의해야 하는 응답의 `X-Comfy-Request-Id` 헤더를 보관하세요. macOS와 Linux에는 `uuidgen`이 기본 제공됩니다. Windows에서는 `New-Guid` 또는 다른 UUID 소스로 Idempotency-Key를 생성하세요. + from comfy_sdk import Comfy -## Python + # Comfy reads COMFY_API_KEY from the environment. + with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + {"prompt": "a red teapot on a windowsill, morning light"}, + idempotency_key=os.environ["COMFY_REQUEST_KEY"], + timeout=660.0, + ) -Python 3.9+ 및 `httpx`가 필요합니다: + print("image:", result["result"]["sample"]) + ``` -```bash -pip install httpx -``` + ```typescript TypeScript + // Node.js 22+ + // Install: npm install @comfyorg/sdk@^0.1.9 --save-dev tsx + // Save as quickstart.mts, then run: npx tsx quickstart.mts -`quickstart.py`로 저장하고 `python quickstart.py`로 실행합니다: + import { comfy } from "@comfyorg/sdk"; -```python -import os -import uuid + // Comfy reads COMFY_API_KEY from the environment. + type FluxResult = { result: { sample: string } }; + const idempotencyKey = process.env.COMFY_REQUEST_KEY; + if (!idempotencyKey) throw new Error("Set COMFY_REQUEST_KEY first."); -import httpx + const { data } = await comfy.models.run( + "bfl/flux-2-pro", + { prompt: "a red teapot on a windowsill, morning light" }, + { idempotencyKey, timeoutMs: 660_000 }, + ); -BASE_URL = os.environ.get("COMFY_ROUTER_BASE_URL", "https://api.comfy.org") -MODEL = "bfl/flux-2-pro" + console.log("image:", data.result.sample); + ``` -# Give the client headroom ABOVE Router's own server deadline (10 minutes by -# default) so a call that reaches the server bound comes back as a typed 504 -# with a request id rather than as an opaque client abort. The deadline bounds -# how long Router holds the connection, not whether the call is billed: if the -# provider completed the generation, it is billed either way. -READ_TIMEOUT_SECONDS = 660.0 + + 두 SDK 모두 환경 변수에서 `COMFY_API_KEY`를 읽습니다. + -class RouterError(Exception): - """A Comfy Router failure, typed by its X-Comfy-Error-Type bucket.""" + + 이 모델의 경우 이미지 URL은 응답 본문의 `result.sample`에 있습니다. 축약된 응답은 다음과 같으며, 아래 URL은 예시일 뿐입니다: - def __init__(self, response: httpx.Response) -> None: - self.error_type = response.headers.get("X-Comfy-Error-Type", "internal_error") - self.request_id = response.headers.get("X-Comfy-Request-Id") - self.status_code = response.status_code - # Parse defensively: an error can arrive as an HTML 502 from a load - # balancer, a plain-text 429, an empty body or a truncated JSON one. The - # status, the bucket and the request id above are the parts worth - # keeping, so a body that will not parse must not replace this exception - # with a JSONDecodeError and lose them. - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - detail = body.get("detail") if isinstance(body, dict) else None - # A 422 carries a detail[] array - one entry per rejected field, each - # keeping its own `loc`, `msg` and `type`. Every other bucket carries a - # plain `detail` string. - self.errors = detail if isinstance(detail, list) else [] - self.detail = detail if isinstance(detail, str) else f"HTTP {response.status_code}" - super().__init__(self.detail) + ```json + { + "status": "Ready", + "result": { "sample": "https://example.com/generated-image.jpeg" } + } + ``` + 반환된 URL을 열거나 다운로드하세요: -def run(model: str, arguments: dict, idempotency_key: str) -> dict: - # Idempotency-Key makes a retry safe on a PAID call: Router replays the - # original response for 24h instead of dispatching (and billing) the - # provider a second time. Reuse the SAME key when retrying one logical - # call; generate a new one for a new call. - response = httpx.post( - f"{BASE_URL}/v1/models/{model}", - headers={ - "X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": idempotency_key, - }, - json=arguments, - timeout=httpx.Timeout(READ_TIMEOUT_SECONDS, connect=10.0), - ) - if response.is_error: - raise RouterError(response) - return response.json() + ```bash + curl --fail --location "PASTE_IMAGE_URL_HERE" --output teapot.jpg + ``` + 지체 없이 다운로드하세요. Router는 BFL 에셋을 Comfy 스토리지에 다시 호스팅할 수 있지만, URL은 만료되며 재생(replay)해도 갱신되지 않습니다. 재호스팅이 실패하면 수명이 더 짧은 공급자 URL이 남을 수 있습니다. [결과 에셋](/ko/development/comfy-router/reference#결과-에셋)을 참고하세요. + + -result = run( - MODEL, - {"prompt": "a red teapot on a windowsill, morning light"}, - idempotency_key=str(uuid.uuid4()), -) -# Router forwards each provider's native output unchanged, so this path is -# BFL's, not a Router envelope. Reading a different model means reading its own -# output shape. -print("image:", result["result"]["sample"]) +## 모델 선택 -# The first failure most callers hit: a field the model's input schema requires -# is missing, so Router rejects the request BEFORE any provider call - which is -# why a 422 is never billed. -try: - run(MODEL, {"width": 1024}, idempotency_key=str(uuid.uuid4())) -except RouterError as exc: - print(f"{exc.error_type} (HTTP {exc.status_code}), request id {exc.request_id}") - for entry in exc.errors: - print(" ", ".".join(str(p) for p in entry["loc"]), "->", entry["msg"]) -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## TypeScript - -Node 18+(기본 제공 `fetch`, `AbortSignal.timeout`, `crypto.randomUUID` 사용)와 TypeScript를 직접 실행하기 위한 `tsx`가 필요합니다: - -```bash -npm install --save-dev tsx -``` - -`quickstart.mts`로 저장합니다. `.mts` 확장자는 중요합니다. 파일이 최상위 `await`를 사용하므로 ES 모듈이 필요하기 때문입니다. `npx tsx quickstart.mts`로 실행합니다: - -```typescript -const API_KEY = process.env.COMFY_API_KEY; -if (!API_KEY) throw new Error("Set COMFY_API_KEY before running this sample."); - -const BASE_URL = process.env.COMFY_ROUTER_BASE_URL ?? "https://api.comfy.org"; -const MODEL = "bfl/flux-2-pro"; - -// Headroom ABOVE Router's own server deadline (10 minutes by default), so a -// call that reaches the server bound returns a typed 504 with a request id -// rather than aborting locally at the same moment. The deadline bounds how -// long Router holds the connection, not whether the call is billed: if the -// provider completed the generation, it is billed either way. -const CLIENT_TIMEOUT_MS = 660_000; - -interface ValidationEntry { - loc: (string | number)[]; - msg: string; - type: string; -} - -/** A Comfy Router failure, typed by its `X-Comfy-Error-Type` bucket. */ -class RouterError extends Error { - readonly errorType: string; - readonly requestId: string | null; - readonly status: number; - /** A 422 carries a `detail[]` array — one entry per rejected field, each - * keeping its own `loc`, `msg` and `type`. Every other bucket carries a - * plain `detail` string. */ - readonly errors: ValidationEntry[]; - - constructor(response: Response, body: unknown) { - const detail = - typeof body === "object" && body !== null - ? (body as { detail?: unknown }).detail - : undefined; - super(typeof detail === "string" ? detail : `HTTP ${String(response.status)}`); - this.name = "RouterError"; - this.errorType = response.headers.get("X-Comfy-Error-Type") ?? "internal_error"; - this.requestId = response.headers.get("X-Comfy-Request-Id"); - this.status = response.status; - this.errors = Array.isArray(detail) ? (detail as ValidationEntry[]) : []; - } -} - -/** Read a body without letting a non-JSON error page mask the real failure. */ -async function parseBody(response: Response): Promise { - const text = await response.text(); - try { - return JSON.parse(text) as unknown; - } catch { - return undefined; - } -} - -async function run( - model: string, - args: Record, - idempotencyKey: string, -): Promise { - // Idempotency-Key makes a retry safe on a PAID call: Router replays the - // original response for 24h instead of dispatching (and billing) the provider - // a second time. Reuse the SAME key when retrying one logical call. - const response = await fetch(`${BASE_URL}/v1/models/${model}`, { - method: "POST", - headers: { - "X-API-Key": API_KEY, - "Idempotency-Key": idempotencyKey, - "Content-Type": "application/json", - }, - body: JSON.stringify(args), - signal: AbortSignal.timeout(CLIENT_TIMEOUT_MS), - }); - // Read the body without letting it decide the outcome: an HTML 502, a - // plain-text 429 or an empty body still yields the status, the bucket and - // the request id, because `parseBody` returns `undefined` on a parse failure. - const body = await parseBody(response); - if (!response.ok) throw new RouterError(response, body); - return body as T; -} - -const result = await run<{ result: { sample: string } }>( - MODEL, - { prompt: "a red teapot on a windowsill, morning light" }, - crypto.randomUUID(), -); -// Router forwards each provider's native output unchanged, so this path is -// BFL's, not a Router envelope. Reading a different model means reading its own -// output shape. -console.log("image:", result.result.sample); - -// The first failure most callers hit: a field the model's input schema requires -// is missing, so Router rejects the request BEFORE any provider call - which is -// why a 422 is never billed. -try { - await run(MODEL, { width: 1024 }, crypto.randomUUID()); -} catch (exc) { - if (!(exc instanceof RouterError)) throw exc; - console.log(`${exc.errorType} (HTTP ${String(exc.status)}), request id ${String(exc.requestId)}`); - for (const entry of exc.errors) console.log(" ", entry.loc.join("."), "->", entry.msg); -} -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## `422` 읽기 - -`422`는 첫 실제 호출 이전에 이해할 가치가 있는 유일한 오류입니다. 바로 사용자가 발생시키는 오류이기 때문입니다. Router가 요청 본문을 모델 자체의 입력 스키마와 대조한 후 거부했음을 의미합니다. 필수 필드 누락, 범위를 벗어난 값, 너무 작은 이미지 등이 그 예입니다. - -이 검사는 모든 공급자 호출 이전에 실행되므로 `422`는 비용이 들지 않습니다. 파트너 지출도 없고, 이후에 답변해야 할 청구 문제도 없습니다. 이는 필드별 실패가 아닌 요청 수준 실패(잘못된 커서, 읽을 수 없는 봉투)인 `400`과는 다릅니다. - -그 본문은 FastAPI의 `detail[]` 형태입니다. 문제가 있는 각 필드마다 항목이 하나씩 있는 배열이며, 각 항목은 자체 `loc`(필드 경로), `msg`, `type`(공급자 수준의 구체적인 이유: `missing`, `value_error`, `image_too_small`) 및 이유에 경계값이 포함된 경우 `ctx`를 유지합니다. 이러한 필드별 세분성 때문에 위 샘플들은 배열을 예외 메시지로 평탄화하지 않고 데이터로 유지하는 것입니다. - - - 입력 스키마가 아직 작성되지 않은 모델은 모든 JSON 객체를 허용하는 문서화된 관대한 폴백으로 처리되므로 `422`로 응답하는 대신 본문을 전달합니다. 위 샘플은 스키마가 존재할 때 처리하는 형태를 보여줍니다. `422` 블록을 특정 본문에 대한 보장된 응답이 아닌 오류 경로로 취급하세요. - - -해당 본문에는 자체 `error_type` 필드가 없으므로 `422`에서는 `X-Comfy-Error-Type` 헤더가 머신이 읽을 수 있는 *유일한* 버킷입니다. 두 샘플 모두 바로 그 이유로 먼저 헤더에서 버킷을 읽습니다. 이는 또한 하나의 오류 클래스만으로 Router가 반환할 수 있는 모든 실패를 처리하기에 충분한 이유이기도 합니다. - -`X-Comfy-Request-Id`는 성공, `4xx`, `5xx` 할 것 없이 모든 응답에 포함되며 지원팀 요청에서 인용할 ID입니다. 두 샘플 모두 헤더 로깅을 켜고 다시 실행하여 찾도록 하는 대신 이 ID를 예외에 첨부합니다. - -## 모델 찾기 - -`bfl/flux-2-pro`는 ID 하나일 뿐이고, 나머지는 카탈로그에 있습니다. `GET /v1/models`는 Router가 실행할 수 있는 모든 모델을 한 페이지씩 나열하며, 각 항목은 호출에 필요한 정보 그 자체입니다. 경로에 넣을 `id`, 따로 담긴 `provider`와 `model` 세그먼트, 그리고 비용을 쓰기 전에 분기 판단에 쓸 수 있는 `billing` 블록입니다. - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v1/models?limit=50" -``` - -```json -{ - "data": [ - { "id": "bfl/flux-2-pro", "provider": "bfl", "model": "flux-2-pro", "billing": { "charges_on_policy_rejection": "no" } } - ], - "has_more": true, - "next_cursor": "q7Fm2xTn9pLd4RsV", - "limit": 50 -} -``` - -오프셋이 아니라 커서로 순회하세요. `next_cursor`를 `?cursor=`로 그대로 돌려보내고, 페이지가 짧게 돌아왔을 때가 아니라 `has_more`가 `false`일 때 멈추세요. 커서는 불투명한 값이며 그대로 왕복시키기만 합니다. Router가 받아들이지 않는 커서는 `400` / `invalid_input`이 되며, 조용히 첫 페이지부터 다시 시작하는 일은 결코 없습니다. 커서는 카탈로그 정렬 순서상의 위치이므로 모델을 추가하거나 제거하는 배포를 거쳐도 유효합니다. 이미 지나온 위치에 추가된 모델은 이번 순회에서 방문되지 않을 뿐입니다. 목록에 대한 `503` / `service_unavailable`은 Router가 아직 응답할 수 없다는 뜻입니다(파드가 릴리스 상태를 아직 로드하는 중). 재시도하세요. 빈 카탈로그로 해석하면 안 됩니다. 응답의 `limit`은 실제로 제공된 페이지 크기입니다. 상한을 넘는 요청은 거부되지 않고 상한으로 잘리므로, 돌아온 숫자로 페이지를 나누세요. 배포되었지만 아직 릴리스되지 않은 모델은 어느 페이지에도 나타나지 않습니다. - -## 모델 필드의 출처 - -`prompt`는 `bfl/flux-2-pro`가 요구하는 유일한 필드이며, 다음으로 자주 사용하게 될 필드는 `width`, `height`, `seed`, `output_format`입니다. 시간이 지나며 달라질 수 있는 필드 목록을 그대로 옮겨 적는 대신, 모델의 스키마를 실시간으로 확인하세요: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v1/models/bfl/flux-2-pro/openapi.json -``` - -이 문서는 서버가 호출을 검증할 때 사용하는 바로 그 문서로, 독립형 OpenAPI 문서로 제공됩니다. 따라서 게시된 내용과 실제로 적용되는 내용이 서로 어긋날 수 없습니다. 위 카탈로그에서 아무 `id`나 선택한 뒤 해당 호출 경로에 `/openapi.json`을 붙이면, 반환된 결과를 기준으로 생성을 진행할 수 있습니다. - -## 다음 - -- [Comfy Router API 참조](/ko/development/comfy-router/reference): 모든 엔드포인트와 모든 매개변수, 그리고 15가지 오류 범주를 다룹니다. -- [Comfy Router 제한 사항](/ko/development/comfy-router/limitations): 현재 Router가 지원하지 않는 기능과 대신 사용할 수 있는 방법을 설명합니다. +[Comfy Router를 통해 사용할 수 있는 모델을 찾아보고](/ko/development/comfy-router/models), 각 모델의 입력을 확인한 다음, 이 예시의 모델 ID를 바꾸세요. \ No newline at end of file diff --git a/ko/development/comfy-router/reference.mdx b/ko/development/comfy-router/reference.mdx index 82188be01..3962f6406 100644 --- a/ko/development/comfy-router/reference.mdx +++ b/ko/development/comfy-router/reference.mdx @@ -1,15 +1,16 @@ --- title: "Comfy Router API 레퍼런스" description: "Comfy API 계약에서 생성된 모든 Comfy Router 엔드포인트, 매개변수, 응답 본문 및 오류 버킷." -translationSourceHash: 5b914bce +translationSourceHash: 70ca7dac translationFrom: development/comfy-router/reference.mdx translationBlockHashes: - "_intro": 0114a881 - "Endpoints": 93fdf96a - "Error buckets": bfbc4524 - "Response headers": 8f8b3475 - "Per-model input schemas": ae73e63b - "Schemas": 8ce93415 + "_intro": 3f6e5d23 + "Endpoints": f86ab166 + "Error buckets": 3c6deea9 + "Response headers": 10172430 + "Result assets": 30d46145 + "Per-model input and output schemas": c894d16d + "Schemas": 613fffa2 --- @@ -21,71 +22,77 @@ translationBlockHashes: 드리프트 게이트(drift gate)에서 거부됩니다. */} +
+ Comfy Router의 정식 라우트로, 모델 ID로 주소가 지정됩니다. 기본 URL: `https://api.comfy.org` -아래의 모든 엔드포인트에는 인증이 필요합니다. `Authorization: Bearer `를 전송하십시오. +아래의 모든 엔드포인트에는 인증이 필요합니다. `X-API-Key: ` 또는 `Authorization: Bearer `를 전송하십시오. + +Comfy API 키는 Bearer 토큰으로도 전송할 수 있습니다. 두 자격 증명 헤더를 모두 제공하면 `X-API-Key`가 우선합니다. 키와 JWT의 구분은 [인증 헤더](/ko/development/comfy-router/quickstart)를, 액세스 요구 사항은 [퀵스타트](/ko/development/comfy-router/quickstart)를 참고하십시오. ## 엔드포인트 -### `GET /v1/models` +### `GET /v2/models` **Comfy Router가 실행할 수 있는 모델을 나열합니다.** -Comfy Router의 모델 카탈로그 - `POST /v1/models/{provider}/{model}`가 허용하는 표준 모델 ID의 한 페이지입니다. SDK는 콜드 스타트 시 이 엔드포인트를 호출하여 실행 가능한 모델을 발견하며, `model_not_found` 제안도 동일한 카탈로그에서 제공됩니다. 따라서 여기에 나열된 ID가 호출 시 404를 반환한다면 어느 한쪽만 실패하는 것보다 더 나쁩니다. 이러한 일관성은 약속이 아니라 구조적인 것입니다. 항목의 `provider`와 `model`은 호출 경로의 두 경로 세그먼트이며 해당 경로의 경로 파라미터가 참조하는 동일한 스키마 구성 요소를 참조하고, `id`는 이 두 세그먼트를 `/`로 연결한 것입니다. +사용 가능한 모델 ID와 청구 정보를 나열합니다. `has_more`가 참인 동안 `next_cursor`를 사용하세요. **파라미터** | 이름 | 위치 | 필수 | 유형 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | --- | -| `cursor` | query | 아니요 | [`RouterPageCursor`](#routerpagecursor) | `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` | 불투명한 페이지네이션 커서입니다. 이전 페이지의 `next_cursor`를 전달하면 다음 페이지를 가져오고, 첫 페이지에서는 생략합니다. 값이 불투명한 이유와 이 경로가 offset 대신 커서로 페이지네이션하는 이유는 `RouterPageCursor`를 참조하세요. | -| `limit` | query | 아니요 | integer | `maximum: 100`, `default: 20` | 한 페이지에 반환할 모델 수입니다. 선언된 최대값을 초과하는 값은 계약 범위를 벗어나지만, 이 경로는 해당 값을 거부하지 않습니다. 대신 최대값을 제공하며, 실제 제공된 페이지 크기는 응답의 `limit`으로 그대로 반환됩니다. 따라서 상한 적용 여부는 호출자가 항상 감지할 수 있습니다. 최대값을 실제 페이지 간격으로 취급하세요. 더 많이 요청하고 더 많이 받았다고 가정하는 클라이언트는 행을 놓칠 수 있습니다. 0과 음수 값도 허용되며 기본값을 선택합니다. 이것이 `minimum`이 선언되지 않은 이유입니다. 1 미만은 여기서 유효하지 않은 것이 아니라 의미 있는 값입니다. | +| `cursor` | query | 아니요 | [`RouterPageCursor`](#routerpagecursor) | `next_cursor`로 반환되는 불투명 커서, 1–512자 | 불투명한 페이지네이션 커서입니다. | +| `limit` | query | 아니요 | integer | 최대 100, 기본값: 20 | 한 페이지에 반환할 모델 수입니다. | **응답** | 상태 | 본문 | 헤더 | 설명 | | --- | --- | --- | --- | | `200` | [`RouterModelListResponse`](#routermodellistresponse) | `X-Comfy-Request-Id` | OK - 모델 카탈로그의 한 페이지입니다. | -| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패: 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type`에 반복됩니다. | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패: 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type`에 반복됩니다. | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패: 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type`에 반복됩니다. | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패: 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type`에 반복됩니다. | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 잘못된 요청입니다. 오류 유형과 요청 본문을 확인하세요. | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 자격 증명이 누락되었거나 유효하지 않습니다. | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 이 호출자 또는 모델에 대해서는 요청이 허용되지 않습니다. | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router를 일시적으로 사용할 수 없습니다. 백오프를 두고 재시도하세요. | -### `GET /v1/models/{provider}/{model}` +### `GET /v2/models/{provider}/{model}` **정규 모델 ID로 파트너 모델 하나의 카탈로그 항목을 조회합니다.** -단일 Comfy Router 모델에 대한 모델별 세부 정보로, 호출자가 전체 페이지네이션 카탈로그를 일일이 탐색하지 않고도 모델 하나를 확인할 수 있습니다. SDK는 모델을 호출하기 직전에 이 엔드포인트를 사용하여 모델을 조회합니다. +전체 카탈로그를 나열하지 않고 모델 하나의 세부 정보를 조회합니다. **파라미터** | 이름 | 위치 | 필수 | 유형 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | 예 | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 공급자 세그먼트: 모델이 실행되는 파트너입니다. | -| `model` | path | 예 | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 모델 세그먼트: 해당 공급자 내에서 실행할 모델입니다. | +| `provider` | path | 예 | [`RouterProviderSegment`](#routerprovidersegment) | 영숫자 슬러그, 예: `anthropic`, 최대 64자 | 정규 `{provider}/{model}` 모델 ID의 공급자 부분입니다. | +| `model` | path | 예 | [`RouterModelSegment`](#routermodelsegment) | 영숫자 슬러그, 예: `claude-opus-4-6`, 최대 128자 | 정규 `{provider}/{model}` 모델 ID의 모델 부분입니다. | **응답** | 상태 | 본문 | 헤더 | 설명 | | --- | --- | --- | --- | | `200` | [`RouterModelDetail`](#routermodeldetail) | `X-Comfy-Request-Id` | OK: 모델의 카탈로그 항목입니다. | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 라우터 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에도 동일하게 포함됩니다. | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 라우터 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에도 동일하게 포함됩니다. | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 라우터 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에도 동일하게 포함됩니다. | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 자격 증명이 누락되었거나 유효하지 않습니다. | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 이 호출자 또는 모델에 대해 허용되지 않는 요청입니다. | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 모델 ID를 찾을 수 없습니다. | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 라우터를 일시적으로 사용할 수 없습니다. 백오프를 사용해 재시도하세요. | -### `POST /v1/models/{provider}/{model}` +### `POST /v2/models/{provider}/{model}` **표준 모델 ID로 파트너 모델을 동기식으로 실행합니다.** -Comfy Router의 표준 진입점으로, 모델 ID로 주소가 지정됩니다. 요청 본문은 파트너 모델 자체의 네이티브 JSON 입력이고, 성공 응답은 해당 모델 자체의 네이티브 JSON 출력입니다. Router는 Comfy 형태의 래퍼를 강제하는 대신 둘 다 변경 없이 그대로 전달하므로, 호출자는 호스트만 변경하여 파트너 API와 Router 사이를 이동할 수 있습니다. 이 경로는 동기(SYNCHRONOUS) 경로입니다. 응답에는 완료된 결과가 포함됩니다. +모델을 실행하고 완료된 결과를 동일한 응답으로 받습니다. **파라미터** | 이름 | 위치 | 필수 | 유형 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 표준 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 공급자 세그먼트입니다. 실행할 모델을 보유한 파트너를 나타냅니다. | -| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 표준 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 모델 세그먼트입니다. 해당 공급자 내에서 실행할 모델을 나타냅니다. | +| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | 영숫자 슬러그, 예: `anthropic`, 최대 64자 | 표준 `{provider}/{model}` 모델 ID의 공급자 부분입니다. | +| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | 영숫자 슬러그, 예: `claude-opus-4-6`, 최대 128자 | 표준 `{provider}/{model}` 모델 ID의 모델 부분입니다. | +| `Idempotency-Key` | header | no | string | 1~255자 | 단 하나의 논리적 호출을 안전하게 재시도할 수 있도록 호출자가 생성한 키입니다. | **요청 본문** @@ -97,120 +104,151 @@ Comfy Router의 표준 진입점으로, 모델 ID로 주소가 지정됩니다. | 상태 | 본문 | 헤더 | 설명 | | --- | --- | --- | --- | -| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id` | OK: 파트너 모델의 네이티브 JSON 출력이 변경 없이 반환됩니다. | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 보고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에 동일하게 표시됩니다. | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 보고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에 동일하게 표시됩니다. | -| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 요청이 모델에 도달했지만 모델이 내용을 거부했습니다. 본문은 FastAPI `detail[]` 형태의 `RouterValidationErrorResponse`이므로, 각 오류 필드는 고유한 `type`과 `ctx`를 유지합니다. `X-Comfy-Error-Type`은 전체 응답에 대한 포괄적인 버킷을 전달합니다. | -| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | 호출자가 허용된 진행 중 용량을 모두 점유하고 있어 요청이 모델에 도달하기 전에 거부되었습니다. 어느 경우든 버킷은 `concurrency_limit_exceeded`이며, `detail`이 어떤 한도에 걸렸는지 알려줍니다. 동시 호출 수이거나, 아직 진행 중인 호출의 확정 지출(committed spend)이며, 후자에 의한 거부에는 `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` 헤더(미국 달러 센트 단위)도 함께 담깁니다. 호출자 자신의 진행 중인 호출 중 하나가 끝나면 재시도하세요. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에 동일하게 표시됩니다. | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준의 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 보고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며, 버킷은 `X-Comfy-Error-Type` 헤더에 동일하게 표시됩니다. | -| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | Comfy가 자체 구성된 한계에서 연결 유지를 중단했습니다(`deadline_exceeded`). 본문과 두 헤더는 `RouterRequestError`의 것과 정확히 같으며, 여기에 추가되는 것은 선택적 `Retry-After`입니다. 같은 `Idempotency-Key`로 재시도하면 새 생성을 보내는 대신 아직 실행 중인 생성을 회수하게 되는 경우에 포함됩니다. `POST /v1/models/{provider}/{model}`의 `504`를 참조하세요. | +| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id`, `X-Content-Type-Options`, `Idempotent-Replayed`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | OK: 파트너 모델의 네이티브 출력이 변경 없이 파트너 자체의 미디어 유형으로 반환됩니다. | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | 잘못된 요청입니다. 오류 유형과 요청 본문을 확인하세요. | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 자격 증명이 누락되었거나 유효하지 않습니다. | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 이 호출자 또는 모델에 대해서는 요청이 허용되지 않습니다. | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 모델 ID를 찾을 수 없습니다. | +| `409` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` (`concurrency_limit_exceeded`인 경우) | `X-Comfy-Error-Type`을 확인하세요. `concurrency_limit_exceeded`는 원본 호출이 아직 실행 중이라는 뜻이므로 `Retry-After`를 기다린 뒤 동일한 키를 재사용하세요. `invalid_input`은 새 키가 필요합니다. | +| `413` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 요청 본문이 너무 큽니다. | +| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | 요청 내용이 모델의 스키마에 따라 거부되었습니다. | +| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | `X-Comfy-Error-Type`을 확인하세요. `concurrency_limit_exceeded`는 진행 중인 호출을 줄여야 한다는 뜻이고, `rate_limited`는 허용량 창을 기다려야 한다는 뜻입니다. | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router를 일시적으로 사용할 수 없습니다. 백오프를 적용해 재시도하세요. | +| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | 요청이 데드라인을 초과했습니다. 재시도하기 전에 오류 유형을 확인하세요. | -### `GET /v1/models/{provider}/{model}/openapi.json` +### `GET /v2/models/{provider}/{model}/openapi.json` -**파트너 모델 하나의 입력 스키마를 OpenAPI 문서로 읽습니다.** +**파트너 모델 하나의 입력 및 출력 스키마를 OpenAPI 문서로 읽습니다.** -단일 Comfy Router 모델의 모델별 입력 스키마를 독립형 OpenAPI 문서로 제공합니다. 이를 통해 호출자(SDK, 코드 생성 도구 또는 에이전트)는 Comfy의 문서를 읽지 않고도 모델의 인자를 발견할 수 있습니다. 이는 SDK 퀵스타트가 의존하는 발견 메커니즘입니다. +하나의 모델에 대한 입력 및 출력 스키마를 독립형 OpenAPI 문서로 읽습니다. **파라미터** | 이름 | 위치 | 필수 | 유형 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 표준 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 공급자 세그먼트로, 실행 중인 모델의 파트너를 식별합니다. | -| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 표준 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 모델 세그먼트로, 해당 공급자 내에서 실행할 모델을 식별합니다. | -| `If-None-Match` | header | no | string | - | 호출자가 이전 `200`에서 보관해 둔 `ETag`입니다. 현재 문서와 일치하면(RFC 9110 약한 비교, `*`는 현재의 어떤 문서와도 일치) 같은 `ETag`를 담은 본문 없는 `304`가 응답되고, 그렇지 않으면 전체 문서가 반환됩니다. | +| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | 영숫자 슬러그, 예: `anthropic`, 최대 64자 | 표준 `{provider}/{model}` 모델 ID의 공급자 부분입니다. | +| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | 영숫자 슬러그, 예: `claude-opus-4-6`, 최대 128자 | 표준 `{provider}/{model}` 모델 ID의 모델 부분입니다. | +| `If-None-Match` | header | no | string | - | 호출자가 이전 `200`에서 보관해 둔 `ETag`입니다. | **응답** | 상태 | 본문 | 헤더 | 설명 | | --- | --- | --- | --- | -| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | OK: 모델의 입력 스키마를 독립형 OpenAPI 문서로 반환합니다. | -| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | Not Modified: 호출자가 `If-None-Match`에 보낸 `ETag` 이후로 문서가 변경되지 않았습니다. 본문은 반환되지 않습니다. | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며 버킷은 `X-Comfy-Error-Type` 헤더에도 반복 표시됩니다. | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며 버킷은 `X-Comfy-Error-Type` 헤더에도 반복 표시됩니다. | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며 버킷은 `X-Comfy-Error-Type` 헤더에도 반복 표시됩니다. | -| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며 버킷은 `X-Comfy-Error-Type` 헤더에도 반복 표시됩니다. | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 요청 수준 실패입니다. 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유로 실패했습니다. 본문은 `RouterErrorResponse`이며 버킷은 `X-Comfy-Error-Type` 헤더에도 반복 표시됩니다. | +| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | OK: 모델의 입력 AND 출력 스키마를 독립형 OpenAPI 문서로 반환합니다. | +| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | Not Modified: 호출자가 `If-None-Match`에 보낸 `ETag` 이후로 문서가 변경되지 않았습니다. | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 자격 증명이 누락되었거나 유효하지 않습니다. | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 이 호출자 또는 모델에 대해서는 요청이 허용되지 않습니다. | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 모델 ID를 찾을 수 없습니다. | +| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router가 요청을 완료할 수 없습니다. | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router를 일시적으로 사용할 수 없습니다. 백오프를 두고 재시도하세요. | + +표 설명은 간략합니다. 모델 선택, 검증, 재시도, 결제에 대해서는 [Comfy Router API 사용하기](/ko/development/comfy-router/quickstart)를, 헤더 동작에 대해서는 헤더를 참고하세요. -## Error buckets +## 오류 분류 -Coarse, machine-readable bucket for a Router failure, mirrored on the `X-Comfy-Error-Type` response header so a caller can branch without parsing the body. The set is closed at fifteen values: the six request-level buckets `invalid_input`, `content_policy_violation`, `provider_error`, `provider_timeout`, `insufficient_credits` and `model_not_found`, plus the transport-level `unauthorized`, `forbidden`, `concurrency_limit_exceeded`, `client_disconnected`, `internal_error`, `deadline_exceeded`, `not_enabled`, `service_unavailable` and `rate_limited`. +기계가 읽을 수 있는 Router 오류 카테고리이며, `X-Comfy-Error-Type` 헤더로도 전송됩니다. ### Request-level buckets -Raised for a request Router accepted and then could not complete. +Router가 요청을 접수한 뒤 완료하지 못한 경우 발생합니다. -| `error_type` | Meaning | +| `error_type` | 의미 | | --- | --- | -| `invalid_input` | The request was rejected before it reached the model - a malformed body, a malformed or expired pagination cursor, or an input the model's own schema does not accept. | -| `content_policy_violation` | The provider refused the request on content-policy grounds. The refusal is deterministic: re-sending the same input will be refused again. | -| `provider_error` | The partner provider reported a failure of its own, or returned a response Router could not interpret as a result. | -| `provider_timeout` | The partner provider did not answer within its deadline. This bucket is the PROVIDER timing out and never Router's own server deadline, which is reported as `deadline_exceeded` - the two share `504` and are separated because they name different causes: this one says the partner failed, that one says Comfy stopped holding the connection. | -| `insufficient_credits` | The calling workspace does not have enough credits to run the model. | -| `model_not_found` | The `{provider}/{model}` ID names no model Router can run; an unknown provider lands here too. `detail` carries up to three suggestions drawn from the models the caller is entitled to see. | +| `invalid_input` | 요청이 모델에 도달하기 전에 거부되었습니다. 형식이 잘못된 본문, 형식이 잘못되었거나 만료된 페이지네이션 커서, 모델 자체 스키마가 허용하지 않는 입력, 또는 이 요청에 사용할 수 없는 `Idempotency-Key`(다른 요청에 이미 사용되었거나(방법, 경로와 쿼리, 또는 본문이 다름) 응답을 재생할 수 없는 호출에 이미 소비된 경우)입니다. | +| `content_policy_violation` | 공급자가 콘텐츠 정책을 이유로 요청을 거부했습니다. | +| `provider_error` | 파트너 공급자가 자체적인 실패를 보고했거나, Router가 결과로 해석할 수 없는 응답을 반환했습니다. | +| `provider_timeout` | 파트너 공급자가 자체 마감 시간 내에 응답하지 않았습니다. | +| `insufficient_credits` | 호출한 워크스페이스에 모델을 실행할 크레딧이 충분하지 않습니다. | +| `model_not_found` | `{provider}/{model}` ID가 Router가 실행할 수 있는 모델을 가리키지 않습니다. 알 수 없는 공급자도 여기에 해당합니다. | ### Transport-level buckets -Raised by Router itself, before or around the call to the model. +모델 호출 이전이나 그 무렵에 Router 자체에서 발생합니다. -| `error_type` | Meaning | +| `error_type` | 의미 | | --- | --- | -| `unauthorized` | The request carried no usable credential. | -| `forbidden` | The credential is valid but is not entitled to this model or this operation. | -| `concurrency_limit_exceeded` | The workspace already has as many calls in flight as it is allowed; retry once one of them finishes. | -| `client_disconnected` | The caller closed the connection before Router could return a result. It is logged rather than delivered - there is no socket left to write it to - and it is an attribution, not a billing outcome: a provider generation that completed is billed regardless of whether the caller received the response. | -| `internal_error` | Router itself failed. It is also the value a client should treat any UNRECOGNIZED bucket as, so a later addition to the set does not break a client generated before it. | -| `deadline_exceeded` | Comfy stopped holding the connection at its own configured bound before an answer arrived. It shares `504` with `provider_timeout` and the pair says which side ran out of time; this one is Comfy's own bound, so nothing about the request was rejected and the same request may be retried. It says nothing about the charge: a provider generation that completed is billed regardless of whether the caller received the response. Retry it with the SAME `Idempotency-Key`: when the provider had already accepted the generation, the retry collects that generation rather than dispatching another, and a `Retry-After` on the `504` says when to ask. | -| `not_enabled` | Comfy Router is not switched on for this caller yet. Nothing about the request is wrong and the model exists, which is why this is not `model_not_found`; it shares `403` with `forbidden` and is NOT the same thing, because `forbidden` is an entitlement decision about the caller while this is a state of the rollout. It is TERMINAL: do not retry, and do not treat it as an outage. | -| `service_unavailable` | A service Comfy Router depends on is temporarily unavailable and the caller did nothing wrong. Retry it with backoff: it is the one bucket here whose condition clears on its own, without the caller changing the request and without a concurrency slot freeing, which is what distinguishes it from the other retryable answers (`concurrency_limit_exceeded`, `deadline_exceeded`). It is separate from `internal_error` - which is a `500` and means Router itself failed - so a client can tell "come back shortly" from "this call is not going to work". | -| `rate_limited` | The caller has spent an allowance measured over a WINDOW and must wait for that window to roll. It shares `429` with `concurrency_limit_exceeded` and is not the same thing: that one clears the moment one of the caller's own in-flight calls finishes, so retrying in seconds is right, whereas nothing the caller does drains this one early. `detail` names the window. | +| `unauthorized` | 요청에 사용할 수 있는 자격 증명이 없었습니다. | +| `forbidden` | 자격 증명은 유효하지만 이 모델이나 이 작업에 대한 권한이 없습니다. | +| `concurrency_limit_exceeded` | 워크스페이스에 이미 허용된 만큼의 호출이 진행 중입니다. 그중 하나가 끝나면 다시 시도하세요. | +| `client_disconnected` | Router가 결과를 반환하기 전에 호출자가 연결을 닫았습니다. | +| `internal_error` | Router 자체가 실패했습니다. | +| `deadline_exceeded` | 응답이 도착하기 전에 Comfy가 자체적으로 설정된 한도에서 연결 유지를 중단했습니다. | +| `not_enabled` | 이 호출자에 대해서는 Comfy Router가 아직 활성화되지 않았습니다. | +| `service_unavailable` | Comfy Router가 의존하는 서비스가 일시적으로 사용할 수 없으며, 호출자는 아무 잘못도 하지 않았습니다. | +| `rate_limited` | 호출자가 WINDOW를 기준으로 측정되는 허용량을 모두 소진했으며, 해당 창이 넘어갈 때까지 기다려야 합니다. | ## 응답 헤더 | 헤더 | 유형 | 설명 | | --- | --- | --- | -| `Cache-Control` | 문자열 | 제공되는 스키마 문서에 대한 신선도 지시문입니다. `private`은 경로가 인증되어 있기 때문입니다. 문서 자체는 호출자별로 다르지 않지만, 공유 캐시는 인증된 요청에 대한 응답을 보유해서는 안 됩니다. `must-revalidate`는 오래된 복사본이 그대로 제공되는 대신 `ETag`에 대해 재검증되도록 하기 위함입니다. | -| `ETag` | 문자열 | `GET /v1/models/{provider}/{model}/openapi.json`에 대해 제공되는 문서 바이트에 대한 강력한 엔티티 태그입니다. 모델별 스키마는 거의 변경되지 않지만 SDK가 자주 다시 가져오므로, 호출자는 이 값을 저장한 뒤 `If-None-Match`로 다시 보내 문서 대신 `304`를 받을 수 있습니다. | -| `Retry-After` | 정수 | 같은 `Idempotency-Key`로 같은 요청을 재시도하기 전에 기다려야 할 초 수입니다. `deadline_exceeded` `504`에서 공급자가 아직 실행 중인 생성에 대한 핸들을 Comfy가 보유한 경우에만 존재합니다. 값은 Router 자체의 폴링 간격으로, 이 경로가 "나중에 다시 물어보라"에 대해 제시할 수 있는 유일하게 정직한 숫자입니다. 회수할 것이 없을 때, 즉 키 없는 호출이거나 공급자가 무엇이든 수락하기 전에 한계가 만료된 경우에는 존재하지 않습니다. | -| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | Router가 모든 오류 응답에 설정하는, 오류에 대한 대략적인 기계 판독 가능 버킷입니다. `RouterErrorResponse.error_type`과 동일한 값을 가지며, `422`에서는 이것이 유일한 기계 판독 가능 버킷입니다. 해당 본문이 FastAPI `detail[]` 형태이고 자체 `error_type` 필드가 없기 때문입니다. 따라서 클라이언트는 수신한 두 Router 오류 본문 중 어느 것인지 결정하기 이전에 이 헤더만으로 분기할 수 있습니다. | -| `X-Comfy-Request-Id` | 문자열 | 이 호출에 대해 서버에서 생성된 식별자로, 모든 Router 응답(성공, 4xx, 5xx 모두)에 존재합니다. 오류 응답이 바로 사용자가 지원 요청에 인용할 id가 필요한 때이기 때문입니다. 동일한 값이 호출의 사용량/감사 이벤트에 기록되므로, 요금에 대한 불만을 타임스탬프로 검색하는 대신 요금 자체에 연결할 수 있습니다. | -| `X-Committed-Spend-Current` | 정수 | 호출자가 현재 진행 중인 호출에 확정한 금액(미국 달러 센트)으로, 거부된 호출은 포함하지 않습니다. `X-Committed-Spend-Limit`과 함께 존재합니다. | -| `X-Committed-Spend-Limit` | 정수 | 호출자가 진행 중인 호출에 확정할 수 있는 파트너 지출의 상한(미국 달러 센트)입니다. 거부 사유가 동시 호출 풀이 아니라 확정 지출 상한이었을 때 존재합니다. | -| `X-Committed-Spend-Remaining` | 정수 | 상한 아래 남은 여유분(미국 달러 센트)으로, 최소값은 0입니다. 거부 시에도 양수일 수 있습니다. 거부된 호출의 비용이 남은 금액보다 컸을 뿐이며, 더 저렴한 호출은 여전히 허용됩니다. `X-Committed-Spend-Limit`과 함께 존재합니다. | +| `Cache-Control` | 문자열 | 제공되는 스키마 문서에 대한 신선도 지시문입니다. | +| `ETag` | 문자열 | `GET /v2/models/{provider}/{model}/openapi.json`에 대해 제공되는 문서 바이트에 대한 강력한 엔티티 태그입니다. | +| `Idempotent-Replayed` | 논리값 | 이 응답이 모델을 다시 실행한 것이 아니라 `Idempotency-Key`의 기록에서 제공된 경우 존재하며 `true`입니다. | +| `Retry-After` | 정수 | 동일한 `Idempotency-Key`로 동일한 요청을 재시도하기 전에 기다려야 할 초 수입니다. | +| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | 실패에 대한 대략적인 기계 판독 가능 버킷으로, Router가 모든 오류 응답에 설정합니다. | +| `X-Comfy-Request-Id` | 문자열 | 이 호출에 대해 서버가 생성한 식별자로, 모든 Router 응답(성공, 4xx, 5xx 모두)에 존재합니다. 오류 응답이 바로 사용자가 지원팀 요청에 인용할 id가 필요한 때이기 때문입니다. | +| `X-Committed-Spend-Current` | 정수 | 호출자가 현재 진행 중인 호출에 확정한 미국 달러 센트 금액입니다. | +| `X-Committed-Spend-Limit` | 정수 | 호출자가 진행 중인 호출에 확정할 수 있는 파트너 지출의 상한(미국 달러 센트)입니다. 호출이 허용되는 시점부터 금액이 보류되고 해당 호출이 끝나면 해제됩니다. | +| `X-Committed-Spend-Remaining` | 정수 | 상한 아래에 남은 여유분(미국 달러 센트)으로, 최소값은 0입니다. | +| `X-Content-Type-Options` | 문자열 | Router 모델의 모든 성공 실행에서 항상 `nosniff`입니다. | + +## 결과 에셋 + +모델은 에셋 URL, 인라인 바이트, 또는 둘 다를 반환할 수 있습니다. 아래 공급자는 선택된 에셋을 Comfy 스토리지로 복사하고 해당 URL을 대체합니다. 이 동작은 모델에 따라 다르며, 이를 선택하는 요청 헤더는 없습니다. + +| 모델 | Comfy 스토리지로 복사되는 항목 | Comfy 호스팅 URL 최대 수명 | +| --- | --- | --- | +| `bfl/*` | 완료된 에셋, 그리고 결과에 포함된 경우 드래프트 캐시 에셋 | 24시간 | +| `byteplus/*` 비디오 모델 (`seedance`, `dreamina-seedance`) | 완료된 비디오, 그리고 결과에 포함된 경우 마지막 프레임 이미지 | 24시간 | +| `minimax/*` | 완료된 비디오 | 12시간 | +| `xai/*` | 생성된 모든 이미지, 그리고 완료된 비디오 | 24시간 | + +이 수명은 URL에 서명될 때 시작되며, URL을 열 때 시작되는 것이 아닙니다. 캐시되었거나 재생된 URL은 남은 시간이 더 적을 수 있으며, 재생해도 수명이 갱신되지 않습니다. 에셋을 즉시 다운로드하세요. 각 행에 명시된 에셋만 복사됩니다. `byteplus/seedream-*` 및 `byteplus/seededit-*` 이미지는 BytePlus 비디오 행에 포함되지 않습니다. + +**Veo(`veo/*`)는 별도의 스토리지 경로를 사용합니다.** `response.videos[]`에서 존재하는 멤버를 읽으세요. `bytesBase64Encoded`는 클립을 인라인으로 담고 있으며, `gcsUri`는 환경이 공급자의 Comfy 스토리지 직접 쓰기에 맞게 구성된 경우 Comfy가 서명한 HTTPS 링크를 담고 있습니다. 해당 링크는 응답 시점부터 24시간 동안 유효합니다. 후자의 경우 에셋을 복사하는 대신 직접 쓰기 때문에 Veo는 재호스팅 표에 포함되지 않습니다. + +다른 모델은 공급자 에셋 참조 또는 인라인 바이트를 반환합니다. 공급자 URL은 공급자의 만료 정책을 따르며, 이는 위 수명보다 훨씬 짧을 수 있고 Router 계약에 명시되어 있지 않습니다. + +복사는 에셋별 최선 노력 방식으로 수행됩니다. 복사 하나가 실패하면 해당 항목은 공급자 참조를 유지합니다. 응답에는 Comfy URL과 공급자 URL이 모두 포함될 수 있으며, 에셋별 복사 상태 필드는 명시적으로 없습니다. 생성은 여전히 성공하며 과금됩니다. 성공적으로 재호스팅된 에셋 하나로 모든 URL의 수명을 추론하지 마세요. + +결과가 Comfy 호스팅인지 여부는 완료된 호출을 나중에 해당 `Idempotency-Key` 레코드에서 재생할 수 있는지도 결정합니다. 위의 `Idempotency-Key` 매개변수는 재생할 수 없을 때 재시도에 무엇이 응답되는지 설명합니다. + + -## 모델별 입력 스키마 +## 모델별 입력 및 출력 스키마 -모델의 자체 입력 필드는 여기에 다시 수록하지 않습니다. `GET /v1/models/{provider}/{model}/openapi.json`에서 실시간으로 확인하세요. 이 엔드포인트는 서버가 호출을 검증할 때 사용하는 문서와 동일한 문서를 제공하므로, 게시된 내용과 실제로 강제 적용되는 내용이 서로 어긋날 수 없습니다. `GET /v1/models`에서 모델 ID를 가져와 해당 호출 경로에 `/openapi.json`을 추가하고, 반환된 문서를 기준으로 생성을 진행하세요. +각 모델의 필드는 `GET /v2/models/{provider}/{model}/openapi.json`에서 확인할 수 있습니다. 오퍼레이션의 `requestBody`는 입력 검증을 설명하고, `200` 응답은 스키마가 작성된 경우 출력 형태와 미디어 타입을 설명합니다. `x-comfy-input-schema-authored`가 거짓이면 Router는 모델별 사전 검증 없이 모든 JSON 객체를 허용합니다. 공급자 요구 사항은 여전히 적용됩니다. 출력 스키마는 결과를 설명하는 것이며, Router가 반환된 공급자 페이로드를 스키마와 대조하여 검증하지는 않습니다. 스키마가 작성되지 않은 출력은 `application/json` 대신 `*/*`를 사용할 수 있으므로, 디코딩하기 전에 응답 콘텐츠 타입을 확인하세요. ## 스키마 ### RouterChargesOnPolicyRejection -이 모델이 콘텐츠 정책을 근거로 거부하는 호출이 그럼에도 불구하고 호출자에게 청구되는지 여부를 나타냅니다. 공급자마다 다르며, 그 차이는 호출 시점에 드러나지 않습니다. 동일한 호출에 대해 오류와 청구를 함께 확인한 사용자는 이를 알 도리가 없습니다. 따라서 이는 공급자별 구전 지식에 맡겨지지 않고, 호출 이전에 모델별로 명시됩니다. +이 모델에서 콘텐츠 정책 거부가 청구되는지 여부입니다. 알 수 없는 값은 청구될 수 있는 것으로 간주하세요. 타입: `string` ### RouterErrorResponse -Router의 요청 수준 오류 본문: 요청이 모델에 도달하지 못했거나, 모델 자체가 신고하지 않은 이유(인증, 할당량, 알 수 없는 모델 ID, 공급자 전송)로 실패한 경우 반환되는 내용입니다. 모델 수준 검증 실패는 `RouterValidationErrorResponse`라는 자체 형태를 가집니다. FastAPI의 `detail[]` 배열을 이 `detail` 문자열로 평탄화하면 SDK가 분기하는 필드별 세분성이 손상되기 때문입니다. +인증, 접근, 모델 조회, 할당량, 공급자 전송 실패에 대한 오류 본문입니다. | 필드 | 유형 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | -| `detail` | string | 예 | - | 실패에 대한 사람이 읽을 수 있는 설명으로, 최종 사용자에게 표시해도 안전합니다. 기계가 파싱하지 않으므로 대신 `error_type`으로 분기하세요. | +| `detail` | 문자열 | 예 | - | 실패에 대한 사람이 읽을 수 있는 설명으로, 최종 사용자에게 표시해도 안전합니다. 기계가 파싱하지 않으므로 대신 `error_type`으로 분기하세요. | | `error_type` | [`RouterErrorType`](#routererrortype) | 예 | - | Router 실패에 대한 대략적이고 기계가 읽을 수 있는 분류로, `X-Comfy-Error-Type` 응답 헤더에도 동일하게 반영되므로 호출자가 본문을 파싱하지 않고 분기할 수 있습니다. 값 집합은 15개로 고정되어 있습니다. 여섯 가지 요청 수준 분류인 `invalid_input`, `content_policy_violation`, `provider_error`, `provider_timeout`, `insufficient_credits`, `model_not_found`와 전송 수준 분류인 `unauthorized`, `forbidden`, `concurrency_limit_exceeded`, `client_disconnected`, `internal_error`, `deadline_exceeded`, `not_enabled`, `service_unavailable`, `rate_limited`가 있습니다. | ### RouterErrorType -Router 오류를 대략적이고 기계가 읽을 수 있는 버킷으로 분류한 것으로, `X-Comfy-Error-Type` 응답 헤더에도 반영되므로 호출자가 본문을 파싱하지 않고도 분기할 수 있습니다. 이 집합은 15개의 값으로 고정되어 있습니다: 요청 수준의 6개 버킷인 `invalid_input`, `content_policy_violation`, `provider_error`, `provider_timeout`, `insufficient_credits`, `model_not_found`와 전송 수준의 `unauthorized`, `forbidden`, `concurrency_limit_exceeded`, `client_disconnected`, `internal_error`, `deadline_exceeded`, `not_enabled`, `service_unavailable`, `rate_limited`입니다. +기계가 읽을 수 있는 Router 오류 카테고리로, `X-Comfy-Error-Type` 헤더에도 전송됩니다. 유형: `string` ### RouterModelBilling -모델별 청구에 관한 사실은 호출자가 호출 이전에 알아야 할 내용으로, 가격이 아닙니다. 사용량 및 비용 수치는 여기에 표시되지 않습니다. +모델을 호출하기 전에 확인해야 하는 청구 동작입니다. 가격이나 사용량은 포함하지 않습니다. | 필드 | 유형 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | -| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | 예 | - | 이 모델이 콘텐츠 정책에 따라 거부한 호출에 대해서도 호출자에게 청구되는지 여부입니다. 공급자마다 다르며, 그 차이는 호출 시간에 확인할 수 없습니다. 같은 호출에 대해 오류와 청구를 모두 확인한 사용자는 이를 알 방법이 없으므로, 공급자별 관례에 맡기는 대신 호출 이전에 모델별로 명시됩니다. | +| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | 예 | - | 이 모델이 콘텐츠 정책을 이유로 거부하는 호출이 그럼에도 호출자에게 청구되는지 여부입니다. 공급자마다 다르고, 그 차이는 호출 시점에 드러나지 않으며, 같은 호출에 대해 오류와 청구를 함께 확인한 사용자는 알 방법이 없습니다. 그래서 공급자별 통설에 맡기는 대신 호출 이전에 모델별로 명시합니다. | ### RouterModelDetail @@ -222,40 +260,40 @@ Comfy Router 모델 하나에 대한 모델별 세부 정보: 카탈로그 목 ### RouterModelDetailFields -`RouterModelDetail` 중 카탈로그 목록이 담지 않는 절반: 한 번의 조회로 충분하지만 페이지네이션된 카탈로그 페이지의 모든 항목에 반복할 가치가 없는 모델별 필드입니다. +model-details 엔드포인트가 반환하는 선택적 필드입니다. | 필드 | 타입 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | -| `input_schema_url` | 문자열 | 아니요 | `format: uri`, `pattern: ^https://`, `maxLength: 2048` | 이 모델의 입력 스키마 문서를 가리키는 포인터입니다. 입력 스키마 문서는 이 모델에 대해 `POST /v1/models/{provider}/{model}`이 받아들이는 본문(body)의 설명입니다. 오직 포인터만이 이 계약의 일부입니다. 포인터가 가리키는 문서는 별도로 작성됩니다. 모델에 대한 스키마가 작성되지 않은 경우에는 이 필드가 존재하지 않습니다. | +| `input_schema_url` | 문자열 | 아니요 | HTTPS URL, 예: `https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json`, 최대 2048자 | 입력 및 출력 스키마를 포함한 이 모델의 OpenAPI 문서 URL입니다. | ### RouterModelId -`{provider}/{model}` 형식의 표준 Comfy Router 모델 ID입니다. 이 값은 `POST /v1/models/{provider}/{model}`에서 모델을 주소 지정하는 값과 정확히 일치하므로, 호출자는 다른 곳에서 다시 파생할 필요 없이 해당 경로에 바로 삽입할 수 있습니다. `pattern`은 단일 `/`로 연결된 `RouterProviderSegment`와 `RouterModelSegment`이며, `maxLength`는 두 값의 합에 해당 구분자를 더한 값입니다. +`POST /v2/models/{provider}/{model}`에서 사용되는 모델 ID입니다. -유형: `string`. `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 193` +유형: `string`. 모델 ID(예: `anthropic/claude-opus-4-6`), 최대 193자 ### RouterModelInput -파트너 모델의 네이티브 JSON 입력 문서로, 공급자에게 있는 그대로 전달됩니다. 구체적인 형태는 Comfy가 아닌 파트너가 소유하므로 이는 개방형 객체입니다. Router는 필드의 범위를 좁히거나 이름을 바꾸거나 다시 감싸지 않습니다. ComfyUI의 스펙 기반 코드 생성이 생성할 클래스를 필요로 하기 때문에 명명된 컴포넌트입니다(인라인 익명 객체는 절대 아님). +모델 입력 객체입니다. 필드와 검증에 대해서는 선택된 모델의 OpenAPI 문서를 참고하세요. 유형: `object` ### RouterModelInputSchemaDocument -단일 Comfy Router 모델의 입력을 설명하는 독립 OpenAPI 문서로, 해당 모델에 대해 `POST /v1/models/{provider}/{model}`가 허용하는 요청 본문입니다. `GET /v1/models/{provider}/{model}/openapi.json`이 반환하는 내용이기도 합니다. +하나의 모델의 입력과 출력을 위한 독립형 OpenAPI 문서입니다. 유형: `object` ### RouterModelListEntry -Router 모델 카탈로그의 한 항목입니다. 실행 가능한 모델의 식별 정보만을 담으며, 그 외의 다른 것은 포함하지 않습니다. 모델별 상세 라우트는 이 동일한 항목을 반복해서 기술하는 대신 이 항목을 조합하여 사용합니다. 따라서 이름이 `...Summary`가 아니라 `...ListEntry`인 이유는, 카탈로그 항목이 무엇인지에 대한 정의가 정확히 하나만 존재해야 하기 때문입니다. 모델별 상세 및 모델별 입력/출력 스키마는 각각 별도의 라우트이므로, 이 형태는 호출자가 모델을 호출하는 데 필요한 최소한의 정보로 유지됩니다. 이는 의도적인 설계입니다. SDK가 콜드 스타트 시 가져오는 페이로드가 바로 이것이기 때문입니다. `id`는 `provider`와 `model`을 `/`로 연결한 값입니다. 두 필드는 별도로도 제공되므로 호출자는 문자열을 분할하지 않고 호출 경로를 구성할 수 있습니다. +모델의 ID와 청구 관련 사실 정보입니다. | 필드 | 타입 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | -| `id` | [`RouterModelId`](#routermodelid) | 예 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 193` | 정규 Comfy Router 모델 ID인 `{provider}/{model}`입니다. `POST /v1/models/{provider}/{model}`에서 모델을 주소 지정하는 값과 정확히 일치하므로, 호출자는 다른 어떤 값에서도 다시 파생할 필요 없이 해당 경로에 그대로 삽입할 수 있습니다. 이 `pattern`은 `RouterProviderSegment`와 `RouterModelSegment`를 단일 `/`로 연결한 것이며, `maxLength`는 두 값의 합에 해당 구분자를 더한 값입니다. | -| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | 예 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 `provider` 세그먼트입니다. 모델이 주소 지정되는 파트너를 나타냅니다. 호출 라우트의 `provider` 경로 매개변수와 카탈로그 항목의 `provider` 필드는 모두 이 하나의 스키마를 참조하므로, 목록의 ID와 허용되는 ID가 서로 어긋나지 않습니다. | -| `model` | [`RouterModelSegment`](#routermodelsegment) | 예 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 `model` 세그먼트입니다. 해당 공급자 내에서 실행할 모델을 나타냅니다. 호출 라우트의 `model` 경로 매개변수와 카탈로그 항목의 `model` 필드는 `RouterProviderSegment`와 동일한 불일치 방지 이유로 이 스키마를 공유합니다. | -| `billing` | [`RouterModelBilling`](#routermodelbilling) | 예 | - | 호출자가 호출 이전에 알아야 하는 모델별 청구 정보입니다. 가격이 아닙니다. 사용량 및 비용 수치는 여기에 절대 나타나지 않습니다. | +| `id` | [`RouterModelId`](#routermodelid) | 예 | 모델 ID, 예: `anthropic/claude-opus-4-6`, 최대 193자 | 정규 Comfy Router 모델 ID인 `{provider}/{model}`입니다. `POST /v2/models/{provider}/{model}`에서 모델을 주소 지정하는 값과 정확히 일치하므로, 호출자는 다른 어떤 값에서도 다시 파생할 필요 없이 해당 경로에 그대로 삽입할 수 있습니다. 이 `pattern`은 `RouterProviderSegment`와 `RouterModelSegment`를 단일 `/`로 연결한 것이며, `maxLength`는 두 값의 합에 해당 구분자를 더한 값입니다. | +| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | 예 | 영숫자 슬러그, 예: `anthropic`, 최대 64자 | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 `provider` 세그먼트입니다. 모델이 주소 지정되는 파트너를 나타냅니다. 호출 라우트의 `provider` 경로 매개변수와 카탈로그 항목의 `provider` 필드는 모두 이 하나의 스키마를 참조하므로, 목록의 ID와 허용되는 ID가 서로 어긋나지 않습니다. | +| `model` | [`RouterModelSegment`](#routermodelsegment) | 예 | 영숫자 슬러그, 예: `claude-opus-4-6`, 최대 128자 | 정규 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 `model` 세그먼트입니다. 해당 공급자 내에서 실행할 모델을 나타냅니다. 호출 라우트의 `model` 경로 매개변수와 카탈로그 항목의 `model` 필드는 `RouterProviderSegment`와 동일한 불일치 방지 이유로 이 스키마를 공유합니다. | +| `billing` | [`RouterModelBilling`](#routermodelbilling) | 예 | - | 호출자가 호출하기 전에 알아야 하는 모델별 청구 사실 정보이며, 가격이 아닙니다. 사용량 및 비용 수치는 여기에 절대 나타나지 않습니다. | ### RouterModelListResponse @@ -265,58 +303,58 @@ Router 모델 카탈로그의 한 페이지입니다. | --- | --- | --- | --- | --- | | `data` | [`RouterModelListEntry`](#routermodellistentry)의 배열 | 예 | - | 이 페이지에 포함된 모델로, 최대 `limit`개입니다. | | `has_more` | 논리값 | 예 | - | 이 페이지 이후에 다른 페이지가 더 존재하는지 여부입니다. 이 값이 참인 동안 계속 탐색하십시오. `data`가 짧거나 비어 있더라도 카탈로그의 끝으로 유추하지 마십시오. | -| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 아니요 | `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` | Router 목록에 대한 불투명(opaque) 커서입니다. 서버가 생성하며 클라이언트에 전달되었다가 그대로 반환될 뿐입니다. 오프셋도 아니고, 모델 ID도 아니며, 정렬되지 않고, 카탈로그가 다시 구축될 때에도 안정적이지 않습니다. 따라서 이 커서를 구문 분석하거나, 증가시키거나, 커서가 나온 탐색 범위를 넘어 보존하는 것은 모두 계약 범위 밖입니다. 오프셋 대신 커서를 사용하는 이유는 카탈로그가 계속 변하는 목록이기 때문입니다. 탐색 중간에 항목이 추가되거나 제거되면 오프셋 기반 탐색은 항목을 조용히 건너뛰거나 반복하게 되며, 호출자는 그 사실을 알 수 없습니다. | -| `limit` | 정수 | 예 | `minimum: 1`, `maximum: 100` | 실제로 제공된 페이지 크기입니다. 최대값을 초과하는 `limit` 요청은 거부되지 않고 최대값으로 제한(clamp)됩니다. 따라서 이 값은 요청한 값보다 작을 수 있습니다. 페이지네이션에는 보낸 값이 아닌 이 값을 사용하십시오. 그렇지 않으면 실제로 수신하지 못한 행이 있다고 가정하게 됩니다. | +| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 아니요 | `next_cursor`로 반환되는 불투명 커서, 1–512자 | Router 목록에 대한 불투명(opaque) 커서입니다. 서버가 생성하며 클라이언트에 전달되었다가 그대로 반환될 뿐입니다. 오프셋도 아니고, 모델 ID도 아니며, 정렬되지 않고, 카탈로그가 다시 구축될 때에도 안정적이지 않습니다. 따라서 이 커서를 구문 분석하거나, 증가시키거나, 커서가 나온 탐색 범위를 넘어 보존하는 것은 모두 계약 범위 밖입니다. 오프셋 대신 커서를 사용하는 이유는 카탈로그가 계속 변하는 목록이기 때문입니다. 탐색 중간에 항목이 추가되거나 제거되면 오프셋 기반 탐색은 항목을 조용히 건너뛰거나 반복하게 되며, 호출자는 그 사실을 알 수 없습니다. | +| `limit` | 정수 | 예 | 1–100 | 실제로 제공된 페이지 크기입니다. 최대값을 초과하는 `limit` 요청은 거부되지 않고 최대값으로 제한(clamp)됩니다. 따라서 이 값은 요청한 값보다 작을 수 있습니다. 페이지네이션에는 보낸 값이 아닌 이 값을 사용하십시오. 그렇지 않으면 실제로 수신하지 못한 행이 있다고 가정하게 됩니다. | ### RouterModelOutput -파트너 모델의 네이티브 JSON 출력 문서로, 호출자에게 있는 그대로 반환됩니다. 구체적인 형태는 Comfy가 아닌 파트너가 소유하므로, 이는 개방형 객체(open object)입니다. Router는 필드를 좁히거나, 이름을 바꾸거나, 다시 래핑하지 않습니다. ComfyUI의 스펙 기반 코드 생성(codegen)에는 생성할 클래스가 필요하기 때문에, 이는 named 컴포넌트입니다(인라인 익명 객체가 아닙니다). +모델 결과 객체입니다. 정확한 형태는 선택된 모델의 출력 스키마를 참조하세요. 유형: `object` ### RouterModelSegment -표준 `{provider}/{model}[/{variant}]` 모델 ID의 소문자 `model` 세그먼트: 해당 공급자 내에서 실행할 모델입니다. `RouterProviderSegment`와 동일한 드리프트 방지 이유로 호출 라우트의 `model` 경로 파라미터와 카탈로그 항목의 `model` 필드에서 공유됩니다. +`{provider}/{model}` 모델 ID의 모델 부분입니다. -타입: `string`. `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` +타입: `string`. 영숫자 슬러그, 예: `claude-opus-4-6`, 최대 128자 ### RouterPageCursor -Router 목록에 대한 OPAQUE 커서입니다. 서버에 의해 생성되며 항상 왕복 전송만 됩니다. 즉, 오프셋도, 모델 ID도, 정렬된 값도 아니며, 카탈로그 재구축 시에도 안정적이지 않습니다. 따라서 커서를 파싱하거나 증가시키거나, 커서가 생성된 탐색(walk) 범위를 벗어나 보관하는 것은 모두 계약 범위 밖입니다. 오프셋 대신 커서를 사용하는 이유는 카탈로그가 계속 변하는 목록이기 때문입니다. 오프셋 탐색은 탐색 중 항목이 추가되거나 제거되면 항목을 소리 없이 건너뛰거나 반복하게 되며, 호출자는 그런 일이 발생했는지 알 수 없습니다. +불투명한 카탈로그 커서입니다. `cursor`로 그대로 다시 전달하세요. -Type: `string` -- `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` +Type: `string` -- `next_cursor`로 반환되는 불투명 커서, 1–512자 ### RouterProviderSegment -정규 `{provider}/{model}[/{variant}]` 모델 ID에서 소문자 `provider` 세그먼트로, 요청 대상 모델의 파트너를 나타냅니다. 호출 라우트의 `provider` 경로 매개변수와 카탈로그 항목의 `provider` 필드는 모두 이 하나의 스키마를 참조하므로, 나열된 ID와 허용되는 ID가 서로 어긋나지 않게 유지됩니다. +`{provider}/{model}` 모델 ID에서 공급자 부분입니다. -유형: `string` - `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` +유형: `string` - 영숫자 슬러그, 예: `anthropic`, 최대 64자 ### RouterValidationErrorContext -하나의 `RouterValidationErrorDetail`에 대해 위반된 한도이며, 공급자로부터 그대로 전달됩니다. 예를 들어 `greater_than`과 함께 `{"limit_value": 8}`, `image_too_small`과 함께 `{"min_width": 512}`, 또는 `file_too_large`와 함께 `{"max_size_bytes": 10485760}`이 이에 해당합니다. 키 집합은 공급자와 오류 유형에 따라 달라지므로, 이 객체는 의도적으로 열린 객체입니다. 이를 고정된 필드 목록으로 좁히거나 `msg` 문자열로 접으면, 포팅된 통합이 컴파일은 되지만 한도를 읽던 분기를 조용히 잃어버리는 결과를 낳습니다. 오류 유형에 한도가 없는 경우에는 이 값이 없습니다. +실패한 검증 규칙에 대해 공급자가 제공한 세부 정보입니다. 유형: `object` ### RouterValidationErrorDetail -FastAPI 형식의 모델 수준 검증 오류 하나입니다. `type`은 특정 공급자 사유(`value_error`, `missing`, `image_too_small`, `unsupported_audio_format`, `greater_than`, `file_too_large` 등)를 담으며, 이는 `RouterErrorType`의 대략적인 분류가 표현할 수 없는 세부 수준입니다. 같은 이유로 이 값은 `enum`이 아닌 개방형 문자열(open string)입니다. 공급자 어휘는 두 계층에 걸쳐 약 48개 값에 달하며, 우리가 아니라 공급자의 릴리스 주기에 따라 늘어납니다. 따라서 모델링되지 않은 값은 역직렬화에 실패하기보다 호출자에게 도달해야 합니다. +필드 수준 검증 실패 하나입니다. | 필드 | 유형 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | | `loc` | 모든 유형의 배열 | 예 | - | 문제가 되는 필드의 경로로, 가장 바깥쪽 세그먼트가 먼저 옵니다. 예를 들어 `["body", "image_url"]` 또는 `["body", "images", 0]`이며, 여기서 정수는 배열의 인덱스를 나타냅니다. | | `msg` | 문자열 | 예 | - | 이 단일 실패에 대한 사람이 읽을 수 있는 설명입니다. | | `type` | 문자열 | 예 | - | 이 실패에 대한 구체적이고 기계가 읽을 수 있는 사유로, 공급자로부터 변경 없이 그대로 전달됩니다. 타입이 지정된 SDK 예외 계층 구조가 분기하는 기준이 되는 값이며, 응답 헤더의 `error_type`은 그 대략적인 분류일 뿐입니다. | -| `ctx` | [`RouterValidationErrorContext`](#routervalidationerrorcontext) | 아니요 | - | 하나의 `RouterValidationErrorDetail`에 대해 위반된 제약 조건으로, 공급자로부터 그대로 전달됩니다. 예를 들어 `greater_than`과 함께 `{"limit_value": 8}`, `image_too_small`과 함께 `{"min_width": 512}`, 또는 `file_too_large`와 함께 `{"max_size_bytes": 10485760}`이 있습니다. 키 집합은 공급자와 오류 유형에 따라 다르므로 의도적으로 개방형 객체(open object)로 남겨 둡니다. 이를 고정된 필드 목록으로 좁히거나 `msg` 문자열에 통합하면, 이식된 통합이 컴파일은 성공하지만 제약 조건을 읽는 분기를 조용히 잃어버리게 됩니다. 오류 유형에 제약 조건이 없는 경우에는 이 필드가 없습니다. | -| `input` | [`RouterValidationErrorInput`](#routervalidationerrorinput) | 아니요 | - | 문제가 되는 입력 값으로, 호출자가 `loc`에서 다시 도출하지 않고 무엇이 거부되었는지 확인할 수 있도록 있는 그대로 다시 전달됩니다. 모든 JSON 유형(문자열, 숫자, 논리값, 배열, 객체 또는 null)이 가능하므로 이 스키마는 객체로 좁히지 않고 의도적으로 유형을 지정하지 않은 상태로 둡니다. 공급자가 입력을 다시 전달하지 않는 경우에는 이 필드가 없습니다. | +| `ctx` | [`RouterValidationErrorContext`](#routervalidationerrorcontext) | 아니요 | - | 하나의 `RouterValidationErrorDetail`에 대해 위반된 제약 조건으로, 공급자로부터 그대로 전달됩니다. 예를 들어 `greater_than`과 함께 `{"limit_value": 8}`, `image_too_small`과 함께 `{"min_width": 512}`, 또는 `file_too_large`와 함께 `{"max_size_bytes": 10485760}`이 있습니다. 키 집합은 공급자와 오류 유형에 따라 다르므로 이 필드는 의도적으로 개방형 객체(open object)로 남겨 둡니다. 이를 고정된 필드 목록으로 좁히거나 `msg` 문자열에 통합하면, 이식된 통합이 컴파일은 성공하지만 제약 조건을 읽는 분기를 조용히 잃어버리게 됩니다. 오류 유형에 제약 조건이 없는 경우에는 이 필드가 없습니다. | +| `input` | [`RouterValidationErrorInput`](#routervalidationerrorinput) | 아니요 | - | 문제가 되는 입력 값으로, 호출자가 `loc`에서 다시 도출하지 않고도 무엇이 거부되었는지 확인할 수 있도록 있는 그대로 다시 전달됩니다. 모든 JSON 유형(문자열, 숫자, 논리값, 배열, 객체 또는 null)이 가능하므로 이 스키마는 객체로 좁히지 않고 의도적으로 유형을 지정하지 않은 상태로 둡니다. 공급자가 입력을 다시 전달하지 않는 경우에는 이 필드가 없습니다. | ### RouterValidationErrorInput -문제가 되는 입력 값으로, 호출자가 `loc`에서 다시 도출하지 않고도 거부된 값이 무엇인지 확인할 수 있도록 있는 그대로 반환됩니다. 문자열, 숫자, 논리값, 배열, 객체 또는 null 등 모든 JSON 유형이 될 수 있으므로, 이 스키마는 객체로 한정하지 않고 의도적으로 유형을 지정하지 않은 채로 둡니다. 공급자가 입력을 다시 반환하지 않는 경우에는 이 필드가 존재하지 않습니다. +공급자가 해당 값을 포함할 때 함께 오는, 거부된 입력 값입니다. ### RouterValidationErrorResponse -Router의 모델 수준 `422` 본문으로, FastAPI 형식입니다. 요청이 모델에 도달할 수 있을 만큼 형식이 올바르게 갖추어졌지만, 모델이 그 내용을 거부했음을 의미합니다. 자체적으로 `error_type`을 포함하지 않는다는 점에 유의하세요. 그 역할은 응답의 `X-Comfy-Error-Type`이 담당하므로, 클라이언트는 수신한 두 가지 Router 오류 본문 중 어떤 것인지 먼저 판단하지 않고도 헤더에서 대략적인 분류를 읽을 수 있습니다. +`422` 검증 오류 본문입니다. 카테고리는 `X-Comfy-Error-Type`을 읽어 확인하세요. | 필드 | 유형 | 필수 | 제약 조건 | 설명 | | --- | --- | --- | --- | --- | diff --git a/snippets/ja/comfy-router/model-code-footer.mdx b/snippets/ja/comfy-router/model-code-footer.mdx new file mode 100644 index 000000000..3361bb5df --- /dev/null +++ b/snippets/ja/comfy-router/model-code-footer.mdx @@ -0,0 +1,18 @@ +{/* translationSourceHash: 283e1974 */} +## 出荷前の確認 + +SDK は `Idempotency-Key` を生成し、自動リトライで再利用します。手動リトライでは元のキーを再利用してください。Router は最大 10 分間接続を保持できます。 + +リクエストが失敗すると、Router は理由を示す `X-Comfy-Error-Type` レスポンスヘッダーを送信します。`422` は、プロバイダーを呼び出す前に Router が入力を拒否したことを意味します。生成されたアセットは [結果 URL の有効期限](/ja/development/comfy-router/reference#結果アセット) があるため、早めにダウンロードしてください。 + + + + 認証、冪等性、リクエスト ID、エラー分類、リトライ間隔、支出上限。 + + + モデルの検出、バリデーションエラー、リトライ、課金。 + + + Router が現在対応していないことと、代替手段。 + + diff --git a/snippets/ko/comfy-router/model-code-footer.mdx b/snippets/ko/comfy-router/model-code-footer.mdx new file mode 100644 index 000000000..1b758f507 --- /dev/null +++ b/snippets/ko/comfy-router/model-code-footer.mdx @@ -0,0 +1,18 @@ +{/* translationSourceHash: 283e1974 */} +## 배포 전 확인 + +SDK는 `Idempotency-Key`를 생성하고 자동 재시도에서 재사용합니다. 수동 재시도 시에는 원래 키를 재사용하세요. Router는 연결을 최대 10분간 유지할 수 있습니다. + +요청이 실패하면 Router는 이유를 설명하는 `X-Comfy-Error-Type` 응답 헤더를 보냅니다. `422`는 Router가 프로바이더를 호출하기 전에 입력을 거부했음을 의미합니다. 생성된 에셋은 [결과 URL이 만료](/ko/development/comfy-router/reference#결과-에셋)될 수 있으므로 즉시 다운로드하세요. + + + + 인증, 멱등성, 요청 ID, 오류 분류, 재시도 간격, 지출 한도. + + + 모델 검색, 유효성 검사 오류, 재시도, 과금. + + + Router가 현재 지원하지 않는 기능과 대체 방법. + + diff --git a/snippets/zh/comfy-router/model-code-footer.mdx b/snippets/zh/comfy-router/model-code-footer.mdx new file mode 100644 index 000000000..10e9ccb8e --- /dev/null +++ b/snippets/zh/comfy-router/model-code-footer.mdx @@ -0,0 +1,18 @@ +{/* translationSourceHash: 283e1974 */} +## 发布前须知 + +SDK 会生成 `Idempotency-Key` 并在自动重试中复用它。手动重试时,请复用原始 key。Router 最长可保持连接 10 分钟。 + +请求失败时,Router 会发送 `X-Comfy-Error-Type` 响应头说明原因。`422` 表示 Router 在调用提供商之前就拒绝了输入。生成的资源请及时下载,因为[结果链接会过期](/zh/development/comfy-router/reference#结果资产)。 + + + + 身份验证、幂等性、请求 ID、错误分类、重试节奏、消费限额。 + + + 模型发现、校验错误、重试与计费。 + + + Router 目前不支持的功能,以及替代方案。 + + diff --git a/zh/development/comfy-router/api.mdx b/zh/development/comfy-router/api.mdx new file mode 100644 index 000000000..1cce6e38b --- /dev/null +++ b/zh/development/comfy-router/api.mdx @@ -0,0 +1,278 @@ +--- +title: "使用 Comfy Router API" +sidebarTitle: "使用 Router API" +description: "选择模型、检查 schema、安全调用 Router,并处理结果、错误、重试和计费。" +translationSourceHash: cd661025 +translationFrom: development/comfy-router/api.mdx +translationBlockHashes: + "_intro": 1b554933 + "Discover the catalog": f4cd9b87 + "Read one model": 6d96021f + "Read input and output schemas": 0b7e6eaa + "Validation and fallback schemas": 0f3cb67c + "Read the result": fab75186 + "Handle errors, retries, and billing": 41a1e0ab + "Per-model examples": ed06edba + "Next": 30e39619 +--- +选择一个模型,检查其 schema,然后调用 `POST /v2/models/{provider}/{model}`。路由和身份验证在所有模型间保持一致。 + +## 探索模型目录 + +使用与生成时相同的 API 密钥列出模型: + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + "https://api.comfy.org/v2/models?limit=50" +``` + +精简的目录响应示例: + +```json +{ + "data": [ + { + "id": "bfl/flux-2-pro", + "provider": "bfl", + "model": "flux-2-pro", + "billing": { "charges_on_policy_rejection": "no" } + } + ], + "has_more": true, + "next_cursor": "example-cursor", + "limit": 50 +} +``` + +### 模型计费事实 {#model-billing-facts} + +在调用路径中使用 `id`。`billing` 对象包含的是计费事实,而不是价格。在依赖它之前,请先阅读[策略拒绝计费](/zh/development/comfy-router/api#model-billing-facts)。 + +### 分页 + +- 当 `has_more` 为 `true` 时,将返回的 `next_cursor` 作为 `cursor` 传入。当 `has_more` 为 `false` 时停止,即使之前的某一页比请求的数量更少。 +- 将游标视为不透明值。对值进行 URL 编码,例如使用 cURL `--get --data-urlencode "cursor=$NEXT_CURSOR"`;不要计算偏移量或修改游标。 +- `limit` 默认为 20,上限为 100。超过上限的值会被截断;零和负值会选择默认值。响应中会报告实际使用的 limit。 +- 无效游标会返回 `400` / `invalid_input`,而不会静默地重新开始该列表。 +- 游标在目录更新后可能仍然有效,但遍历并不是快照:在你当前位置之前新增的模型可能不会出现在该次遍历中。 + +`503` / `service_unavailable` 是临时性的。请使用退避策略重试;不要将其视为空目录。SDK 的 run 方法会直接调用已选择的模型。 + +## 读取单个模型 + +当你知道模型 ID 时,可以直接获取目录条目: + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro +``` + +模型详情端点无需遍历整个目录。完整的条目字段请参阅[API 参考](/zh/development/comfy-router/reference)。 + +## 读取输入和输出 schema + +每个模型都公开一份独立的 OpenAPI 文档: + +```bash +curl --dump-header schema-headers.txt \ + -H "X-API-Key: $COMFY_API_KEY" \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +在模型操作中,`requestBody` 描述输入,而在已编写输出 schema 的情况下,`200` 响应描述输出。输入验证与输出文档说明是两回事:Router 会依据其输入 schema 进行验证,但不会依据输出 schema 验证返回的提供商结果。 + +既要检查输出的媒体类型,也要检查其字段。未编写输出 schema 时可能使用 `*/*`,并且有些模型返回的是二进制数据而非 JSON。 + +### 缓存 schema + +保存该 schema 及其 `ETag`。在之后获取 schema 时,将该 ETag 传入 `If-None-Match`。`304` 没有响应体;请保留缓存的文档。`200` 会提供一份替换文档和新的 ETag。 + +```bash +curl -H "X-API-Key: $COMFY_API_KEY" \ + -H 'If-None-Match: "previous-etag-value"' \ + https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json +``` + +schema 路由使用 `Cache-Control: private, must-revalidate`。请勿将需要身份验证的响应放入共享缓存。此 ETag/304 行为仅适用于 schema 端点。 + +## 验证与回退 schema + +### 验证错误 {#validation-errors} + +已编写的输入 schema 会在调用提供商之前,通过 `422` 和 `detail[]` 数组拒绝无效字段。请读取 `loc` 中的字段路径;参见[验证错误](/zh/development/comfy-router/api#validation-errors)。 + +某些 schema 接受任意 JSON 对象,并设置 `x-comfy-input-schema-authored: false`。Router 转发这些请求时不会执行针对模型的验证,因此提供商仍可能拒绝它们。 + +`bfl/flux-2-pro` 目前使用此回退方案。请查阅提供商文档或其模型页面,了解必填字段。 + +## 读取结果 + +Router 返回每个模型的最终结果结构。没有通用的图像、视频或文本封装:BFL 图像输出使用 `result.sample`,而其他模型可以返回 URL 列表或内联字节。 + +部分资产 URL 由 Comfy 重新托管;其他则仍为提供商 URL 或内联字节。查看[结果资产](/zh/development/comfy-router/reference#结果资产),并及时下载即将过期的资产。重放不会续期 URL。 + +## 处理错误、重试与计费 + +### 防御性地读取错误 + +失败的请求可能返回代理的 HTML 错误页面、被截断的 JSON 或纯文本。不要让 JSON 解析错误掩盖 HTTP 状态码或请求 ID。以下辅助函数在 Python 中使用 `httpx.Response`,在 TypeScript 中使用 Fetch 的 `Response`;对于常规的 SDK 调用,SDK 已经暴露了错误字段。 + + + +```python +def read_router_error(response): + body = None + if response.headers.get("content-type", "").startswith("application/json"): + try: + body = response.json() + except ValueError: + body = None + + detail = body.get("detail") if isinstance(body, dict) else None + return { + "status": response.status_code, + "request_id": response.headers.get("X-Comfy-Request-Id"), + "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), + "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", + "validation": detail if isinstance(detail, list) else [], + } +``` + +```typescript +async function readRouterError(response: Response) { + let body: unknown; + try { + body = JSON.parse(await response.text()); + } catch { + body = undefined; + } + + const detail = + typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; + + return { + status: response.status, + requestId: response.headers.get("X-Comfy-Request-Id"), + errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", + message: typeof detail === "string" ? detail : `HTTP ${response.status}`, + validation: Array.isArray(detail) ? detail : [], + }; +} +``` + +### 验证错误 + +Router 的 `422` 表示在调用提供商之前验证失败,且不会计费。其响应体包含一个 `detail[]` 数组,每个被拒绝的字段对应一个条目。错误类别位于 `X-Comfy-Error-Type` 中,而不是在响应体里。例如: + +```json +{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} +``` + +这是一个示例形状。输入 schema 较为宽松的模型可能会将缺失字段转发给提供商,而不是返回 Router 的 `422`。 + +| 字段 | 含义 | +| --- | --- | +| `loc` | 被拒绝字段的路径,最外层片段在前。 | +| `msg` | 人类可读的失败原因。 | +| `type` | 提供商特定的原因,例如 `missing`、`greater_than` 或 `image_too_small`。 | +| `ctx` | 该提供商错误可选的边界值或额外数据。 | + +`400` 描述的是请求级别的问题,例如格式错误的游标,而不是这种逐字段的验证响应体。[错误参考](/zh/development/comfy-router/reference#错误分类桶)列出了受支持的分类。在控制流中,将未知类别视为 `internal_error`,但要保留原始值以便诊断。不要硬性拒绝新的错误值,也不要将预测中的错误类别当作已经出现那样去实现。### 安全重试 + +在**发送之前**,将密钥与模型 ID 和请求体一起持久化保存。对该逻辑调用的每一次尝试都复用它。Router 不会在响应中向你返回 `Idempotency-Key`。Python SDK 会在抛出的异常中附带该密钥;在 TypeScript 中,你需要自行保存所提供的密钥。 + +密钥在凭证所携带的工作区内共享;若凭证不携带工作区,则作用域限定为该用户。使用在该作用域内唯一的 UUID,并使用同一凭证重试。复用其他工作区成员的密钥可能会返回他们已记录的结果,或导致冲突;更换凭证则可能启动一次单独的、计费的调用。 + +### 超时与收集 {#timeouts-and-collection} + +Router 会将带密钥的响应或集合状态保留 24 小时;重试不会开启新的保留窗口。一旦该状态过期,就不要指望旧密钥能恢复结果或阻止新的派发。密钥也无法让已过期的资源 URL 重新可用。### 重试结果 + +### 重试结果 {#retry-outcomes} + +| 状态 | 分组 | 含义 | 应对措施 | +| --- | --- | --- | --- | +| `200` | `Idempotent-Replayed: true` 响应头 | 路由器重放了某项结果,或返回了已收集的生成结果。 | 直接使用该结果;这种重放不会产生第二次 Comfy 计费。 | +| `409` | `concurrency_limit_exceeded` | 该键对应的原始调用仍在运行。 | 等待 `Retry-After`,然后用同一个键重新发送。 | +| `504` | `deadline_exceeded`,并带有 `Retry-After` | 路由器保留了指向已接受的提供商工作任务的句柄。 | 等待所标明的时间间隔,然后用同一个请求和键重新发送以收集该结果。该任务可能仍在运行。 | +| `429` | `rate_limited` | 请求配额已耗尽。 | 等待 `Retry-After`,然后用同一个键重试。 | +| `429` | `concurrency_limit_exceeded` | 并发调用数或已承诺支出上限拒绝了该请求。 | 降低并发数,然后用同一个键重试。检查支出相关的响应头。 | +| `409` | `invalid_input` | 该请求与该键的原始请求不一致,或其记录无法重放。 | 检查该冲突。如果请求已变更,请恢复原始请求。仅当你确实想发起一次新的、可能产生计费的调用时,才使用新键。 | +| 没有收集提示的 `504`、其他 `5xx`,或无响应 | 视情况而定 | 仅凭状态码无法判断工作是已被接受、已保留,还是已释放。 | 保持相同的键和请求。使用有界重试策略;无法保证一定能够恢复。 | + +冲突判定会比较方法、模型路径、查询和请求体。在响应过大、响应写入失败,或某个资产无法安全重放之后,键可能变为不可重放。等待无法恢复已被消耗的结果。新键会发起一次新调用,而不会取回旧的输出。 + +在提供商派发之前的拒绝会释放该键。已派发的调用可能保留提供商句柄,或变为不可重放。不要仅凭状态码推断键的状态或计费情况。 + +不要仅仅因为调用超时或连接已断开就生成全新的键。如果路由器已经接受了该生成任务,使用新键可能创建第二次逻辑运行,从而产生第二次计费结果。在确认原始调用无法恢复之前,请复用同一个键。 + +#### 超时与结果收集 + +一次路由器调用默认最多可保持连接 10 分钟。请将客户端超时设置为高于该上限,这样你拿到的是带类型的 `504` 和请求 ID,而不是一个含义不明的本地中止。 + +`deadline_exceeded` 是路由器自身的等待上限;`provider_timeout` 是提供商的截止时间。即使调用方收到超时或已断开连接,只要提供商的生成任务完成,就可能产生计费。客户端取消会停止等待和 SDK 重试,但不一定会取消已被提供商接受的工作。 + +对于提交并轮询式提供商,保留的句柄可让使用同一个键的请求继续收集原始生成结果。被派发但在中断时未留下可恢复句柄的调用,可能消耗掉该键却得不到可重放的结果;此时用同一个键重试会返回 `409`。若提供商归因的瞬时故障并未捕获到成功结果,该键仍可能被释放以进行另一次尝试。仅凭句柄缺失这一事实,无法判断属于哪种结果。 + +SDK 会在有界预算内重试部分失败。一旦它们返回错误,请保留原请求和键,而不是生成新的。对于原生 HTTP,以下示例只对两种明确的收集提示进行重试: + +```python +import os +import time + +import httpx + + +def collect(model, arguments, key, attempts=3): + with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: + for attempt in range(attempts): + response = client.post( + f"https://api.comfy.org/v2/models/{model}", + headers={"X-API-Key": os.environ["COMFY_API_KEY"], + "Idempotency-Key": key}, + json=arguments, + ) + if response.is_success: + return response.json() + + category = response.headers.get("X-Comfy-Error-Type") + collecting = (response.status_code, category) in { + (409, "concurrency_limit_exceeded"), + (504, "deadline_exceeded"), + } + delay = response.headers.get("Retry-After", "") + if not collecting or not delay.isdigit() or attempt == attempts - 1: + response.raise_for_status() + time.sleep(int(delay)) + raise ValueError("attempts must be positive") +``` + +请传入原始模型、请求体和已保存的键。这限制的是尝试次数,而不是总挂钟时间:每次调用最多可持续到客户端超时,且每次等待都遵循 `Retry-After`。HTTP 错误会保留响应以供检查;传输层错误会直接向上传播,且不会替换该键。如果你的应用需要更长的恢复窗口,可使用已保存的键安排在稍后收集结果。### 模型计费事实 + +`GET /v2/models` 和模型详情响应都包含 `billing.charges_on_policy_rejection`。它描述的是策略拒绝,而不是所有失败情形,也不是价格估算。 + +| 值 | 含义 | +| --- | --- | +| `yes` | 策略拒绝会收费。 | +| `no` | 策略拒绝不收费。 | +| `unknown` | 尚未有人确定其行为。请按可能收费来处理。 | + +请显式比较这些字符串:`"no"` 在 Python 和 JavaScript 中都是真值。任何无法识别的值都视为 `unknown`。因积分不足而被拒绝的请求会报告 `insufficient_credits`。 + +提供商返回的载荷可能包含它们自己的成本或用量数字;这些并不是 Comfy 的扣费。`X-Comfy-Credits-Used` 可能对允许列表中的提供商出现,但它并不通用,也不会被重放。请使用[工作区用量和发票](https://platform.comfy.org)进行对账。调查扣费时请保留请求 ID。 + +## 各模型示例 + +- [Google Gemini](/zh/development/comfy-router/models/google/gemini/code) +- [Nano Banana 2](/zh/development/comfy-router/models/google/nano-banana-2/code) +- [Nano Banana 2 Lite](/zh/development/comfy-router/models/google/nano-banana-2-lite/code) +- [Nano Banana Pro](/zh/development/comfy-router/models/google/nano-banana-pro/code) +- [FLUX 1.1 Pro Ultra](/zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code) +- [FLUX Kontext](/zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code) +- [FLUX Video Upscale](/zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code) +- [FLUX 3 Video](/zh/development/comfy-router/models/black-forest-labs/flux-3-video/code) +- [Ideogram 4](/zh/development/comfy-router/models/ideogram/ideogram-v4/code) + +## 下一步 + +- [快速开始](/zh/development/comfy-router/quickstart):安装、调用以及保存图像。 +- [API 参考](/zh/development/comfy-router/reference):端点参数、模式以及响应码。 diff --git a/zh/development/comfy-router/headers.mdx b/zh/development/comfy-router/headers.mdx new file mode 100644 index 000000000..380a5154a --- /dev/null +++ b/zh/development/comfy-router/headers.mdx @@ -0,0 +1,96 @@ +--- +title: "Comfy Router 请求头" +sidebarTitle: "请求头" +description: "你可以向 Comfy Router 发送的请求头,以及它会返回的响应头,适用于所有模型:身份验证、幂等性、请求 ID、错误分桶、重试节奏和支出限额。" +translationSourceHash: ea8cad67 +translationFrom: development/comfy-router/headers.mdx +translationBlockHashes: + "_intro": 6e9409a3 + "Request headers": 1a4e6df7 + "Response headers": 4504c25b + "Status codes that carry two meanings": f390ff0e + "Next": 31f315d9 +--- +每个 Router 模型都使用 `POST /v2/models/{provider}/{model}`,并各自带有 JSON 请求体。本页介绍各模型共用的请求头;[API 参考](/zh/development/comfy-router/reference) 列出了已生成的契约。 + +Comfy SDK(Python 版为 `comfy-sdk`,TypeScript 版为 `@comfyorg/sdk`)负责处理身份验证并生成幂等键。它们会按下文所述公开选定的响应元数据。原生 HTTP 客户端必须自行发送和读取这些请求头。 + +## 请求标头 + + + Comfy API 密钥,格式为 `comfyui-...`,在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建。它使用你工作区的模型访问权限和额度余额。你也可以通过 `Authorization: Bearer comfyui-...` 发送它;如果两个标头同时存在,`X-API-Key` 优先。 + + + + `Bearer `。以 `comfyui-` 开头的值是 API 密钥。任何其他值都会被当作 Comfy Cloud JWT。 + + + + 标识一次逻辑生成。在调用之前生成并存储一个 UUID,然后在重试未发生变化的请求时复用它。该密钥可以在最长 24 小时内重放结果或收集已接受的任务。SDK 会生成密钥,也允许你自行提供(Python 中为 `idempotency_key=`,TypeScript 中为 `idempotencyKey`)。关于冲突、过期和不可重放的结果,请参阅[重试结果](/zh/development/comfy-router/api#retry-outcomes)。 + + + + `application/json`。发送模型的原生 JSON 输入。字段和验证要求因模型而异;请参阅[使用 Router API](/zh/development/comfy-router/api)。 + + + + 仅用于 `GET /v2/models/{provider}/{model}/openapi.json`。发送你从先前的 `200` 响应中保留的 `ETag`;当它仍然匹配时,响应是带有相同 `ETag` 的无响应体 `304`。将模型的模式缓存在进程的整个生命周期内,并以这种方式重新验证,而不是在每次调用之前重新读取它。 + + +## 响应头 + + + 标识此次 HTTP 请求。联系支持时请提供该值。TypeScript 将其暴露为 `requestId`;Python 在错误中将其暴露为 `request_id`。 + + + + 机器可读的错误类别。在 `422` 响应中请使用此响应头,因为验证响应体包含 `detail[]` 而没有 `error_type`。将其与 HTTP 状态码组合,以决定如何处理。在控制流中将未知值视为 `internal_error`,并保留该值用于诊断。 + + + + 当 Router 直接返回已存储的结果而不是重新运行模型时,此响应头存在且为 `true`。全新运行时不存在此响应头。 + + + + 重试之前需要等待的秒数。在 `409` / `concurrency_limit_exceeded` 或 `504` / `deadline_exceeded` 时,请在等待之后使用相同的请求和 key 进行重试。在 `429` / `rate_limited` 时,它告诉你速率限制何时重置。 + + + + 已承诺用于仍在运行的调用的合作伙伴支出上限,单位为美分。处于执行状态的支出闸门可在准入响应及其 `429` 拒绝响应中返回该值。当闸门未在执行,或由其他控制项拒绝了该请求时,该响应头不存在。 + + + + 当前已承诺用于进行中调用的美分数。准入响应会包含其自身的调用;`429` 则不包含被拒绝的调用。与 `X-Committed-Spend-Limit` 一同发送。 + + + + 距离已承诺支出上限的剩余美分数。当所请求的调用成本超过剩余数量时,它在拒绝响应中也可能为正数。 + + + + 出现在 `GET /v2/models/{provider}/{model}/openapi.json`。请将其存储起来,并作为 `If-None-Match` 发送回去,以重新验证缓存的 schema。 + + + + 在 schema 路由上为:`private, must-revalidate`。将响应保存在私有缓存中,并使用 `ETag` 重新验证过期的副本。 + + +## 具有双重含义的状态码 + +有三种状态码被两个类别共用,而响应头正是区分它们的关键: + +| 状态 | `X-Comfy-Error-Type` | 应对措施 | +| --- | --- | --- | +| `409` | `concurrency_limit_exceeded` | 该 key 的原始调用仍在运行。请等待 `Retry-After`,然后重新发送相同的 key。 | +| `409` | `invalid_input` | 检查该冲突。如果你修改过原始请求,请将其还原。已消耗、不可重放的 key 无法恢复结果;只有在你要发起一次新的、可能计费的生成时,才使用新的 key。 | +| `429` | `concurrency_limit_exceeded` | 同时在途的调用过多,或触达了承诺支出上限(见 `X-Committed-Spend-*` 响应头)。当你自己的某个调用完成后,该限制会自动解除。 | +| `429` | `rate_limited` | 在重试之前等待 `Retry-After`。 | +| `504` | `deadline_exceeded` | Router 自身的 10 分钟上限。收到 `Retry-After` 后,重新发送相同的 key 以取回正在运行的生成结果。 | +| `504` | `provider_timeout` | 合作伙伴超时。请遵循[重试与计费引导](/zh/development/comfy-router/api#retry-outcomes);不要把这种情况当作不收费的保证。 | + +## 下一步 + +- [快速开始](/zh/development/comfy-router/quickstart):发送请求并读取结果。 +- [使用 Comfy Router API](/zh/development/comfy-router/api):模型发现、schema、错误、重试与计费。 +- [API 参考](/zh/development/comfy-router/reference):定义了这些请求头的已生成契约。 +- [限制](/zh/development/comfy-router/limitations):Router 目前尚不支持的功能,以及可以改用哪些方案。 diff --git a/zh/development/comfy-router/limitations.mdx b/zh/development/comfy-router/limitations.mdx index 0588eac46..6c4a956bc 100644 --- a/zh/development/comfy-router/limitations.mdx +++ b/zh/development/comfy-router/limitations.mdx @@ -1,21 +1,22 @@ --- title: "Comfy Router 的局限性" description: "Comfy Router 目前无法做到的事、存在替代方案时该改用何种方案,以及其中哪些限制预计将会改变。" -translationSourceHash: b9e78b52 +translationSourceHash: 9f7c29d2 translationFrom: development/comfy-router/limitations.mdx translationBlockHashes: "_intro": 9eea7f43 - "At a glance": fc2ff613 - "No queued submission": f72af0fd - "No cost or credit figures on a response": ba168aa9 - "No way to resume a call you lost": a783a987 - "Calls are cut off at a server deadline": 45bacfca - "Requests are rate limited per caller": 01f2a8c8 - "No progress while a call runs": be9de68d - "Three forecast buckets are not in the vocabulary": f85a2589 - "Router does not cover every partner operation": 9ecc10d1 - "Next": 2d3bb742 + "What Router supports": 7cbf53c7 + "No queued submission": 74107d82 + "Calls are cut off at a server deadline": 2466a237 + "Recovery depends on the provider": 610f0ec8 + "Requests are rate limited per caller": 421194d9 + "No progress while a call runs": 75d42d8d + "Comfy charges and usage": 90cd7670 + "Router does not cover every partner operation": 4de37c36 + "Model outputs and stored assets": 06c737c1 + "Next": be85b789 --- + **Comfy Router 尚未全面可用。** 下文引用的路由: `POST /v1/models/{provider}/{model}` 及其目录和架构相关端点,目前尚未提供服务请求:经过身份验证的调用现在会返回 `404`。本页描述的是它们将要提供的契约,并在该上线之前发布,以便集成可以针对已知形状进行编写。以下所有内容都是关于该契约的说明,而不是你现在可以实践的行为。 @@ -23,104 +24,79 @@ translationBlockHashes: Comfy Router 是一次同步调用:你使用一个凭据,将合作伙伴模型的原生输入发送到一个主机,连接保持打开,`200` 响应携带该模型的原生输出。这种形状正是让首次集成变得简短的原因,也是本页所有限制的来源。在围绕 Router 进行设计之前阅读本页,而不是之后:下文大部分内容都有直接的替代方案,而那些没有替代方案的内容,值得你在基于 Router 并不成立的假设进行构建之前了解。 -## 概览 - -每一行都会链接到详细说明该限制的章节。**设计使然**表示该限制是 Router 工作方式的一部分,不依赖任何待实现的功能;**尚未支持**表示 Router 预计将获得该能力,但本页面不对具体时间做出任何承诺。 +## Router 支持什么 -| 限制 | 替代方案 | 状态 | +| 需求 | Router 支持情况 | 备选方案或后续步骤 | | --- | --- | --- | -| [无排队提交:调用为同步操作](#不支持排队提交) | 保持连接打开,或使用合作伙伴代理路由进行提交和轮询 | 尚未支持 | -| [响应中不包含费用或额度数据](#响应中不包含费用或积分数字) | 在 Comfy 平台查看余额和使用量;调用之前查看模型目录条目上的 `billing` 字段 | 尚未支持 | -| [无法恢复已丢失的调用](#无法恢复已丢失的调用) | 发送 `Idempotency-Key`,这样重试最多只会计费一次,但无法恢复已丢失的结果 | 尚未支持 | -| [调用会在服务器截止时间被切断](#调用会在服务器截止时间被切断) | 为客户端设置高于截止时间的超时;拆分无法在截止时间内完成的工作 | 设计使然 | -| [请求按调用方进行速率限制](#请求按调用方进行速率限制) | 收到 `429` `rate_limited` 时按 `Retry-After` 退避;缓存目录读取结果,而不是每次调用都重新获取 | 设计使然 | -| [调用运行期间不提供进度信息](#调用运行期间无进度) | Router 目前没有此类功能;合作伙伴代理路由可能会提供自身的进度信息 | 尚未支持 | -| [三种预测分桶不在词汇表中](#三个预告的分类不在词汇表中) | 处理 Router 提供的十五种分桶;将任何无法识别的值视为 `internal_error` | 尚未支持 | -| [Router 不覆盖所有合作伙伴操作](#router-并不覆盖每个合作伙伴操作) | 使用同一主机上 `/proxy/…` 下的合作伙伴代理路由 | 设计使然 | +| 使用单个请求生成 | `POST /v2/models/{provider}/{model}` 返回已完成的结果。 | 从[快速入门](/zh/development/comfy-router/quickstart)开始。 | +| 提交任务并稍后收集 | 没有常规的任务/状态 API 或完成 webhook。 | 在 worker 中运行 Router,或使用具备提交并轮询操作的合作伙伴代理。 | +| 显示进度或流式输出 | 调用期间没有实时进度、流式传输或预览帧。 | 显示不确定状态,或使用受支持的代理操作。 | +| 连接丢失后恢复 | 当 Router 保留了已接受生成的句柄时,可使用同键收集。 | 保留该键并遵循[重试引导](/zh/development/comfy-router/api#retry-outcomes)。 | +| 对账 Comfy 费用 | 响应中没有通用的 Comfy 成本或信用余额字段。 | 使用[工作区计费](https://platform.comfy.org)。 | +| 永久存储结果 | 资产 URL 可能会过期,包括重新托管和重放的 URL。 | 下载资产;参见[结果资产](/zh/development/comfy-router/reference#结果资产)。 | ## 不支持排队提交 -运行模型只有一种方式:`POST /v1/models/{provider}/{model}`,该端点会保持连接,直到生成完成并在响应中返回结果。没有接受任务后返回标识符、让你稍后再来获取结果的端点,也没有完成时的回调或 webhook。 - -**替代做法。** 对大多数模型来说这不成问题:保持连接打开并读取结果即可。快速的图像模型几秒钟即可返回;长时间的视频生成可能运行数分钟,Router 会为其一直保持连接。设置一个宽裕的客户端读取超时,要高于 [Router 自身的截止时间](#调用会在服务器截止时间被切断),并将该调用视为长时间运行的请求,而非快速请求。如果你的架构确实无法保持连接打开,例如执行上限很短的 serverless 函数,或你预期用户会关闭的浏览器标签页,那么就从你能控制且能够保持连接的 worker 发起调用,或者使用合作伙伴代理路由,选择提供自身提交和轮询机制的提供商。参见[最后一节](#router-并不覆盖每个合作伙伴操作)。 - -**状态:尚未提供。** 排队路径属于预期功能;本页不承诺具体时间。 - -## 响应中不包含费用或积分数字 - -Router 响应会告诉你模型生成了什么,但它的契约不涉及任何成本信息。响应体中不包含收费金额、积分余额或使用量数字,路由也不声明任何成本标头。有一个注意事项,以免你感到意外:Router 与合作伙伴代理路由共享同一条计费路径,该路径在允许列表中的提供商的计费响应上标记 `X-Comfy-Credits-Used`,因此当你调用其中某个提供商时,该标头可能会出现在 Router 响应中。它不属于 Router 契约的一部分:对于允许列表之外的每个提供商,该标头都不会出现,并且它特意*不会*在幂等重试时重放,其目的正是为了防止汇总该标头的客户端对仅支付过一次的调用进行重复计数。不要基于它来对账。模型目录也是如此:它包含调用方在调用之前所需的计费*事实*,而从不包含价格。因此,你无法仅凭 Router 响应来核对支出,也无法在未从其他地方获得 X 的情况下向用户显示“这次调用花了 X”。 - -**替代做法。** 你的余额、使用量和账单都保存在 Comfy 平台的 [platform.comfy.org](https://platform.comfy.org):这是你已支出和剩余金额的事实来源,且不受本页任何内容的影响。Router 在调用时确实会告诉你两件值得利用的事情:因积分不足而被拒绝的调用会返回 `insufficient_credits`,这样你就可以将积分耗尽作为类型化错误来处理,而无需预先检查余额;另外,每个模型的目录条目都带有 `billing.charges_on_policy_rejection`,它表明该特定模型是否会基于内容政策拒绝生成并因此向你收费。它是一个**包含三个值的字符串**,而不是布尔值:`yes`、`no` 和 `unknown`。请将 `unknown` 理解为“这可能会向你收费”:它意味着还没有人确定该模型的行为,而它存在正是为了使未经检查的模型不会以 `no` 形式发布,因为 `no` 是一种断言。该字段刻意不是 `enum`,因此请将任何你无法识别的值也视为 `unknown`,并且不要对它进行真值检查:字符串 `"no"` 在大多数语言中是真值,这样的检查会让这个字段本来要捕获的情况反转。不同提供商在这方面存在差异,这种差异在调用时不可见,而在调用之前读取它,正是为了避免事后出现无法解释的收费。 - -**状态:尚未提供**逐次调用的数字。请注意,*目录*刻意不携带价格:定价属于维护价格的地方,而不会重复复制到可能与之偏离的模型列表中。 - -## 无法恢复已丢失的调用 - -Router 不会保留进行中调用的可恢复记录。没有状态路由,没有任务标识符,也没有任何可重新连接的对象。如果连接在调用中途断开(客户端崩溃、网络分区、重启进程的部署),响应便不复存在,之后你也无从查询这次调用。*生成*是否已完成并被计费,与你是否收到它,是两个不同的问题,而丢失连接并不能可靠地回答其中任何一个。 - -**应该怎么做。** 在每次调用中发送 `Idempotency-Key` 请求头。它不能让已丢失的调用恢复,但能让重试变得安全。Router 会在调用时长内保留该密钥;当调用确实将答案送达你时,Router 会将该响应记在该密钥下并保留 24 小时。使用**相同**密钥重试时,便会重放已记录的响应,而不是第二次向提供商分派请求(并再次计费),并标记为 `Idempotent-Replayed: true`,以便你区分重放与全新运行。请为每个逻辑调用生成一个新密钥,而不是每次尝试都生成新密钥。以*不同*请求体出示相同密钥会返回 `409`,而不是静默覆盖。 - -请准确理解这能给你带来什么,因为这是**计费**属性,而不是投递属性:**一个密钥最多只计费一次。** 它并不是承诺一个密钥最多只向提供商分派一次。Router 会为你实际收到的答案保留密钥;任何未向你收费的结果都会释放密钥,使调用可以再次进行。`5xx`、`408`/`425`/`429`,以及(这里最关键的一种情况)完全没有内容到达你的调用:这些情况都会释放密钥,使用该密钥重试会真正重新执行,并重新分派给提供商。 +模型运行期间,Router 会保持连接。对于异步提供商,Router 会提交任务并在内部轮询。它不会暴露 Router 任务ID、状态端点、回调或 webhook。 -**因此,连接断开正是幂等性*无法*挽救的情况。** 调用中途丢失连接通常意味着从未有任何响应真正交付给你,这正是上述的释放路径:使用相同密钥重试会开启全新运行,而不是把你错过的结果交给你。如果原始生成已经被分派,提供商可能会第二次运行它。这是正确的默认行为:你从未收到且未被计费的调用应当可以重新运行。但请按“重试会产生新运行”来规划,而不是“重试会找回丢失的运行”。 - -当 Router *确实*为密钥保留了内容时,重试会得到应答而不是重新执行:要么重放原始响应,要么返回 `409` 说明无法重放的原因。在原始调用仍在进行中时发送的重试会返回携带 `Retry-After` 的 `409`,因此请等待后再重新发送相同的密钥。针对已完成但其响应 Router 无法保留忠实副本的调用进行重试,也会返回 `409`。这不仅限于响应过大的情况:超过重放上限的响应、应答后失败或崩溃的处理器,以及向你写入时失败或写入不足,都会将密钥记录为已消费但不可重放,并返回相同的 `409`。看到这个错误时,不要去找大小问题。上述所有情况下的引导都是一样的:使用**新**密钥。原始调用已完成并被计费,Router 既不会凭空捏造其响应,也不会在旧密钥下重新运行它。 - - -**已生成的合同中尚无这些内容。** 此处描述的 `Idempotency-Key` 请求头、`409` 响应以及 `Idempotent-Replayed` 和 `Retry-After` 响应头,并未在生成参考文档所依据的 OpenAPI 合同中的 `POST /v1/models/{provider}/{model}` 上声明,因此它们不会出现在生成的 API 参考中,SDK 也不会对它们进行建模。在获得支持之前,请自行发送和读取这些内容。 - - -**状态:尚未支持。** 持久化、可恢复的执行预计将随队列式路径一同推出,届时请求记录将有处可存。幂等重试目前就是答案,而且它不是临时方案:无论如何都值得集成。 +如果你的请求无法保持足够长的连接,可以从 worker 调用 Router,并在自己的应用中跟踪任务。当你需要提供商自身的提交和轮询控制时,请使用[合作伙伴代理](#router-并不覆盖每个合作伙伴操作)。 ## 调用会在服务器截止时间被切断 -一次 Router 调用可将连接保持 **10 分钟**。这是默认值;它是服务器端配置值,而不是固定常量,因此应将其视为设计时依据的数字,而不是合同里写死的保证。超过该时间后,Router 不再等待,会取消自身发送给提供商的进行中请求,并以 `X-Comfy-Error-Type: deadline_exceeded` 返回 `504`。**`deadline_exceeded` 调用不会被计费**:这个上限是我们的,所以它的成本也是我们的。 +Router 的默认截止时间为 **10 分钟**,可由部署方配置。请将客户端超时设置为高于该值,以便 Router 能先返回其错误和请求 ID。 -取消操作不会做的两件事,都值得你在重试之前了解。它不会撤销提供商已经接受的生成:对于 Router 通过提交任务并轮询来驱动的合作伙伴,截止时间到期只会结束 Router 自身的等待,而不会结束提供商的工作,因此该任务可能运行到完成,而重试可能产生**第二次生成**(你仍然不会为超时的调用付费)。它也无法撤回已发送的应答:如果处理程序在截止时间到期的瞬间赢得竞态并提交了响应,你会保留该响应,而不是 `504`。 +`504` / `deadline_exceeded` 表示 Router 停止了等待;`504` / `provider_timeout` 表示提供商超时。超时或连接丢失并不能证明某次生成未被计费,也不会取消提供商已接受的工作。重试之前,请阅读[超时与计费](/zh/development/comfy-router/api#timeouts-and-collection)。 -不要将它和另一个 `504` 混淆。`provider_timeout` 表示合作伙伴未能及时应答,而这种错误**会**被计费;`deadline_exceeded` 表示 Router 自身的上限已过期。两种原因,两种计费结果,这正是它们在同一个状态码上分成两个分类的原因:请根据 `X-Comfy-Error-Type` 分支判断,切勿只依赖状态码。 + -**替代做法。** 将客户端的读取超时设置为留足余量地*高于*截止时间,而不是低于它。先放弃的客户端会把带有请求标识符的类型化 `504` 变成一次不透明的本地中止,而你也会丢失支持团队唯一可以追踪的线索。如果单个生成确实无法在截止时间内完成,那么 Router 目前并不是适合它的正确形式:请通过合作伙伴代理路由运行它,该路由会提交并轮询;或者将工作拆分成每次都能在截止时间内完成的多次调用。 +## 恢复取决于提供商 -**状态:有意为之。** 必须存在一个上限:如果没有上限,卡住的上游会无限期地占用连接和并发槽位。具体数值可以调整,但截止时间的存在不会消失。 +对于一次已被接受的「提交并轮询」式生成,Router 可以保留提供商句柄。复用同一个 `Idempotency-Key` 即可稍后收集结果;已完成且可重放的响应也可以从该 key 记录中获取。 -## 请求按调用方进行速率限制 +并非每个已断开连接的调用都可恢复。在发送之前先保存请求和 key,然后使用[重试结果表](/zh/development/comfy-router/api#retry-outcomes)。使用新的 key 会创建新的调用,并可能产生额外费用。 -Router 对你的流量限制的是两件不同的事情,并且在同一个 `429` 上用两个不同的分桶来回应。并发限制约束的是你同时**在途**的调用数量,回应 `concurrency_limit_exceeded`;只要你自己的某个调用一完成它就会解除,因此几秒后重试是正确的做法。速率限制约束的是你**多频繁**地访问 Router 这一层(`POST /v1/models/{provider}/{model}` 和 `/v1/models` 下的三个目录读取一律计入,无论该调用运行了模型还是在此之前就被拒绝),回应 `rate_limited`。后者是一个在一分钟窗口内持续补充的额度,你做什么都无法让它提前消耗完:响应携带 `Retry-After` 头给出需要等待的秒数,`detail` 中说明了窗口。请根据 `X-Comfy-Error-Type` 分支判断,切勿只看状态码。 +## 请求按调用方进行速率限制 -该限制以经过身份验证的调用方为键,而不是来源地址,因此它会跟随你的凭证跨越主机。使用你自己的提供商密钥(bring-your-own-key)运行的调用不受限制:那份吞吐量属于你自己。该额度是服务器端配置值而不是公开常量,本页有意不给出具体数字;请围绕退避而不是某个数字来设计。 +| 响应 | 原因 | 操作 | +| --- | --- | --- | +| `429` / `concurrency_limit_exceeded` | 并发调用过多,或在承诺支出上限之下余量不足。 | 减少并发工作。支出响应头可将支出上限与调用次数限制区分开来。 | +| `429` / `rate_limited` | 请求额度已耗尽。 | 等待 `Retry-After` 后再重试。 | -**替代做法。** 遵守 `Retry-After`:在此期限内重试只会得到同样的拒绝。`GET /v1/models` 和模型的 `openapi.json` 只需获取一次并在进程生命周期内缓存,不要在每次调用前重新读取;它们只会在部署时变化。保留了 `429` 中请求标识符的客户端,就拥有了支持团队可以追踪的线索。 +请求速率限制适用于调用以及目录/schema 读取,包括在生成之前就被拒绝的请求。它跟随经过身份验证的调用方,而不是来源 IP。使用调用方自己的提供商密钥的调用不受此限制;提供商自身的限制仍然适用。 -**状态:有意为之。** 按调用方限制请求速率的上限必须存在,理由与截止时间相同。数字可以调整,但限制的存在不会消失。 +缓存目录与 schema 读取。使用 `ETag` 和 `If-None-Match` 重新验证 schema。重试字段与承诺支出字段见[响应头](/zh/development/comfy-router/headers)。 ## 调用运行期间无进度 -`POST /v1/models/{provider}/{model}` 只在调用结束时返回一次。没有流式响应、没有服务器发送事件、没有百分比、没有部分帧或预览帧。即使对于自身 API 为“提交并轮询”(submit-and-poll)的合作伙伴,情况也是如此:Router 会在您的这一次调用内部完成该轮询,但它看到的中间状态不会转发给您。从外部来看,耗时三秒的图像与耗时六分钟的视频形状相同:一个请求、一个响应,中间什么也没有。 - -**替代做法。** 就目前的 Router 而言,没有任何办法:请显示不确定的进度状态,而不是一个您无法获取的百分比。如果进度是某个特定提供商的硬性要求,请检查该提供商的合作伙伴代理路由是否公开了它们自己的轮询或流式接口,并直接使用这些路由:少数提供商确实如此,这些路由未做改动且完全受支持。 +Router 只返回最终响应,不提供流式 token、服务器发送事件、百分比更新或中间预览帧。提供商内部的轮询状态不会在请求期间转发。 -**状态:尚未实现**,并且与排队路径相关联:进度需要有一个可以反馈的去处,排队提交提供了这一去处,而单个同步调用无法提供。 +请显示不确定的进度指示器。如果您需要进度或流式输出,请使用可暴露这些信息的合作伙伴代理操作。 -## 三个预告的分类不在词汇表中 + -Router 的 `error_type` 词汇表是一个**包含十五个分类的封闭集合**:即 [API 参考](/zh/development/comfy-router/reference) 中列出且快速入门所指的那十五个。该参考文档的正文中还另行提及三个作为预期新增项:`file_download_error`、`cancelled` 和 `queue_timeout`。它们只是被提及,仅此而已。它们目前**不是该集合的成员**:没有任何 Router 响应携带它们,根据契约生成的客户端也不认识它们,而且如果 Router 在内部收到其中一个,它会用 `internal_error` 代替,而不是将其作为响应发出。因此,你今天为它们编写的分支是永远不会运行的分支,而且它们在参考文档中的出现并不能证明 Router 会取消调用或将它们排队:它两者都不会做。 +## Comfy 费用与用量 -它们以书面形式预告出来,而不是被完全省略,因为 `error_type` 刻意设计为普通字符串而非 `enum`,而一个硬性拒绝无法识别分类的客户端,恰恰会在事情已经出错的时候失败得最严重。提前说出这些新增项,正是为了让读者知道该集合在设计上就是开放式的。 +响应可能包含提供商的用量或成本字段。它们并不代表通用的 Comfy 计费。`X-Comfy-Credits-Used` 是可选的,并且不会被重放。请使用 Comfy 平台查询余额、用量和发票。 -**应该怎么做。** 处理 Router 实际发布的十五个分类,完整列表见 [API 参考](/zh/development/comfy-router/reference),并编写一个将任何无法识别的值视为 `internal_error` 的回退分支。这个回退分支就是整套机制:正是它让这三个分类,以及任何在你编写客户端之后新增的分类,在到达时都不会导致你的客户端出错。控制流应基于粗粒度分类进行分支;当你需要具体原因时,再读取 `422` 响应体中每个字段对应的 `type`。 - -**状态:尚未实现。** 这三个分类各自对应 Router 尚不具备的行为,而且每个分类都会在开始输出它的同一次变更中加入词汇表,绝不会在此之前加入。 +目录提供的是计费事实,包括 `billing.charges_on_policy_rejection`,而不是价格。请显式处理 `yes`、`no` 和 `unknown`。参见[计费](/zh/development/comfy-router/api#model-billing-facts)。 ## Router 并不覆盖每个合作伙伴操作 -Router 运行合作伙伴的*模型*。它并不承接合作伙伴暴露的每个操作:文件上传、账户与资产读取、提供商特定的管理调用、流式聊天端点,以及某些合作伙伴发布的提交与轮询配对。Router 也不会重塑其中任何一项:它转发模型的原生输入,并原样返回其原生输出,因此不存在可将不受支持的操作移植上去的统一封装格式。 +Router 运行模型。文件上传、账户读取、资产管理、流式传输以及提供商任务控制可能需要 `/proxy/…` 下的合作伙伴代理路由。请查阅 [Comfy API 规范](/zh/openapi-v2.yaml);支持情况因提供商而异。 + +## 模型输出与存储资产 -**替代做法。** `/proxy/…` 下的合作伙伴代理路由在同一主机上、使用同一凭证仍然完全受支持,它们正是 Router 未覆盖的任何内容的答案。它们没有被弃用,也没有处于逐步淘汰的路径上;在同一集成中与 Router 一起使用它们属于预期用法,而非变通方案。当你想跨许多模型只使用一种路由形状和一个凭证时,请使用 Router;当你需要某个特定的合作伙伴操作、提供商自身的流式响应,或 Router 刻意隐藏的提交与轮询控制时,请使用 `/proxy/…`。 +输入和输出字段因模型而异。从提供商 SDK 或代理迁移时,路由方式以及结果读取方式都可能发生变化。 -**状态:有意为之。** Router 刻意收窄了暴露面:单一路由形状本身就是其特性。代理暴露面保持现状。 +部分资产会重新托管到 Comfy 存储上,其他资产则是提供商 URL 或内联字节。关于生命周期和重放行为,请参阅[结果资产](/zh/development/comfy-router/reference#结果资产)。 ## 下一步 -- [Comfy Router 快速入门](/zh/development/comfy-router/quickstart): 在 Python 或 TypeScript 中发起第一个可运行的调用。 -- [Comfy Router API 参考](/zh/development/comfy-router/reference): 涵盖 Comfy Router 发送的每一个端点、每一个参数和每一个错误类别。 + + + 通过 Comfy Router 生成你的第一张图像。 + + + 选择一个模型、查看其 schema,并处理结果与重试。 + + diff --git a/zh/development/comfy-router/models.mdx b/zh/development/comfy-router/models.mdx index 9780fba6a..2a667a3d9 100644 --- a/zh/development/comfy-router/models.mdx +++ b/zh/development/comfy-router/models.mdx @@ -2,277 +2,337 @@ title: "使用 Comfy Router API" sidebarTitle: "使用 Router API" description: "选择模型、检查 schema、安全调用 Router,并处理结果、错误、重试和计费。" -translationSourceHash: 0d8c3756 +translationSourceHash: 7bca7f7c translationFrom: development/comfy-router/models.mdx translationBlockHashes: - "_intro": 1b554933 - "Discover the catalog": 9264e92d - "Read one model": 6d96021f - "Read input and output schemas": 0b7e6eaa - "Validation and fallback schemas": 9e039521 - "Read the result": fab75186 - "Handle errors, retries, and billing": 563281f5 - "Per-model examples": ed06edba - "Next": 30e39619 + "_intro": f10928e2 + "Anthropic": 6b3a82aa + "Beeble": 3dbc8f79 + "Black Forest Labs": f9ec2193 + "Bria": 524538b9 + "BytePlus": 153e22f7 + "Elevenlabs": d6122bad + "fal": 8962295e + "Freepik": 9b9fc279 + "Gemini Interactions": 772301fb + "Google": 5fb1cd15 + "HeyGen": e63b341c + "Ideogram": a5b5a0ab + "Kling": 78f8dd06 + "Krea": c09355fb + "LTX": 0454756a + "Luma": aaec5c26 + "Luma 2": 7d46b851 + "Meshy": ac9742cb + "MiniMax": 871fec64 + "Moonvalley": 1bafd9a3 + "OpenAI": 1ecffa94 + "Pruna": 29b758ff + "Qwen": 07ff7742 + "Recraft": b75cce53 + "Runway": ec0c741f + "Tencent": 3b746819 + "Veo": 886ab7ad + "Wan": fbd864f4 + "WaveSpeed": 08c44be9 + "xAI": ac264069 --- -选择一个模型,检查其模式,然后调用 `POST /v2/models/{provider}/{model}`。不同模型之间的路由和身份验证保持不变。 -## 发现目录 -使用与生成时相同的 API 密钥列出模型: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v2/models?limit=50" -``` - -目录响应的精简示例: - -```json -{ - "data": [ - { - "id": "bfl/flux-2-pro", - "provider": "bfl", - "model": "flux-2-pro", - "billing": { "charges_on_policy_rejection": "no" } - } - ], - "has_more": true, - "next_cursor": "example-cursor", - "limit": 50 -} -``` - -在调用路径中使用 `id`。`billing` 对象包含的是计费事实,而非价格。在依赖该字段之前,请先阅读[策略拒绝计费](/zh/development/comfy-router/models#模型计费事实)。 - -### 分页 - -- 当 `has_more` 为 `true` 时,将返回的 `next_cursor` 作为 `cursor` 传入。当 `has_more` 为 `false` 时停止,即使较早的页面返回的数量少于请求的数量。 -- 将游标视为不透明值。对值进行 URL 编码,例如使用 cURL `--get --data-urlencode "cursor=$NEXT_CURSOR"`;不要计算偏移量,也不要修改游标。 -- `limit` 默认为 20,上限为 100。超过上限的值会被钳制为上限值;零值和负值则使用默认值。响应会报告实际使用的 limit。 -- 无效的游标会返回 `400` / `invalid_input`,而不会静默地重新开始该列表。 -- 游标在目录更新后仍可保持有效,但遍历并非快照:在当前遍历位置之前添加的模型可能不会出现在该次遍历中。 - -`503` / `service_unavailable` 是暂时性的。请使用退避策略重试;不要将其视为空目录。SDK 的 run 方法会直接调用已选择的模型。 - -## 读取单个模型 - -当您知道模型 ID 时,可直接获取目录条目: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro -``` - -模型详情端点可避免遍历整个目录。请参阅 [API 参考](/zh/development/comfy-router/reference) 了解完整的条目字段。 - -## 读取输入和输出模式 - -每个模型都会公开一份独立的 OpenAPI 文档: - -```bash -curl --dump-header schema-headers.txt \ - -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -在该模型操作中,`requestBody` 描述输入;当已编写输出模式时,`200` 响应则描述输出。输入验证与输出文档是不同的:Router 会按其输入模式进行验证,但不会按其输出模式来验证提供商返回的结果。 - -请同时检查输出的媒体类型及其字段。未编写输出模式的输出可能使用 `*/*`,而且有些模型返回的是二进制数据,而非 JSON。 - -### 缓存模式 - -保存该模式及其 `ETag`。之后再获取模式时,请将该 ETag 放入 `If-None-Match` 中传入。`304` 响应没有正文,应保留已缓存的文档。`200` 响应则会提供替换文档和 ETag。 - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - -H 'If-None-Match: "previous-etag-value"' \ - https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json -``` - -该模式路由使用 `Cache-Control: private, must-revalidate`。请勿将经过身份验证的响应放入共享缓存。此 ETag/304 行为仅适用于模式端点。 - -## 验证与回退 schema - -已编写的输入 schema 会在提供商调用之前以 `422` 和 `detail[]` 数组拒绝无效字段。请在 `loc` 中查看字段路径;参见[验证错误](/zh/development/comfy-router/models#验证错误)。 - -某些 schema 接受任意 JSON 对象,并设置 `x-comfy-input-schema-authored: false`。Router 会在不进行模型特定验证的情况下转发这些请求,因此提供商仍可以拒绝这些请求。 - -`bfl/flux-2-pro` 当前使用此回退 schema。请查看提供商文档或其模型页面,了解必填字段。 - -## 读取结果 - -Router 会返回每个模型的终端结果形状。图像、视频或文本没有统一的封装格式:BFL 图像输出使用 `result.sample`,而其他模型可能返回 URL 列表或内联字节。 - -部分资产 URL 由 Comfy 重新托管,其他的仍为提供商 URL 或内联字节。请查看[结果资产](/zh/development/comfy-router/reference),并及时下载即将过期的资产。重放不会续期 URL。 - -## 处理错误、重试和计费 - -### 防御式读取错误 - -失败的请求可能返回代理服务器的 HTML 错误页面、被截断的 JSON 或纯文本。不要让 JSON 解析错误掩盖 HTTP 状态或请求 ID。这些辅助函数在 Python 中使用 `httpx.Response`,在 TypeScript 中使用 Fetch `Response`;对于常规 SDK 调用,SDK 已经暴露了错误字段。 - - - -```python -def read_router_error(response): - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - - detail = body.get("detail") if isinstance(body, dict) else None - return { - "status": response.status_code, - "request_id": response.headers.get("X-Comfy-Request-Id"), - "error_type": response.headers.get("X-Comfy-Error-Type", "internal_error"), - "message": detail if isinstance(detail, str) else f"HTTP {response.status_code}", - "validation": detail if isinstance(detail, list) else [], - } -``` - -```typescript -async function readRouterError(response: Response) { - let body: unknown; - try { - body = JSON.parse(await response.text()); - } catch { - body = undefined; - } - - const detail = - typeof body === "object" && body !== null ? (body as { detail?: unknown }).detail : undefined; - - return { - status: response.status, - requestId: response.headers.get("X-Comfy-Request-Id"), - errorType: response.headers.get("X-Comfy-Error-Type") ?? "internal_error", - message: typeof detail === "string" ? detail : `HTTP ${response.status}`, - validation: Array.isArray(detail) ? detail : [], - }; -} -``` - - - -### 验证错误 - -Router 返回 `422` 表示在调用提供商之前验证失败,且不会产生计费。其响应体包含一个 `detail[]` 数组,每个被拒绝的字段对应一个条目。错误类别位于 `X-Comfy-Error-Type` 中,而不是在响应体中。例如: - -```json -{"detail": [{"loc": ["body", "prompt"], "msg": "Field required", "type": "missing"}]} -``` - -这只是一个示例结构。输入模式较为宽松的模型可能会把缺失字段直接转发给提供商,而不是返回 Router `422`。 - -| 字段 | 含义 | -| --- | --- | -| `loc` | 被拒绝字段的路径,最外层的片段在前。 | -| `msg` | 人类可读的失败原因。 | -| `type` | 提供商特定的原因,例如 `missing`、`greater_than` 或 `image_too_small`。 | -| `ctx` | 该提供商错误的可选边界或附加数据。 | - -`400` 描述的是请求级别的问题,例如格式错误的游标,而不是这种逐字段验证的响应体。[错误参考](/zh/development/comfy-router/reference)列出了支持的类别。在控制流中,将未知类别视为 `internal_error`,但保留原始值用于诊断。不要硬性拒绝新的错误值,也不要像它们已经出现一样去实现尚在规划中的错误类别。 - -### 安全重试 - -在**发送之前**,请将密钥、模型 ID 和请求体一并持久化保存。该逻辑调用的每次尝试都应复用此密钥。Router 不会在响应中向你返回 `Idempotency-Key`。Python SDK 会把该密钥包含在抛出的异常中;在 TypeScript 中,请自行保存你提供的密钥。 - -密钥在凭据所关联的工作区内共享;若凭据未关联工作区,则以该用户为作用域。请使用该作用域内唯一的 UUID,并使用同一凭据重试。复用其他工作区成员的密钥,可能会返回该成员已记录的结果或引发冲突;更换凭据则可能发起一次独立的计费调用。 - -Router 会按密钥保留对应的响应或集合状态 24 小时;重试不会开启新的保留窗口。一旦该状态过期,不要指望旧密钥能恢复结果或阻止新的调度。此外,密钥也无法让已过期的资源 URL 重新可用。 - -### 重试结果 - -| 状态 | 类别 | 含义 | 应对方法 | -| --- | --- | --- | --- | -| `200` | `Idempotent-Replayed: true` 响应头 | Router 重放了结果或返回了已收集的生成结果。 | 使用该结果;重放不会产生第二次 Comfy 费用。 | -| `409` | `concurrency_limit_exceeded` | 该键的原始调用仍在运行。 | 等待 `Retry-After` 后,使用相同的键重新发送。 | -| `504` | `deadline_exceeded`,带有 `Retry-After` | Router 保留了已接受提供商作业的句柄。 | 等待指定间隔,然后重新发送相同的请求和键以收集结果。该作业可能仍在运行。 | -| `429` | `rate_limited` | 请求配额已用尽。 | 等待 `Retry-After`,然后使用相同的键重试。 | -| `429` | `concurrency_limit_exceeded` | 并发调用限制或已承诺消费限制拒绝了该请求。 | 降低并发并使用相同的键重试。检查消费相关请求头。 | -| `409` | `invalid_input` | 请求与该键的原始请求不同,或其记录无法重放。 | 检查冲突。如果请求已更改,请恢复原始请求。仅当您打算发起一次新的、可能计费的调用时,才使用新键。 | -| 没有收集提示的 `504`、其他 `5xx` 或无响应 | 因情况而异 | 仅凭状态无法判断作业是被接受、保留还是释放。 | 保留相同的键和请求。使用有界重试策略;不保证能够恢复。 | - -冲突会比较多方法:方法、模型路径、查询参数和请求体。在出现超大响应、响应写入失败或存在无法安全重放的资源后,键可能变为不可重放。等待不会恢复已消费的结果。新键会启动一次新的调用,而不会检索旧输出。 - -提供商调度前发生的拒绝会释放该键。已调度的调用可能保留提供商句柄,也可能变为不可重放。不要仅根据状态码推断键的状态或计费情况。 - -不要仅仅因为调用超时或连接断开就创建全新的键。如果 Router 已经接受了生成,新键可能会创建第二个逻辑运行,从而产生第二个计费结果。在确认原始调用无法恢复之前,请重复使用同一个键。 - -#### 超时与收集 - -默认情况下,一次 Router 调用可能占用连接 10 分钟。请将客户端超时设置得高于该上限,以便您收到明确的 `504` 和请求 ID,而不是一个不透明的本地中止。 - -`deadline_exceeded` 是 Router 的等待限制;`provider_timeout` 是提供商的截止时间。提供商的生成如果完成,即使调用方收到了超时或已断开连接,也可能会被计费。客户端取消会停止等待和 SDK 重试,但不一定会取消已被接受的提供商作业。 - -对于提交并轮询的提供商,保留的句柄允许同一键的请求继续收集原始生成结果。已调度的调用若缺少可恢复句柄而被中断,可能消耗该键却没有可重放的结果;随后使用同一键重试会返回 `409`。对于归因于提供商的瞬时故障,如果没有捕获成功,仍可能释放该键以进行另一次尝试。单凭句柄缺失并不能判断实际会发生哪种结果。 - -SDK 会在有限预算内重试某些错误。一旦它们返回错误,请保留请求和键,而不是生成新的。对于原始 HTTP,以下示例仅重试两种明确的收集提示: - -```python -import os -import time - -import httpx - - -def collect(model, arguments, key, attempts=3): - with httpx.Client(timeout=httpx.Timeout(660.0, connect=10.0)) as client: - for attempt in range(attempts): - response = client.post( - f"https://api.comfy.org/v2/models/{model}", - headers={"X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": key}, - json=arguments, - ) - if response.is_success: - return response.json() - - category = response.headers.get("X-Comfy-Error-Type") - collecting = (response.status_code, category) in { - (409, "concurrency_limit_exceeded"), - (504, "deadline_exceeded"), - } - delay = response.headers.get("Retry-After", "") - if not collecting or not delay.isdigit() or attempt == attempts - 1: - response.raise_for_status() - time.sleep(int(delay)) - raise ValueError("attempts must be positive") -``` - -传入原始模型、请求体和已保存的键。这限制的是尝试次数,而非总挂钟时间:每次调用可持续至客户端超时,每次等待都遵循 `Retry-After`。HTTP 错误会保留响应以供检查;传输错误会向上传播,而不会替换键。如果您的应用需要更长的恢复窗口,请使用已保存的键安排稍后收集。 - -### 模型计费事实 - -`GET /v2/models` 和模型详情响应中包含 `billing.charges_on_policy_rejection`。它描述的是策略拒绝,而非每次失败或价格估算。 - -| 值 | 含义 | -| --- | --- | -| `yes` | 策略拒绝会被计费。 | -| `no` | 策略拒绝不会被计费。 | -| `unknown` | 还没有人确定此行为。请将其视为可能已计费。 | - -请显式比较这些字符串:在 Python 和 JavaScript 中,`"no"` 为真值(truthy)。请将所有无法识别的值都视为 `unknown`。因积分不足而被拒绝的请求会报告 `insufficient_credits`。 - -提供商(provider)的有效载荷可能包含其自身的成本或用量数字;这些并非 Comfy 的收费。`X-Comfy-Credits-Used` 可能会出现在允许列表内提供商的响应中,但并非普遍存在,也不会被重放。请使用[工作区用量和账单](https://platform.comfy.org)进行核对。在调查某项收费时,请保留请求 ID。 - -## 各模型示例 - -- Google Gemini -- Nano Banana 2 -- Nano Banana 2 Lite -- Nano Banana Pro -- FLUX 1.1 Pro Ultra -- FLUX Kontext -- FLUX Video Upscale -- FLUX 3 Video -- Ideogram 4 - -## 下一步 - -- [快速入门](/zh/development/comfy-router/quickstart):安装、调用和保存图像。 -- [API 参考](/zh/development/comfy-router/reference):端点参数、数据模式与响应代码。 +{/* 已生成文件。由 `pnpm code-pages:gen` 从 Router 目录生成。 */} + +以下每个模型都由同一条路由提供服务:`POST /v2/models/{provider}/{model}`,并使用该模型自身的 JSON 请求体。每个页面都会展示在 Python、TypeScript 和 cURL 中可用的请求示例。关于模型发现、模式、错误、重试和计费,请参阅[使用 Comfy Router API](/zh/development/comfy-router/api)。 + +## Anthropic + +- [Claude Fable 5.1](/zh/development/comfy-router/models/anthropic/claude-fable-5-1/code):`anthropic/claude-fable-5-1` +- [Claude Fable 5](/zh/development/comfy-router/models/anthropic/claude-fable-5/code):`anthropic/claude-fable-5` +- [Claude Haiku 4.5 20251001](/zh/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code):`anthropic/claude-haiku-4-5-20251001` +- [Claude Opus 4.6](/zh/development/comfy-router/models/anthropic/claude-opus-4-6/code):`anthropic/claude-opus-4-6` +- [Claude Opus 4.7](/zh/development/comfy-router/models/anthropic/claude-opus-4-7/code):`anthropic/claude-opus-4-7` +- [Claude Opus 4.8](/zh/development/comfy-router/models/anthropic/claude-opus-4-8/code):`anthropic/claude-opus-4-8` +- [Claude Opus 5](/zh/development/comfy-router/models/anthropic/claude-opus-5/code):`anthropic/claude-opus-5` +- [Claude Sonnet 4.5 20250929](/zh/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code):`anthropic/claude-sonnet-4-5-20250929` +- [Claude Sonnet 4.6](/zh/development/comfy-router/models/anthropic/claude-sonnet-4-6/code):`anthropic/claude-sonnet-4-6` +- [Claude Sonnet 5](/zh/development/comfy-router/models/anthropic/claude-sonnet-5/code):`anthropic/claude-sonnet-5` + +## Beeble + +- [SwitchX](/zh/development/comfy-router/models/beeble/switchx/code):`beeble/switchx` + +## Black Forest Labs + +- [Erase V1](/zh/development/comfy-router/models/black-forest-labs/erase-v1/code):`bfl/erase-v1` +- [Flux 1.1 Pro Ultra Image](/zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code):`bfl/flux-pro-1.1-ultra` +- [FLUX.1 Kontext](/zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code):`bfl/flux-kontext-pro` +- [FLUX 2 Max](/zh/development/comfy-router/models/black-forest-labs/flux-2-max/code):`bfl/flux-2-max` +- [FLUX 2 Pro](/zh/development/comfy-router/models/black-forest-labs/flux-2-pro/code):`bfl/flux-2-pro` +- [FLUX 3 Video](/zh/development/comfy-router/models/black-forest-labs/flux-3-video/code):`bfl/flux-3-video` +- [FLUX Pro 1.0 Canny](/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code):`bfl/flux-pro-1.0-canny` +- [FLUX Pro 1.0 Depth](/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code):`bfl/flux-pro-1.0-depth` +- [FLUX Pro 1.0 Expand](/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code):`bfl/flux-pro-1.0-expand` +- [FLUX Pro 1.0 Fill](/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code):`bfl/flux-pro-1.0-fill` +- [FLUX Video Upscale](/zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code):`bfl/video-upscale-v1` +- [Video Edit V1](/zh/development/comfy-router/models/black-forest-labs/video-edit-v1/code):`bfl/video-edit-v1` +- [VTO V1](/zh/development/comfy-router/models/black-forest-labs/vto-v1/code):`bfl/vto-v1` + +## Bria + +- [Fibo](/zh/development/comfy-router/models/bria/fibo/code):`bria/fibo` +- [图像编辑擦除](/zh/development/comfy-router/models/bria/image-edit-erase/code):`bria/image-edit-erase` +- [图像编辑展开](/zh/development/comfy-router/models/bria/image-edit-expand/code):`bria/image-edit-expand` +- [图像编辑生成填充](/zh/development/comfy-router/models/bria/image-edit-gen-fill/code):`bria/image-edit-gen-fill` +- [图像编辑提升分辨率](/zh/development/comfy-router/models/bria/image-edit-increase-resolution/code):`bria/image-edit-increase-resolution` +- [图像编辑移除背景](/zh/development/comfy-router/models/bria/image-edit-remove-background/code):`bria/image-edit-remove-background` +- [结构化指令](/zh/development/comfy-router/models/bria/structured-instruction/code):`bria/structured-instruction` +- [视频编辑绿幕](/zh/development/comfy-router/models/bria/video-edit-green-screen/code):`bria/video-edit-green-screen` +- [视频编辑移除背景](/zh/development/comfy-router/models/bria/video-edit-remove-background/code):`bria/video-edit-remove-background` +- [视频编辑替换背景](/zh/development/comfy-router/models/bria/video-edit-replace-background/code):`bria/video-edit-replace-background` + +## BytePlus + +- [Dreamina Seedance 2.0 260128](/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code):`byteplus/dreamina-seedance-2-0-260128` +- [Dreamina Seedance 2.0 Fast 260128](/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code):`byteplus/dreamina-seedance-2-0-fast-260128` +- [Dreamina Seedance 2.0 Mini](/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code):`byteplus/dreamina-seedance-2-0-mini` +- [Dreamina Seedance 2.5 260628](/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code):`byteplus/dreamina-seedance-2-5-260628` +- [Seed 2.0 Lite 260228](/zh/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code):`byteplus/seed-2-0-lite-260228` +- [Seed 2.0 Mini 260215](/zh/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code):`byteplus/seed-2-0-mini-260215` +- [Seed 2.0 Pro 260328](/zh/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code):`byteplus/seed-2-0-pro-260328` +- [Seed Audio 1.0 Multilingual](/zh/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code):`byteplus/seed-audio-1.0-multilingual` +- [Seed Audio 1.0](/zh/development/comfy-router/models/byteplus/seed-audio-1-0/code):`byteplus/seed-audio-1.0` +- [Seedance 1.0 Lite I2V 250428](/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code):`byteplus/seedance-1-0-lite-i2v-250428` +- [Seedance 1.0 Lite T2V 250428](/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code):`byteplus/seedance-1-0-lite-t2v-250428` +- [Seedance 1.0 Pro 250528](/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code):`byteplus/seedance-1-0-pro-250528` +- [Seedance 1.0 Pro Fast 251015](/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code):`byteplus/seedance-1-0-pro-fast-251015` +- [Seedance 1.5 Pro 251215](/zh/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code):`byteplus/seedance-1-5-pro-251215` +- [Seededit 3.0 I2I 250628](/zh/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code):`byteplus/seededit-3-0-i2i-250628` +- [Seedream 3.0 T2I 250415](/zh/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code):`byteplus/seedream-3-0-t2i-250415` +- [Seedream 4.0 250828](/zh/development/comfy-router/models/byteplus/seedream-4-0-250828/code):`byteplus/seedream-4-0-250828` +- [Seedream 4.5 251128](/zh/development/comfy-router/models/byteplus/seedream-4-5-251128/code):`byteplus/seedream-4-5-251128` +- [Seedream 5.0 260128](/zh/development/comfy-router/models/byteplus/seedream-5-0-260128/code):`byteplus/seedream-5-0-260128` +- [Seedream 5.0 Pro 260628](/zh/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code):`byteplus/seedream-5-0-pro-260628` + +## Elevenlabs + +- [Eleven Sfx V2](/zh/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code):`elevenlabs/eleven_sfx_v2` +- [Eleven V3](/zh/development/comfy-router/models/elevenlabs/eleven-v3/code):`elevenlabs/eleven_v3` + +## fal + +- [H3 Max Turbo](/zh/development/comfy-router/models/fal/h3-max-turbo/code):`fal/h3-max-turbo` +- [H3 Max](/zh/development/comfy-router/models/fal/h3-max/code):`fal/h3-max` +- [Patina](/zh/development/comfy-router/models/fal/patina/code):`fal/patina` + +## Freepik + +- [AI Image Upscaler Precision V2](/zh/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code): `freepik/ai-image-upscaler-precision-v2` +- [AI Skin Enhancer Creative](/zh/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code): `freepik/ai-skin-enhancer-creative` +- [AI Skin Enhancer Faithful](/zh/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code): `freepik/ai-skin-enhancer-faithful` +- [AI Skin Enhancer Flexible](/zh/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code): `freepik/ai-skin-enhancer-flexible` + +## Gemini 交互 + +- [Gemini Omni 1.1 Flash](/zh/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code): `gemini-interactions/gemini-omni-1.1-flash` +- [Gemini Omni Flash Preview](/zh/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code): `gemini-interactions/gemini-omni-flash-preview` + +## Google + +- [Gemini 2.5 Flash Image](/zh/development/comfy-router/models/google/gemini-2-5-flash-image/code):`vertexai/gemini-2.5-flash-image` +- [Gemini 3.1 Flash Lite](/zh/development/comfy-router/models/google/gemini-3-1-flash-lite/code):`vertexai/gemini-3.1-flash-lite` +- [Gemini 3.7 Flash](/zh/development/comfy-router/models/google/gemini-3-7-flash/code):`vertexai/gemini-3.7-flash` +- [Gemini 3.8 Flash](/zh/development/comfy-router/models/google/gemini-3-8-flash/code):`vertexai/gemini-3.8-flash` +- [Google Gemini](/zh/development/comfy-router/models/google/gemini/code):`vertexai/gemini-3.1-pro-preview` +- [Imagen 3.0 Fast Generate 001](/zh/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code):`vertexai/imagen-3.0-fast-generate-001` +- [Imagen 3.0 Generate 001](/zh/development/comfy-router/models/google/imagen-3-0-generate-001/code):`vertexai/imagen-3.0-generate-001` +- [Imagen 3.0 Generate 002](/zh/development/comfy-router/models/google/imagen-3-0-generate-002/code):`vertexai/imagen-3.0-generate-002` +- [Nano Banana 2 Lite](/zh/development/comfy-router/models/google/nano-banana-2-lite/code):`vertexai/gemini-3.1-flash-lite-image` +- [Nano Banana 2](/zh/development/comfy-router/models/google/nano-banana-2/code):`vertexai/gemini-3.1-flash-image` +- [Nano Banana Pro](/zh/development/comfy-router/models/google/nano-banana-pro/code):`vertexai/gemini-3-pro-image` + +## HeyGen + +- [Starfish](/zh/development/comfy-router/models/heygen/starfish/code):`heygen/starfish` + +## Ideogram + +- [Ideogram V3](/zh/development/comfy-router/models/ideogram/ideogram-v3/code):`ideogram/ideogram-v3` +- [Ideogram 4.0](/zh/development/comfy-router/models/ideogram/ideogram-v4/code):`ideogram/ideogram-v4` +- [P Image Ideogram](/zh/development/comfy-router/models/ideogram/p-image-ideogram/code):`ideogram/p-image-ideogram` + +## Kling + +- [Kling 3.0 Turbo](/zh/development/comfy-router/models/kling/kling-3-0-turbo/code): `kling/kling-3.0-turbo` +- [Kling Image O1](/zh/development/comfy-router/models/kling/kling-image-o1/code): `kling/kling-image-o1` +- [Kling V1.5](/zh/development/comfy-router/models/kling/kling-v1-5/code): `kling/kling-v1-5` +- [Kling V1.6](/zh/development/comfy-router/models/kling/kling-v1-6/code): `kling/kling-v1-6` +- [Kling V1](/zh/development/comfy-router/models/kling/kling-v1/code): `kling/kling-v1` +- [Kling V2.1 Master](/zh/development/comfy-router/models/kling/kling-v2-1-master/code): `kling/kling-v2-1-master` +- [Kling V2.1](/zh/development/comfy-router/models/kling/kling-v2-1/code): `kling/kling-v2-1` +- [Kling V2.5 Turbo](/zh/development/comfy-router/models/kling/kling-v2-5-turbo/code): `kling/kling-v2-5-turbo` +- [Kling V2.6](/zh/development/comfy-router/models/kling/kling-v2-6/code): `kling/kling-v2-6` +- [Kling V2 Master](/zh/development/comfy-router/models/kling/kling-v2-master/code): `kling/kling-v2-master` +- [Kling V3 Omni](/zh/development/comfy-router/models/kling/kling-v3-omni/code): `kling/kling-v3-omni` +- [Kling V3](/zh/development/comfy-router/models/kling/kling-v3/code): `kling/kling-v3` +- [Kling Video O1](/zh/development/comfy-router/models/kling/kling-video-o1/code): `kling/kling-video-o1` +- [Videos Avatar Image 2video](/zh/development/comfy-router/models/kling/videos-avatar-image2video/code): `kling/videos-avatar-image2video` +- [Videos Lip Sync](/zh/development/comfy-router/models/kling/videos-lip-sync/code): `kling/videos-lip-sync` +- [Videos Video Extend](/zh/development/comfy-router/models/kling/videos-video-extend/code): `kling/videos-video-extend` + +## Krea + +- [Krea 2 Large](/zh/development/comfy-router/models/krea/krea-2-large/code):`krea/krea-2-large` +- [Krea 2 Medium Turbo](/zh/development/comfy-router/models/krea/krea-2-medium-turbo/code):`krea/krea-2-medium-turbo` +- [Krea 2 Medium](/zh/development/comfy-router/models/krea/krea-2-medium/code):`krea/krea-2-medium` +- [Krea 2](/zh/development/comfy-router/models/krea/krea-2/code):`krea/krea-2` + +## LTX + +- [LTX 2.5 Fast](/zh/development/comfy-router/models/ltx/ltx-2-5-fast/code):`ltx/ltx-2-5-fast` +- [LTX 2.5 Pro](/zh/development/comfy-router/models/ltx/ltx-2-5-pro/code):`ltx/ltx-2-5-pro` + +## Luma + +- [Photon 1](/zh/development/comfy-router/models/luma/photon-1/code): `luma/photon-1` +- [Photon Flash 1](/zh/development/comfy-router/models/luma/photon-flash-1/code): `luma/photon-flash-1` +- [Ray 2](/zh/development/comfy-router/models/luma/ray-2/code): `luma/ray-2` +- [Ray Flash 2](/zh/development/comfy-router/models/luma/ray-flash-2/code): `luma/ray-flash-2` + +## Luma 2 + +- [Uni 1 Max](/zh/development/comfy-router/models/luma_2/uni-1-max/code): `luma_2/uni-1-max` +- [Uni 1](/zh/development/comfy-router/models/luma_2/uni-1/code): `luma_2/uni-1` + +## Meshy + +- [动画](/zh/development/comfy-router/models/meshy/animations/code):`meshy/animations` +- [Meshy 5](/zh/development/comfy-router/models/meshy/meshy-5/code):`meshy/meshy-5` +- [Meshy 6](/zh/development/comfy-router/models/meshy/meshy-6/code):`meshy/meshy-6` +- [Meshy 7](/zh/development/comfy-router/models/meshy/meshy-7/code):`meshy/meshy-7` +- [重网格](/zh/development/comfy-router/models/meshy/remesh/code):`meshy/remesh` +- [骨骼绑定](/zh/development/comfy-router/models/meshy/rigging/code):`meshy/rigging` + +## MiniMax + +- [MiniMax H3](/zh/development/comfy-router/models/minimax/minimax-h3/code):`minimax/minimax-h3` + +## Moonvalley + +- [图生视频](/zh/development/comfy-router/models/moonvalley/image-to-video/code):`moonvalley/image-to-video` +- [文生图](/zh/development/comfy-router/models/moonvalley/text-to-image/code):`moonvalley/text-to-image` +- [文生视频](/zh/development/comfy-router/models/moonvalley/text-to-video/code):`moonvalley/text-to-video` +- [视频转视频调整大小](/zh/development/comfy-router/models/moonvalley/video-to-video-resize/code):`moonvalley/video-to-video-resize` +- [视频转视频](/zh/development/comfy-router/models/moonvalley/video-to-video/code):`moonvalley/video-to-video` + +## OpenAI + +- [GPT 4.1 Mini](/zh/development/comfy-router/models/openai/gpt-4-1-mini/code):`openai/gpt-4.1-mini` +- [GPT 4.1 Nano](/zh/development/comfy-router/models/openai/gpt-4-1-nano/code):`openai/gpt-4.1-nano` +- [GPT 4.1](/zh/development/comfy-router/models/openai/gpt-4-1/code):`openai/gpt-4.1` +- [GPT 4o](/zh/development/comfy-router/models/openai/gpt-4o/code):`openai/gpt-4o` +- [GPT 5.5 Pro](/zh/development/comfy-router/models/openai/gpt-5-5-pro/code):`openai/gpt-5.5-pro` +- [GPT 5.5](/zh/development/comfy-router/models/openai/gpt-5-5/code):`openai/gpt-5.5` +- [GPT 5.6 Luna](/zh/development/comfy-router/models/openai/gpt-5-6-luna/code):`openai/gpt-5.6-luna` +- [GPT 5.6 Sol](/zh/development/comfy-router/models/openai/gpt-5-6-sol/code):`openai/gpt-5.6-sol` +- [GPT 5.6 Terra](/zh/development/comfy-router/models/openai/gpt-5-6-terra/code):`openai/gpt-5.6-terra` +- [GPT 5 Mini](/zh/development/comfy-router/models/openai/gpt-5-mini/code):`openai/gpt-5-mini` +- [GPT 5 Nano](/zh/development/comfy-router/models/openai/gpt-5-nano/code):`openai/gpt-5-nano` +- [GPT 5](/zh/development/comfy-router/models/openai/gpt-5/code):`openai/gpt-5` +- [GPT 6 Astra](/zh/development/comfy-router/models/openai/gpt-6-astra/code):`openai/gpt-6-astra` +- [GPT Image 1.5](/zh/development/comfy-router/models/openai/gpt-image-1-5/code):`openai/gpt-image-1.5` +- [GPT Image 1](/zh/development/comfy-router/models/openai/gpt-image-1/code):`openai/gpt-image-1` +- [GPT Image 2.5 Flare](/zh/development/comfy-router/models/openai/gpt-image-2-5-flare/code):`openai/gpt-image-2.5-flare` +- [GPT Image 2.5 Sunburst](/zh/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code):`openai/gpt-image-2.5-sunburst` +- [GPT Image 2](/zh/development/comfy-router/models/openai/gpt-image-2/code):`openai/gpt-image-2` +- [o1-pro](/zh/development/comfy-router/models/openai/o1-pro/code):`openai/o1-pro` +- [o1](/zh/development/comfy-router/models/openai/o1/code):`openai/o1` +- [o3](/zh/development/comfy-router/models/openai/o3/code):`openai/o3` +- [o4-mini](/zh/development/comfy-router/models/openai/o4-mini/code):`openai/o4-mini` + +## Pruna + +- [P Video 2](/zh/development/comfy-router/models/pruna/p-video-2/code):`pruna/p-video-2` + +## Qwen + +- [Qwen Image 3.0 Pro](/zh/development/comfy-router/models/qwen/qwen-image-3-0-pro/code):`qwen/qwen-image-3.0-pro` +- [Qwen Image 3.0](/zh/development/comfy-router/models/qwen/qwen-image-3-0/code):`qwen/qwen-image-3.0` + +## Recraft + +- [Recraft V2](/zh/development/comfy-router/models/recraft/recraftv2/code):`recraft/recraftv2` +- [Recraft V3](/zh/development/comfy-router/models/recraft/recraftv3/code):`recraft/recraftv3` +- [Recraft V4.1 Pro Vector](/zh/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code):`recraft/recraftv4_1_pro_vector` +- [Recraft V4.1 Pro](/zh/development/comfy-router/models/recraft/recraftv4-1-pro/code):`recraft/recraftv4_1_pro` +- [Recraft V4.1 Utility Pro Vector](/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code):`recraft/recraftv4_1_utility_pro_vector` +- [Recraft V4.1 Utility Pro](/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code):`recraft/recraftv4_1_utility_pro` +- [Recraft V4.1 Utility Vector](/zh/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code):`recraft/recraftv4_1_utility_vector` +- [Recraft V4.1 Utility](/zh/development/comfy-router/models/recraft/recraftv4-1-utility/code):`recraft/recraftv4_1_utility` +- [Recraft V4.1 Vector](/zh/development/comfy-router/models/recraft/recraftv4-1-vector/code):`recraft/recraftv4_1_vector` +- [Recraft V4.1](/zh/development/comfy-router/models/recraft/recraftv4-1/code):`recraft/recraftv4_1` +- [Recraft V4 Pro](/zh/development/comfy-router/models/recraft/recraftv4-pro/code):`recraft/recraftv4_pro` +- [Recraft V4 Styles Pro Vector](/zh/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code):`recraft/recraftv4_styles_pro_vector` +- [Recraft V4 Styles Pro](/zh/development/comfy-router/models/recraft/recraftv4-styles-pro/code):`recraft/recraftv4_styles_pro` +- [Recraft V4 Styles Vector](/zh/development/comfy-router/models/recraft/recraftv4-styles-vector/code):`recraft/recraftv4_styles_vector` +- [Recraft V4 Styles](/zh/development/comfy-router/models/recraft/recraftv4-styles/code):`recraft/recraftv4_styles` +- [Recraft V4](/zh/development/comfy-router/models/recraft/recraftv4/code):`recraft/recraftv4` + +## Runway + +- [Aleph 2](/zh/development/comfy-router/models/runway/aleph2/code):`runway/aleph2` +- [Gen 4 Image](/zh/development/comfy-router/models/runway/gen4-image/code):`runway/gen4_image` +- [Gen 4 Turbo](/zh/development/comfy-router/models/runway/gen4-turbo/code):`runway/gen4_turbo` + +## 腾讯 + +- [混元3D 部件](/zh/development/comfy-router/models/tencent/hunyuan-3d-part/code):`tencent/hunyuan-3d-part` +- [混元3D 智能拓扑](/zh/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code):`tencent/hunyuan-3d-smart-topology` +- [混元3D 纹理编辑](/zh/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code):`tencent/hunyuan-3d-texture-edit` +- [混元3D UV](/zh/development/comfy-router/models/tencent/hunyuan-3d-uv/code):`tencent/hunyuan-3d-uv` + +## Veo + +- [Veo 2.0 Generate 001](/zh/development/comfy-router/models/veo/veo-2-0-generate-001/code): `veo/veo-2.0-generate-001` +- [Veo 3.0 Fast Generate 001](/zh/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code): `veo/veo-3.0-fast-generate-001` +- [Veo 3.0 Generate 001](/zh/development/comfy-router/models/veo/veo-3-0-generate-001/code): `veo/veo-3.0-generate-001` +- [Veo 3.1 Fast Generate 001](/zh/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code): `veo/veo-3.1-fast-generate-001` +- [Veo 3.1 Generate 001](/zh/development/comfy-router/models/veo/veo-3-1-generate-001/code): `veo/veo-3.1-generate-001` +- [Veo 3.1 Lite Generate 001](/zh/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code): `veo/veo-3.1-lite-generate-001` + +## Wan万相 + +- [HappyHorse 1.0 I2V](/zh/development/comfy-router/models/wan/happyhorse-1-0-i2v/code):`wan/happyhorse-1.0-i2v` +- [HappyHorse 1.0 R2V](/zh/development/comfy-router/models/wan/happyhorse-1-0-r2v/code):`wan/happyhorse-1.0-r2v` +- [HappyHorse 1.0 T2V](/zh/development/comfy-router/models/wan/happyhorse-1-0-t2v/code):`wan/happyhorse-1.0-t2v` +- [HappyHorse 1.0 视频编辑](/zh/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code):`wan/happyhorse-1.0-video-edit` +- [HappyHorse 1.1 I2V](/zh/development/comfy-router/models/wan/happyhorse-1-1-i2v/code):`wan/happyhorse-1.1-i2v` +- [HappyHorse 1.1 R2V](/zh/development/comfy-router/models/wan/happyhorse-1-1-r2v/code):`wan/happyhorse-1.1-r2v` +- [HappyHorse 1.1 T2V](/zh/development/comfy-router/models/wan/happyhorse-1-1-t2v/code):`wan/happyhorse-1.1-t2v` +- [Wan 2.5 I2I 预览](/zh/development/comfy-router/models/wan/wan2-5-i2i-preview/code):`wan/wan2.5-i2i-preview` +- [Wan 2.5 I2V 预览](/zh/development/comfy-router/models/wan/wan2-5-i2v-preview/code):`wan/wan2.5-i2v-preview` +- [Wan 2.5 T2I 预览](/zh/development/comfy-router/models/wan/wan2-5-t2i-preview/code):`wan/wan2.5-t2i-preview` +- [Wan 2.5 T2V 预览](/zh/development/comfy-router/models/wan/wan2-5-t2v-preview/code):`wan/wan2.5-t2v-preview` +- [Wan 2.6 I2V](/zh/development/comfy-router/models/wan/wan2-6-i2v/code):`wan/wan2.6-i2v` +- [Wan 2.6 R2V](/zh/development/comfy-router/models/wan/wan2-6-r2v/code):`wan/wan2.6-r2v` +- [Wan 2.6 T2V](/zh/development/comfy-router/models/wan/wan2-6-t2v/code):`wan/wan2.6-t2v` +- [Wan 2.7 I2V](/zh/development/comfy-router/models/wan/wan2-7-i2v/code):`wan/wan2.7-i2v` +- [Wan 2.7 R2V](/zh/development/comfy-router/models/wan/wan2-7-r2v/code):`wan/wan2.7-r2v` +- [Wan 2.7 T2V](/zh/development/comfy-router/models/wan/wan2-7-t2v/code):`wan/wan2.7-t2v` +- [Wan 2.7 视频编辑](/zh/development/comfy-router/models/wan/wan2-7-videoedit/code):`wan/wan2.7-videoedit` +- [Wan 3.0 视频 Prime](/zh/development/comfy-router/models/wan/wan3-0-video-prime/code):`wan/wan3.0-video-prime` +- [Wan 3.0 视频](/zh/development/comfy-router/models/wan/wan3-0-video/code):`wan/wan3.0-video` + +## WaveSpeed + +- [Flashvsr](/zh/development/comfy-router/models/wavespeed/flashvsr/code): `wavespeed/flashvsr` +- [Seedvr 2](/zh/development/comfy-router/models/wavespeed/seedvr2/code): `wavespeed/seedvr2` +- [Ultimate Image Upscaler](/zh/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code): `wavespeed/ultimate-image-upscaler` + +## xAI + +- [Grok Imagine 图像 2.0](/zh/development/comfy-router/models/xai/grok-imagine-image-2-0/code):`xai/grok-imagine-image-2.0` +- [Grok Imagine 图像 Pro](/zh/development/comfy-router/models/xai/grok-imagine-image-pro/code):`xai/grok-imagine-image-pro` +- [Grok Imagine 图像 Quality](/zh/development/comfy-router/models/xai/grok-imagine-image-quality/code):`xai/grok-imagine-image-quality` +- [Grok Imagine 图像](/zh/development/comfy-router/models/xai/grok-imagine-image/code):`xai/grok-imagine-image` +- [Grok Imagine 视频 1.5 预览](/zh/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code):`xai/grok-imagine-video-1.5-preview` +- [Grok Imagine 视频 1.5](/zh/development/comfy-router/models/xai/grok-imagine-video-1-5/code):`xai/grok-imagine-video-1.5` +- [Grok Imagine 视频](/zh/development/comfy-router/models/xai/grok-imagine-video/code):`xai/grok-imagine-video` diff --git a/zh/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx b/zh/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx new file mode 100644 index 000000000..3ca743085 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Fable 5.1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-fable-5-1:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Fable 5.1" +translationSourceHash: d7cdabe9 +translationFrom: development/comfy-router/models/anthropic/claude-fable-5-1/code.mdx +translationBlockHashes: + "_intro": ee6f1125 + "Quick start": f53af83a + "Schema": d2c6492b + "Examples": e6e3e477 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-fable-5-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5-1` 的 API 参考文档,由 Comfy Router 从 Anthropic 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `anthropic/claude-fable-5-1` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5-1", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5-1", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 停止之前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result……)。 + + + + 可能的值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 当该值为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 正文。 + + + + 顶层的 system 提示词。可以是字符串,也可以是内容块数组;两者都会原样传递给 Anthropic。 + + +该文档由 Router 在 `GET /v2/models/anthropic/claude-fable-5-1/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,就是用同一份文档来校验调用的。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中缓存写入输入 token 的按 TTL 细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含该字段;当该轮次没有产生任何内容时为空。 + + + + 该块的文本。仅在 `text` 块中存在,其他类型的块中不存在。 + + + + 块的类型。`text` 是携带 `text` 字段的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5-1", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-fable-5/code.mdx b/zh/development/comfy-router/models/anthropic/claude-fable-5/code.mdx new file mode 100644 index 000000000..138eef7de --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-fable-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Fable 5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-fable-5:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "Claude Fable 5" +translationSourceHash: 42f440ed +translationFrom: development/comfy-router/models/anthropic/claude-fable-5/code.mdx +translationBlockHashes: + "_intro": 71874613 + "Quick start": d43983c6 + "Schema": 15962b1f + "Examples": d4496b58 +--- +{/* GENERATED FILE. 由 `pnpm code-pages:gen` 从 router-schemas/anthropic/claude-fable-5.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-fable-5` 的 API 参考,由 Comfy Router 从 Anthropic 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `anthropic/claude-fable-5` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-fable-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-fable-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-fable-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-fable-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 数据结构 {#schema} + +### 输入 + + + 停止前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写形式,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层 system 提示词。可以是字符串或内容块数组;两者都会原样到达 Anthropic。 + + +根据 Router 在 `GET /v2/models/anthropic/claude-fable-5/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中缓存写入输入 token 的按 TTL 细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含该字段;当该轮次未产生任何内容时为空。 + + + + 该块的文本。仅在 `text` 块中存在,其他类型均不包含。 + + + + 块的类型。`text` 是携带 `text` 的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各类工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-fable-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx b/zh/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx new file mode 100644 index 000000000..b8ea83185 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Haiku 4.5 20251001 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-haiku-4-5-20251001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Haiku 4.5 20251001" +translationSourceHash: a6c93c8c +translationFrom: development/comfy-router/models/anthropic/claude-haiku-4-5-20251001/code.mdx +translationBlockHashes: + "_intro": ade4fe09 + "Quick start": f5f98099 + "Schema": 9679eecf + "Examples": 18cca7af +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/anthropic/claude-haiku-4-5-20251001.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-haiku-4-5-20251001` 的 API 参考,该模型由 Comfy Router 提供,源自 Anthropic。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `anthropic/claude-haiku-4-5-20251001` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-haiku-4-5-20251001", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-haiku-4-5-20251001", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-haiku-4-5-20251001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 停止之前可生成的最大 token 数量。 + + + + 对话轮次。关于完整的内容块分类体系,请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result、……)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 当设置为 `true` 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 主体。 + + + + 顶层系统提示词。可以是字符串,也可以是内容块数组;两者都会原样传递给 Anthropic。 + + +由 Router 在 `GET /v2/models/anthropic/claude-haiku-4-5-20251001/openapi.json` 处提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 使用量。 + + + + Anthropic Messages API 调用中缓存写入输入 token 按 TTL 的细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每个已完成的消息都会包含该字段;当该轮没有产生任何内容时为空。 + + + + 该块的文本。仅出现在 `text` 块中,其他类型的块则没有。 + + + + 块类型。`text` 是携带 `text` 字段的那一种;Anthropic 目前发送的其他类型还包括 `thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各类工具结果块,并且这个列表是开放式的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-haiku-4-5-20251001", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx b/zh/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx new file mode 100644 index 000000000..e84b29077 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Opus 4.6 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-opus-4-6:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Opus 4.6" +translationSourceHash: 2b59f7c6 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-6/code.mdx +translationBlockHashes: + "_intro": 0919bc94 + "Quick start": 7479d7ac + "Schema": d3b6797e + "Examples": 2cc5500c +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-opus-4-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-6` 的 API 参考,由 Comfy Router 从 Anthropic 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `anthropic/claude-opus-4-6` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### Input + + + 在停止之前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写形式,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应不再是单个 JSON 正文,而是由 Anthropic 消息事件组成的 `text/event-stream`。 + + + + 顶层 system 提示词。可以是字符串,也可以是内容块数组;两者都会原样传给 Anthropic。 + + +由 Router 在 `GET /v2/models/anthropic/claude-opus-4-6/openapi.json` 提供的 schema 生成,请求到达提供商之前,Router 正是用这同一份文档来校验调用。 + +### Output + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中缓存写入输入 token 按 TTL 的细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含此项;该轮没有任何产出时为空。 + + + + 该块的文本。仅出现在 `text` 块中,其他所有类型都不包含。 + + + + 块类型。`text` 是携带 `text` 的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各类工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx b/zh/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx new file mode 100644 index 000000000..08e688542 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx @@ -0,0 +1,220 @@ +--- +title: "将 Claude Opus 4.7 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-opus-4-7:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Opus 4.7" +translationSourceHash: a2c2394b +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-7/code.mdx +translationBlockHashes: + "_intro": adedb853 + "Quick start": fab41f76 + "Schema": 69d553ae + "Examples": 8eadda7c +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-opus-4-7.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-7` 的 API 参考,该模型由 Comfy Router 从 Anthropic 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `anthropic/claude-opus-4-7` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-7", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-7", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### Input + + + 在停止之前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类体系请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层系统提示词。可以是字符串,也可以是内容块数组;两者都会原封不动地传给 Anthropic。 + + +本文档根据 Router 在 `GET /v2/models/anthropic/claude-opus-4-7/openapi.json` 提供的 schema 生成,也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### Output + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中缓存写入输入 token 按 TTL 的细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每个已完成的消息都会包含该字段;若该轮次未产生任何内容,则为空。 + + + + 该块的文本。仅出现在 `text` 块中,其他类型的块均不包含此字段。 + + + + 块的类型。`text` 是携带 `text` 字段的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-7", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + diff --git a/zh/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx b/zh/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx new file mode 100644 index 000000000..cf0c1c29d --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx @@ -0,0 +1,221 @@ +--- +title: "配合 Comfy Router 使用 Claude Opus 4.8" +description: "通过 Comfy Router 调用 anthropic/claude-opus-4-8:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Opus 4.8" +translationSourceHash: 73f5bbc2 +translationFrom: development/comfy-router/models/anthropic/claude-opus-4-8/code.mdx +translationBlockHashes: + "_intro": 06eea645 + "Quick start": 4a68e1ef + "Schema": 0519e19d + "Examples": 07251ae9 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/anthropic/claude-opus-4-8.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-4-8` 的 API 参考,由 Comfy Router 从 Anthropic 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `anthropic/claude-opus-4-8` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-4-8` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-4-8", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-4-8", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-4-8 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema {#schema} + +### 输入 + + + 停止前可生成的最大 token 数。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 当为是时,响应是 Anthropic 消息事件的 `text/event-stream`,而非单个 JSON 正文。 + + + + 顶层系统提示词。可以是字符串,也可以是内容块数组;两者都会原样传递给 Anthropic。 + + +基于 Router 在 `GET /v2/models/anthropic/claude-opus-4-8/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用的缓存写入输入 token 按 TTL 的细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含;当该轮次没有产生任何内容时为空。 + + + + 该块的文本。仅在 `text` 块中存在,其他类型均不包含。 + + + + 块的类型。`text` 是携带 `text` 的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各类工具结果块是 Anthropic 目前发送的其他类型,该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-4-8", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-opus-5/code.mdx b/zh/development/comfy-router/models/anthropic/claude-opus-5/code.mdx new file mode 100644 index 000000000..7fa829b08 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-opus-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Opus 5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-opus-5:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Claude Opus 5" +translationSourceHash: 00909559 +translationFrom: development/comfy-router/models/anthropic/claude-opus-5/code.mdx +translationBlockHashes: + "_intro": dd45f124 + "Quick start": 1d505a56 + "Schema": 8006be48 + "Examples": 6926a739 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-opus-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-opus-5` 的 API 参考文档,由 Comfy Router 从 Anthropic 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `anthropic/claude-opus-5` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-opus-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-opus-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-opus-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-opus-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 停止前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层系统提示词。可以是字符串或内容块数组;两者都会原样传递给 Anthropic。 + + +由 Router 在 `GET /v2/models/anthropic/claude-opus-5/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 一次 Anthropic Messages API 调用的 token 用量。 + + + + 一次 Anthropic Messages API 调用中缓存写入输入 token 按 TTL 的细分。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含该字段;当本轮没有产生任何内容时为空。 + + + + 该块的文本。仅出现在 `text` 块上,其他类型的块均没有此字段。 + + + + 块的类型。`text` 是携带 `text` 字段的那个类型;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-opus-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx b/zh/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx new file mode 100644 index 000000000..26aff9e0b --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Sonnet 4.5 20250929 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-sonnet-4-5-20250929:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Claude Sonnet 4.5 20250929" +translationSourceHash: 85681552 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-5-20250929/code.mdx +translationBlockHashes: + "_intro": eb91f6c0 + "Quick start": 4e0bf3e9 + "Schema": c0b4e9c3 + "Examples": 78b06084 +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-sonnet-4-5-20250929.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-4-5-20250929` 的 API 参考,该模型由 Comfy Router 提供,源自 Anthropic。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `anthropic/claude-sonnet-4-5-20250929` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-5-20250929", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-5-20250929", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-5-20250929 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 生成停止之前可生成的最大 token 数量。 + + + + 对话轮次。完整的 content-block 分类体系请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可能的值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为是时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层系统提示词。可以是字符串或内容块数组;两者都会原样传给 Anthropic。 + + +由 Router 在 `GET /v2/models/anthropic/claude-sonnet-4-5-20250929/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中按 TTL 细分的缓存写入输入 token。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每条已完成的消息都会包含该字段;当该轮次没有产生任何内容时为空。 + + + + 该块的文本。仅出现在 `text` 块上,其他任何类型的块都不包含。 + + + + 块的类型。`text` 是携带 `text` 的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各种工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-5-20250929", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx b/zh/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx new file mode 100644 index 000000000..7341f3ff9 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx @@ -0,0 +1,221 @@ +--- +title: "使用 Comfy Router 调用 Claude Sonnet 4.6" +description: "通过 Comfy Router 调用 anthropic/claude-sonnet-4-6:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Claude Sonnet 4.6" +translationSourceHash: 508d46b3 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-4-6/code.mdx +translationBlockHashes: + "_intro": fdc3383a + "Quick start": 91b031a4 + "Schema": 7e4df7aa + "Examples": 7fb5285d +--- +{/* GENERATED FILE. Generated from router-schemas/anthropic/claude-sonnet-4-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-4-6` 的 API 参考,由 Comfy Router 提供,模型来自 Anthropic。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `anthropic/claude-sonnet-4-6` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-4-6", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-4-6", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-4-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 停止前可生成的最大 token 数量。 + + + + 对话轮次。完整的 content block 分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是 content block 数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层系统提示词。可以是字符串,也可以是 content block 数组;两者都会原样传递给 Anthropic。 + + +由 Router 在 `GET /v2/models/anthropic/claude-sonnet-4-6/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档为同一份。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + Anthropic Messages API 调用的 token 用量。 + + + + Anthropic Messages API 调用中,按 TTL 细分的缓存写入输入 token。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的 content block,按顺序排列。每条已完成的消息都会包含该字段;当该轮次未产生任何内容时为空。 + + + + 该 block 的文本。仅在 `text` block 上存在,其他类型均不包含。 + + + + block 类型。`text` 是携带 `text` 的那一种;Anthropic 目前还会发送 `thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及各工具结果 block,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-4-6", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx b/zh/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx new file mode 100644 index 000000000..9eb2c3c97 --- /dev/null +++ b/zh/development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Claude Sonnet 5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 anthropic/claude-sonnet-5:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "Claude Sonnet 5" +translationSourceHash: 65026c35 +translationFrom: development/comfy-router/models/anthropic/claude-sonnet-5/code.mdx +translationBlockHashes: + "_intro": 816f3f43 + "Quick start": 54b3b756 + "Schema": ed894fd9 + "Examples": a3ab5037 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/anthropic/claude-sonnet-5.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`anthropic/claude-sonnet-5` 的 API 参考,由 Comfy Router 提供,来源于 Anthropic。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `anthropic/claude-sonnet-5` + +**端点:** `POST https://api.comfy.org/v2/models/anthropic/claude-sonnet-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "anthropic/claude-sonnet-5", + { + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("anthropic/claude-sonnet-5", { + max_tokens: 16, + messages: [ + { + content: "Reply with the single word: ok", + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/anthropic/claude-sonnet-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"max_tokens\": 16, \"messages\": [{\"content\":\"Reply with the single word: ok\",\"role\":\"user\"}]}" +``` + + +## 架构 + +### 输入 + + + 停止之前可生成的最大 token 数量。 + + + + 对话轮次。完整的内容块分类请参阅 Anthropic Messages API 文档。 + + + + 可以是字符串简写,也可以是内容块数组(text、image、document、tool_use、tool_result 等)。 + + + + 可选值:`user`、`assistant` + + + + Anthropic 模型标识符(例如 `claude-sonnet-4-5`、`claude-opus-4-7`)。 + + + + 为 true 时,响应是 Anthropic 消息事件的 `text/event-stream`,而不是单个 JSON 响应体。 + + + + 顶层系统提示词。可以是字符串或内容块数组;两者都会原样传递到 Anthropic。 + + +本页根据 Router 在 `GET /v2/models/anthropic/claude-sonnet-5/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 一次 Anthropic Messages API 调用的 token 用量。 + + + + 一次 Anthropic Messages API 调用中缓存写入输入 token 的按 TTL 明细。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 回复的内容块,按顺序排列。每个已完成的消息都会包含;当该轮次未产生任何内容时为空。 + + + + 该块的文本。仅出现在 `text` 块中,其他类型均不包含。 + + + + 块的类型。`text` 是携带 `text` 字段的那一种;`thinking`、`redacted_thinking`、`tool_use`、`server_tool_use` 以及工具结果块是 Anthropic 目前发送的其他类型,且该列表是开放的。 + + +## 示例 + +### 输入 + +```json +{ + "max_tokens": 16, + "messages": [ + { + "content": "Reply with the single word: ok", + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "id": "msg_01ExampleInvalidPlaceholder", + "model": "claude-sonnet-5", + "role": "assistant", + "stop_reason": "end_turn", + "stop_sequence": null, + "type": "message", + "usage": { + "input_tokens": 16, + "output_tokens": 3 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/beeble/switchx/code.mdx b/zh/development/comfy-router/models/beeble/switchx/code.mdx new file mode 100644 index 000000000..00015ff35 --- /dev/null +++ b/zh/development/comfy-router/models/beeble/switchx/code.mdx @@ -0,0 +1,225 @@ +--- +title: "将 SwitchX 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 beeble/switchx:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "SwitchX" +translationSourceHash: 71dbe99d +translationFrom: development/comfy-router/models/beeble/switchx/code.mdx +translationBlockHashes: + "_intro": 38f14aeb + "Quick start": 80404da0 + "Schema": ee28c671 + "Examples": 85b68332 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/beeble/switchx.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`beeble/switchx` 的 API 参考,由 Comfy Router 提供,来自 Beeble。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `beeble/switchx` + +**端点:** `POST https://api.comfy.org/v2/models/beeble/switchx` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "beeble/switchx", + { + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("beeble/switchx", { + alpha_mode: "auto", + generation_type: "image", + max_resolution: 720, + prompt: "A cinematic product photo of a glass lamp on a marble table", + source_uri: "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/beeble/switchx \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"alpha_mode\": \"auto\", \"generation_type\": \"image\", \"max_resolution\": 720, \"prompt\": \"A cinematic product photo of a glass lamp on a marble table\", \"source_uri\": \"https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## Schema + +### Input + + + 透明度模式:自动、填充、自定义或选择 + + 可选值:`auto`、`fill`、`custom`、`select` + + + + 自定义透明度蒙版的 URI。当 alpha_mode 为 custom 或 select 时必填。在 auto 或 fill 模式下会被忽略。 + + + + 用于在任务完成或失败时接收 webhook 通知的 HTTPS URL。 + + + + 输出类型:图像或视频 + + 可选值:`image`、`video` + + + + 用于安全重试的幂等键。如果你的账号下已存在使用相同键的任务,API 会返回现有任务的状态,而不会创建重复任务。 + + + + 最大输出分辨率:720 或 1080(默认值:1080)。 + + + + 期望输出的文本描述(最多 2,000 个字符)。prompt 与 reference_image_uri 至少需要提供一个。 + + + + 用于风格迁移的参考图像 URI。接受的 URI 类型与 source_uri 相同。 + + + + 来源图像或视频的 URI。接受 beeble://uploads/\{id}/\{filename}、https URL 或 data:\{mime};base64 URI(最大 50 MB)。 + + +本文档由 Router 在 `GET /v2/models/beeble/switchx/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,正是用这份文档来校验调用。 + +### Output + + + 自动、填充、自定义或选择 + + + + 任务完成或失败时的 ISO 8601 时间戳。 + + + + 任务创建时的 ISO 8601 时间戳。 + + + + 报错信息(status 为 failed 时存在)。 + + + + 图像或视频 + + + + 任务标识符(swx_...) + + + + 最后一次状态变更的 ISO 8601 时间戳。 + + + + SwitchX 任务输出的签名 URL。 + + + + 透明度蒙版 URL。 + + + + 合成后的输出 URL。 + + + + 预处理后的来源 URL。 + + + + 进度百分比(0-100)。 + + + + 当前任务状态。 + + 可选值:`in_queue`、`processing`、`completed`、`failed` + + + + SwitchX 任务的 webhook 投递状态。 + + + + 到目前为止的投递尝试次数。 + + + + 最后一次失败投递尝试的报错信息。 + + + + 待定、已投递或失败 + + +## 示例 + +### 输入 + +```json +{ + "alpha_mode": "auto", + "generation_type": "image", + "max_resolution": 720, + "prompt": "A cinematic product photo of a glass lamp on a marble table", + "source_uri": "https://img.freepik.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 输出 + +```json +{ + "alpha_mode": "auto", + "completed_at": "2027-01-01T00:01:04Z", + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "image", + "id": "swx_1a2b3c4d5e6f7a8b", + "modified_at": "2027-01-01T00:01:04Z", + "output": { + "alpha": "https://example.invalid/beeble/switchx/alpha.png", + "render": "https://example.invalid/beeble/switchx/render.png", + "source": "https://example.invalid/beeble/switchx/source.png" + }, + "progress": 100, + "status": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx b/zh/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx new file mode 100644 index 000000000..98f0665db --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/erase-v1/code.mdx @@ -0,0 +1,289 @@ +--- +title: "搭配 Comfy Router 使用 Erase V1" +description: "通过 Comfy Router 调用 bfl/erase-v1:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Erase V1" +translationSourceHash: e609bb17 +translationFrom: development/comfy-router/models/black-forest-labs/erase-v1/code.mdx +translationBlockHashes: + "_intro": b4153070 + "Schema": 9d76d890 + "Examples": d7b73bfd +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/erase-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/erase-v1` 的 API 参考文档,由 Comfy Router 提供,模型来自 Black Forest Labs。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/erase-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/erase-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/erase-v1", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/erase-v1", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/erase-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## 架构 + +### 输入 + + + 移除之前对遮罩进行膨胀的像素数。膨胀有助于覆盖对象边缘。最大为 25 像素。 + + 范围:`0` 到 `25` + + + + Base64 编码的输入图像,或 HTTP(S) 图片网址。 + + + + Base64 编码的黑白遮罩,或 HTTP(S) 图片网址。白像素表示要移除的对象;黑像素则保留。必须与输入图像尺寸相同。 + + + + 可选值:`jpeg`、`png`、`webp` + + + + 输入和输出审核的阈值级别。介于 0 与 5 之间,0 最严格,5 最宽松。 + + 范围:`0` 到 `5` + + + + 可选种子,用于结果复现。 + + + + 可选密钥,用于 webhook 签名验证。 + + + + 接收 webhook 通知的网址。 + + 格式:`uri` + + +该文档根据 Router 在 `GET /v2/models/bfl/erase-v1/openapi.json` 提供的 schema 生成,也是请求到达提供商之前,Router 用来校验调用的同一份文档。 + +### 输出 + + + 提供商上报的积分成本,任务进入 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 上报的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为 null:该组件的 `required` 条目承诺 `200` 响应必定携带结果,而可为 null 的 `result` 会将其降格为仅检查键是否存在。 + + + + 提供商上报的本次生成成本。这是 BFL 的数值,而非 Comfy 的计费。 + + 格式:`double` + + + + 提供商上报的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商上报的生成完成时间,为自 Unix 纪元起的秒数。使用 `double` 的原因与 `start_time` 相同。 + + 格式:`double` + + + + 生成实际运行时使用的提示词,即经过提示词上采样之后的结果。 + + + + 已生成资源的签名网址。Router 会将资源重新托管到 Comfy 存储并重写该字段,因此它通常是 Comfy 托管的网址,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的备忘中重放,因此较晚的轮询可能拿回只剩一小时有效期的链接;如果某个叶节点的重新托管无法完成,则改为保留 BFL 自有的短时效分发网址:视频大约两小时,图像大约十分钟。无论哪种情况链接都会过期,因此请下载资源,而不要存储该网址。 + + 格式:`uri` + + + + 生成所使用的种子,无论是外部提供还是由提供商选定。声明为 `int64`,因为 BFL 会返回超过 2^31 的种子(例如 2784347701),而未指定格式的 `integer` 在许多 SDK 生成器中会生成为 32 位字段。 + + 格式:`int64` + + + + 提供商上报的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前纪元值附近,float32 的间隔约为 128 秒,会把整次生成的跨度压缩成单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## Schema + +### 输入 + + + 移除之前对遮罩进行膨胀的像素数。膨胀有助于覆盖物体边缘。最大值为 25 像素。 + + 范围:`0` 到 `25` + + + + Base64 编码的输入图像,或 HTTP(S) 图片网址。 + + + + Base64 编码的黑白遮罩,或 HTTP(S) 图片网址。白像素表示要移除的对象;黑色像素会被保留。必须与输入图像尺寸相同。 + + + + 可选值:`jpeg`、`png`、`webp` + + + + 输入与输出审核的阈值等级。介于 0 到 5 之间,0 为最严格,5 为最宽松。 + + 范围:`0` 到 `5` + + + + 可选的种子,用于结果复现。 + + + + 可选的密钥,用于 webhook 签名验证。 + + + + 接收 webhook 通知的 URL。 + + 格式:`uri` + + +由 Router 在 `GET /v2/models/bfl/erase-v1/openapi.json` 提供的 schema 生成,这也正是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 提供商上报的积分成本,在任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 上报的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为 null:该组件的 `required` 条目承诺 `200` 响应会携带结果,而可空的 `result` 会让这一承诺退化为仅检查键是否存在。 + + + + 提供商上报的本次生成成本。这是 BFL 的数值,而非 Comfy 的计费。 + + 格式:`double` + + + + 提供商上报的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商上报的生成完成时间,为自 Unix 纪元起的秒数。使用 `double` 的原因与 `start_time` 相同。 + + 格式:`double` + + + + 本次生成实际运行的提示词,即经过提示词上采样之后的结果。 + + + + 已生成资源的签名 URL。Router 会把资源重新托管到 Comfy 存储并改写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:签发时签署 24 小时,并从 23 小时的缓存中重放,所以稍后的轮询返回的 URL 剩余有效期可能只有 1 小时;若某个叶子节点无法执行重新托管,则改为保留 BFL 自己的短期分发 URL:视频约两小时,图像约十分钟。无论哪种情况,链接都会过期,因此请下载资源,而不要存储该 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是外部提供还是由提供商选定。声明为 `int64`,是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未指定格式的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商上报的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前纪元值附近,float32 的间隔约为 128 秒,会把整个生成的跨度压缩成单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx new file mode 100644 index 000000000..19565d1a7 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx @@ -0,0 +1,426 @@ +--- +title: "使用 Flux 1.1 Pro Ultra Image 与 Comfy Router" +description: "通过 Comfy Router 以 HTTP 调用 FLUX 1.1 [pro] Ultra 和 FLUX 1.1 [pro] 的 Python、TypeScript 与 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "Flux 1.1 Pro Ultra Image" +translationSourceHash: 70ee8564 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-1-pro-ultra-image/code.mdx +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Flux 1.1 Pro Ultra Image 的 API 参考。FLUX 1.1 [pro] 是 Black Forest Labs 推出的文生图模型。Ultra 模式可生成最高 4MP 分辨率的图像。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起同样的调用。 + +选择你要调用的模型。以下所有内容,从代码片段到 schema 和示例,都会随你的选择而变化。 + + + +**模型 ID:** `bfl/flux-pro-1.1-ultra` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1-ultra", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": False, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1-ultra", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + aspect_ratio: "16:9", + raw: false, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1-ultra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"aspect_ratio\": \"16:9\", \"raw\": false}" +``` + + +

Schema

+ +

输入

+ + + 图像的比例,介于 21:9 和 9:21 之间,例如 16:9。 + + + + 可选的 base64 编码图像,用于混合生成。 + + + + 提示词与图像提示词之间的混合程度,从 0(仅使用提示词)到 1(仅使用图像提示词)。 + + 范围:`0` 到 `1` + + + + 输出图像格式。 + + 可选值:`jpeg`、`png`、`webp` + + + + 用于图像生成的文本提示词。 + + + + 是否对提示词进行上采样。启用后,提示词会被自动修改,以进行更具创造性的生成。 + + + + 生成处理更少、看起来更自然的图像。 + + + + 输入和输出审核的阈值,介于 0(最严格)和 6(最宽松)之间。 + + 范围:`0` 到 `6` + + + + 可选种子,用于保证可复现性。省略时使用随机种子。 + + + + 可选密钥,用于 Webhook 签名验证。 + + + + 接收 Webhook 通知的 URL。 + + 格式:`uri` + + +根据 Router 在 `GET /v2/models/bfl/flux-pro-1.1-ultra/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前会依据同一份文档校验调用。 + +

输出

+ + + 提供商上报的积分成本,在任务进入 Ready 状态后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 上报的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目意味着 `200` 响应一定携带结果,而可空的 `result` 会将其降级为仅检查键是否存在。 + + + + 提供商上报的本次生成成本。这是 BFL 的数值,不是 Comfy 的收费。 + + 格式:`double` + + + + 提供商上报的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商上报的生成完成时间,单位为自 Unix 纪元起的秒数。与 `start_time` 出于相同原因使用 `double`。 + + 格式:`double` + + + + 生成实际使用的提示词,即经过任何提示词上采样之后的结果。 + + + + 已生成资源的签名 URL。Router 会将资源重新托管到 Comfy 存储并改写此字段,因此它通常是有效的 Comfy 托管 URL,有效期最长 24 小时。签发时签名为 24 小时,并从 23 小时的备忘中重放,因此稍后轮询可能返回仅剩一小时有效期的链接;如果某个叶子节点无法完成重新托管,则保留 BFL 自己的短期交付 URL,视频大约两小时,图像大约十分钟。无论哪种情况,链接都会过期,因此请下载资源,而不是保存 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是提供的还是由提供商选择的。声明为 `int64` 是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未指定格式的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商上报的生成开始时间,单位为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前纪元数值附近,float32 的间隔约为 128 秒,这会把整次生成的时间跨度压缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +

示例

+ +

输入

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "aspect_ratio": "16:9", + "raw": false +} +``` + +

输出

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +该 URL 是临时的。如果你需要保留图像,请及时下载。 +
+ +**模型 ID:** `bfl/flux-pro-1.1` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.1", + { + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768, + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-pro-1.1", { + prompt: "a single red maple leaf on a plain white background, studio lighting", + width: 1024, + height: 768, +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"width\": 1024, \"height\": 768}" +``` + + +

Schema

+ +

输入

+ + + 已生成图像的高度,单位为像素。必须是 32 的倍数。 + + 范围:`256` 到 `1440` + + + + 可选的 base64 编码图像,用于配合 FLUX Redux 使用。 + + + + 输出图像格式。 + + 可选值:`jpeg`、`png`、`webp` + + + + 用于图像生成的文本提示词。 + + + + 是否对提示词进行上采样。启用后,提示词会被自动修改,以进行更具创造性的生成。 + + + + 输入和输出审核的阈值,介于 0(最严格)和 6(最宽松)之间。 + + 范围:`0` 到 `6` + + + + 可选种子,用于保证可复现性。省略时使用随机种子。 + + + + 可选密钥,用于 Webhook 签名验证。 + + + + 接收 Webhook 通知的 URL。 + + 格式:`uri` + + + + 已生成图像的宽度,单位为像素。必须是 32 的倍数。 + + 范围:`256` 到 `1440` + + +根据 Router 在 `GET /v2/models/bfl/flux-pro-1.1/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前会依据同一份文档校验调用。 + +

输出

+ + + 提供商上报的积分成本,在任务进入 Ready 状态后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 上报的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目意味着 `200` 响应一定携带结果,而可空的 `result` 会将其降级为仅检查键是否存在。 + + + + 提供商上报的本次生成成本。这是 BFL 的数值,不是 Comfy 的收费。 + + 格式:`double` + + + + 提供商上报的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商上报的生成完成时间,单位为自 Unix 纪元起的秒数。与 `start_time` 出于相同原因使用 `double`。 + + 格式:`double` + + + + 生成实际使用的提示词,即经过任何提示词上采样之后的结果。 + + + + 已生成资源的签名 URL。Router 会将资源重新托管到 Comfy 存储并改写此字段,因此它通常是有效的 Comfy 托管 URL,有效期最长 24 小时。签发时签名为 24 小时,并从 23 小时的备忘中重放,因此稍后轮询可能返回仅剩一小时有效期的链接;如果某个叶子节点无法完成重新托管,则保留 BFL 自己的短期交付 URL,视频大约两小时,图像大约十分钟。无论哪种情况,链接都会过期,因此请下载资源,而不是保存 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是提供的还是由提供商选择的。声明为 `int64` 是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未指定格式的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商上报的生成开始时间,单位为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前纪元数值附近,float32 的间隔约为 128 秒,这会把整次生成的时间跨度压缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +

示例

+ +

输入

+ +```json +{ + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "width": 1024, + "height": 768 +} +``` + +

输出

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.jpeg", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "seed": 1234567890 + } +} +``` + +该 URL 是临时的。如果你需要保留图像,请及时下载。 +
+
+ + \ No newline at end of file diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx new file mode 100644 index 000000000..21ddc9e26 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx @@ -0,0 +1,452 @@ +--- +title: "通过 Comfy Router 使用 FLUX.1 Kontext" +description: "通过 Comfy Router 使用 HTTP 调用 FLUX.1 Kontext Pro 和 Kontext Max 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "FLUX.1 Kontext" +translationSourceHash: 6016f7f5 +translationFrom: development/comfy-router/models/black-forest-labs/flux-1-kontext/code.mdx +--- + +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +FLUX.1 Kontext 的 API 参考。FLUX.1 Kontext 是 Black Forest Labs 的指令驱动图像编辑模型:发送一张图像和一条文本指令,即可取回编辑后的图像,同时场景的其余部分保持不变。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +选择你要调用的模型。下面的全部内容,从代码片段到 schema 和示例,都随你的选择而变化。 + + + +**Model ID:** `bfl/flux-kontext-pro` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-pro` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-pro", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-pro", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

Schema

+ +

输入

+ + + 输出的宽高比,介于 21:9 和 9:21 之间,例如 16:9。当提供了输入图像时,默认为输入图像的宽高比,否则为 1:1。 + + + + 要编辑的图像,为 base64 编码的图像或 http(s) URL。可选;不提供时,模型仅根据提示词生成。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 输出图像格式。 + + 可能的值:`jpeg`、`png`、`webp` + + + + 描述要应用于 input_image 的编辑操作,或在未提供 input_image 时要生成的图像的文本提示词。 + + + + 是否对提示词进行上采样。如果启用,提示词会被自动修改,以便进行更具创造性的生成。 + + + + 输入和输出审核的阈值级别,介于 0(最严格)和 6(最宽松)之间。 + + 范围:`0` 到 `6` + + + + 用于可复现性的可选种子。省略时使用随机种子。 + + + + 用于 webhook 签名验证的可选密钥。 + + + + 接收 webhook 通知的 URL。 + + 格式:`uri` + + +由 Router 在 `GET /v2/models/bfl/flux-kontext-pro/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于验证调用的同一份文档。 + +

输出

+ + + 提供商报告的以积分计的费用,任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成。此处不可为空:该组件的 `required` 条目承诺 `200` 会携带结果,而可为空的 `result` 会将其降格为仅检查键是否存在。 + + + + 提供商报告的生成费用。这是 BFL 的数值,而非 Comfy 的收费。 + + 格式:`double` + + + + 提供商报告的生成时长,以秒为单位。 + + 格式:`double` + + + + 提供商报告的生成完成时间,为自 Unix 纪元起的秒数。原因与 `start_time` 相同,使用 `double`。 + + 格式:`double` + + + + 经过任何提示词上采样后,生成实际运行的提示词。 + + + + 已生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储上并重写此字段,因此它通常是有效的 Comfy 托管 URL,有效期最长 24 小时:签发时签名为 24 小时,并从 23 小时的缓存中重放,因此稍后的轮询可能返回仅剩一小时有效期的 URL;如果某个叶子节点无法执行重新托管,则会保留 BFL 自己的短期交付 URL,视频约为两小时,图像约为十分钟。无论哪种情况,链接都会过期,因此请下载资产,而不要存储 URL。 + + 格式:`uri` + + + + 生成所使用的种子,无论是由用户提供还是由提供商选择。声明为 `int64` 是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未格式化的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前的纪元值附近,float32 的间隔约为 128 秒,这会把整次生成的时间跨度压缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +

示例

+ +

输入

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

输出

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +该 URL 是临时的。如果需要保留图像,请及时下载。 +
+ +**Model ID:** `bfl/flux-kontext-max` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-kontext-max` + + +```python Python +import base64 + +from comfy_sdk import Comfy + +with open("input.jpg", "rb") as f: + input_image = base64.b64encode(f.read()).decode() + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-kontext-max", + { + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": input_image, + "aspect_ratio": "1:1", + }, + ) + +print("image:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; +import { readFile } from "node:fs/promises"; + +const inputImage = (await readFile("input.jpg")).toString("base64"); + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-kontext-max", { + prompt: "replace the background with a sunlit beach, keep the subject unchanged", + input_image: inputImage, + aspect_ratio: "1:1", +}); + +console.log("image:", data.result.sample); +``` + +```bash cURL +INPUT_IMAGE=$(base64 < input.jpg | tr -d '\n') + +curl https://api.comfy.org/v2/models/bfl/flux-kontext-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"replace the background with a sunlit beach, keep the subject unchanged\", \"input_image\": \"$INPUT_IMAGE\", \"aspect_ratio\": \"1:1\"}" +``` + + +

Schema

+ +

输入

+ + + 输出的宽高比,介于 21:9 和 9:21 之间,例如 16:9。当提供了输入图像时,默认为输入图像的宽高比,否则为 1:1。 + + + + 要编辑的图像,为 base64 编码的图像或 http(s) URL。可选;不提供时,模型仅根据提示词生成。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 额外的参考图像,base64 编码或 http(s) URL(实验性多参考)。 + + + + 输出图像格式。 + + 可能的值:`jpeg`、`png`、`webp` + + + + 描述要应用于 input_image 的编辑操作,或在未提供 input_image 时要生成的图像的文本提示词。 + + + + 是否对提示词进行上采样。如果启用,提示词会被自动修改,以便进行更具创造性的生成。 + + + + 输入和输出审核的阈值级别,介于 0(最严格)和 6(最宽松)之间。 + + 范围:`0` 到 `6` + + + + 用于可复现性的可选种子。省略时使用随机种子。 + + + + 用于 webhook 签名验证的可选密钥。 + + + + 接收 webhook 通知的 URL。 + + 格式:`uri` + + +由 Router 在 `GET /v2/models/bfl/flux-kontext-max/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于验证调用的同一份文档。 + +

输出

+ + + 提供商报告的以积分计的费用,任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成。此处不可为空:该组件的 `required` 条目承诺 `200` 会携带结果,而可为空的 `result` 会将其降格为仅检查键是否存在。 + + + + 提供商报告的生成费用。这是 BFL 的数值,而非 Comfy 的收费。 + + 格式:`double` + + + + 提供商报告的生成时长,以秒为单位。 + + 格式:`double` + + + + 提供商报告的生成完成时间,为自 Unix 纪元起的秒数。原因与 `start_time` 相同,使用 `double`。 + + 格式:`double` + + + + 经过任何提示词上采样后,生成实际运行的提示词。 + + + + 已生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储上并重写此字段,因此它通常是有效的 Comfy 托管 URL,有效期最长 24 小时:签发时签名为 24 小时,并从 23 小时的缓存中重放,因此稍后的轮询可能返回仅剩一小时有效期的 URL;如果某个叶子节点无法执行重新托管,则会保留 BFL 自己的短期交付 URL,视频约为两小时,图像约为十分钟。无论哪种情况,链接都会过期,因此请下载资产,而不要存储 URL。 + + 格式:`uri` + + + + 生成所使用的种子,无论是由用户提供还是由提供商选择。声明为 `int64` 是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未格式化的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前的纪元值附近,float32 的间隔约为 128 秒,这会把整次生成的时间跨度压缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +

示例

+ +

输入

+ +```json +{ + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "input_image": "", + "aspect_ratio": "1:1" +} +``` + +

输出

+ +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.png", + "prompt": "replace the background with a sunlit beach, keep the subject unchanged", + "seed": 1234567890 + } +} +``` + +该 URL 是临时的。如果需要保留图像,请及时下载。 +
+
+ + \ No newline at end of file diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx new file mode 100644 index 000000000..bf870237c --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx @@ -0,0 +1,242 @@ +--- +title: "使用 Comfy Router 调用 FLUX 2 Max" +description: "通过 Comfy Router 调用 bfl/flux-2-max:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "FLUX 2 Max" +translationSourceHash: 50eacc87 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-max/code.mdx +translationBlockHashes: + "_intro": b78e1772 + "Quick start": d68c79a1 + "Schema": 8da5f7ce + "Examples": 07dfd8d0 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-2-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-2-max` 的 API 参考文档,由 Comfy Router 提供,来自 Black Forest Labs。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `bfl/flux-2-max` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-2-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-max", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-max", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 图像的高度。 + + 范围:`256` 到 `2048` + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + Base64 编码的图像,用于图生图生成。 + + + + 已生成图像的输出格式。 + + 可选值:`jpeg`、`png` + + + + 要生成的图像的文本描述。 + + + + 自动修改用于生成的提示词。 + + + + 审核阈值等级(仅 Flux 2 Max)。 + + 范围:`0` 到 `5` + + + + 用于复现的种子。 + + + + 图像的宽度。 + + 范围:`256` 到 `2048` + + +根据 Router 在 `GET /v2/models/bfl/flux-2-max/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的是同一份文档。 + +### 输出 + + + 提供商报告的积分成本,在任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目是一份承诺,即 `200` 响应必定携带结果,而可为空的 `result` 会将其降格为键是否存在性的检查。 + + + + 提供商报告的生成成本。这是 BFL 的数值,而非 Comfy 的计费。 + + 格式:`double` + + + + 提供商报告的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商报告的生成完成时间,单位为自 Unix 纪元起的秒数。与 `start_time` 同理使用 `double`。 + + 格式:`double` + + + + 该次生成实际运行的提示词,即经过任何提示词上采样之后的内容。 + + + + 已生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储并改写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时。生成时为 24 小时签名,并从 23 小时的缓存中重放,所以稍后的轮询可能返回一个仅剩一小时的链接;对于无法执行重新托管的叶子节点,则保留 BFL 自己的短时效投放 URL,视频大约两小时,图像大约十分钟。无论哪种情况,链接都会过期,因此请下载资产,而不要保存该 URL。 + + 格式:`uri` + + + + 该次生成所使用的种子,无论是外部提供还是由提供商选择。声明为 `int64`,是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未加格式限定的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,单位为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当今的纪元数值附近,float32 的间隔约为 128 秒,这会将整个生成的时间跨度坍缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx new file mode 100644 index 000000000..29b1dfd93 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx @@ -0,0 +1,242 @@ +--- +title: "将 FLUX 2 Pro 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 bfl/flux-2-pro:端点、请求结构,以及 Router 返回的响应。" +sidebarTitle: "FLUX 2 Pro" +translationSourceHash: fb5fb051 +translationFrom: development/comfy-router/models/black-forest-labs/flux-2-pro/code.mdx +translationBlockHashes: + "_intro": 7b39815b + "Quick start": 6fde3990 + "Schema": 942b3b42 + "Examples": 07dfd8d0 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bfl/flux-2-pro.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-2-pro` 的 API 参考,由 Comfy Router 从 Black Forest Labs 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `bfl/flux-2-pro` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-2-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-2-pro", { + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 图像的高度。 + + 范围:`256` 到 `2048` + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 用于图生图的 Base64 编码图像。 + + + + 已生成图像的输出格式。 + + 可选值:`jpeg`、`png` + + + + 要生成的图像的文本描述。 + + + + 自动修改用于生成的提示词。 + + + + 审核阈值级别(仅 Flux 2 Max)。 + + 范围:`0` 到 `5` + + + + 用于结果可复现的种子。 + + + + 图像的宽度。 + + 范围:`256` 到 `2048` + + +由 Router 在 `GET /v2/models/bfl/flux-2-pro/openapi.json` 提供的 schema 生成,也就是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 提供商报告的以积分计的成本,在任务就绪后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目是对 `200` 会携带结果的承诺,而可空的 `result` 会把它降格为仅检查键是否存在。 + + + + 提供商报告的本次生成成本。这是 BFL 的数字,不是 Comfy 的收费。 + + 格式:`double` + + + + 提供商报告的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商报告的生成完成时间,为自 Unix 纪元起的秒数。使用 `double` 的原因与 `start_time` 相同。 + + 格式:`double` + + + + 生成实际运行的提示词,即经过任何提示词上采样之后的结果。 + + + + 已生成资产的签名 URL。Router 会把该资产重新托管到 Comfy 存储上并改写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:签发时签 24 小时,并从一份 23 小时的备忘中重放,所以较晚的轮询可能返回一个只剩一小时的链接;如果某个叶子节点无法执行重新托管,则保留 BFL 自己的短时效分发 URL:视频大约两小时,图像大约十分钟。无论哪种情况链接都会过期,因此请下载资产,而不要保存 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是由用户提供还是由提供商选定。声明为 `int64` 是因为 BFL 会返回超过 2^31 的种子(例如 2784347701),而未加格式修饰的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,为自 Unix 纪元起的秒数。是 `double` 而不是 `float`:在当前日期的纪元值附近,float32 的间距约为 128 秒,这会把整个生成的跨度压缩成单个解码值。 + + 格式:`double` + + + + 任务状态:待定、推理中、生成中、就绪、请求被审核、内容被审核、错误或未找到任务。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx new file mode 100644 index 000000000..79d540711 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx @@ -0,0 +1,208 @@ +--- +title: "使用 Comfy Router 调用 FLUX 3 Video" +description: "通过 Comfy Router 以 HTTP 方式调用 FLUX 3 生成带同步音频的视频,包含 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果结构" +sidebarTitle: "FLUX 3 Video" +translationSourceHash: 1ab039ff +translationFrom: development/comfy-router/models/black-forest-labs/flux-3-video/code.mdx +translationBlockHashes: + "_intro": 68d3f377 + "Quick start": df957ab3 + "Schema": f4f6cabb + "Examples": 8d347442 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +FLUX 3 Video 的 API 参考。FLUX 3 Video 是 Black Forest Labs 的视频生成模型,可将文本提示词转换为带有同步音频的短片。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `bfl/flux-3-video` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-3-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-3-video", + { + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": True, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/flux-3-video", { + mode: "t2v", + prompt: "a single red maple leaf falling onto still water, slow motion", + duration: 5, + aspect_ratio: "16:9", + generate_audio: true, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-3-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"mode\": \"t2v\", \"prompt\": \"a single red maple leaf falling onto still water, slow motion\", \"duration\": 5, \"aspect_ratio\": \"16:9\", \"generate_audio\": true}" +``` + + +## Schema + +### Input + + + 输出宽高比:auto、21:9、2:1、16:9、4:3、1:1、3:4 或 9:16。auto 会让 BFL 根据提示词和任何参考素材自行选择。 + + + + 草稿模式:生成一份快速预览,其结果中包含一个 draft_cache 下载 URL。将该包连同 mode draft_enhance 一起发回,即可渲染同一次生成的完整质量版本。 + + + + 仅 draft_enhance 使用。来自先前草稿生成的加密草稿缓存包,形式为 base64 编码的已下载包,或仍然有效的 http(s) URL。原始输入已嵌入该包中。 + + + + 视频时长(秒),可为 5 到 20 之间的任意整数秒,或使用 auto 自动适配内容。 + + Range: `5` to `20` + + + + 在生成视频的同时生成同步音频。 + + + + 仅 i2v 使用。将成为视频帧的图像,每张为 http(s) URL 或 base64,总共一到十张。接受单张图像、图像列表(一张用于开始视频,两张分别作为起始和结束,更多则均匀分布且需要设定时长),或按时间顺序排列的带时间戳的 [秒数, 图像] 对,例如 [[0, "..."], [3.5, "..."]]。每个对是包含两个元素的数组:先是秒数,然后是图像。 + + + + 生成模式:t2v(文生视频)、i2v(图像续写)、v2v(视频续写)或 draft_enhance(对先前草稿进行完整质量渲染)。也接受 text-to-video 这类完整拼写的别名。 + + + + 描述视频的自由格式提示词。除 draft_enhance 外的所有模式均必填。 + + + + 视频分辨率级别:hd,或 fhd(由视频放大器完成更高分辨率的结果)。t2v、i2v 和 v2v 默认为 hd,draft_enhance 默认为 fhd。具体尺寸会随宽高比变化。 + + Possible values: `hd`, `fhd` + + + + 输入与输出有害内容审核的容差级别,0 为最严格。无论请求的容差级别如何,色情内容均限制为级别 3,仇恨内容均限制为级别 2;带条件媒体的请求限制为级别 2。 + + Range: `0` to `4` + + + + 仅 v2v 使用。要续接的视频,为 http(s) URL 或 base64 MP4;生成的片段将从其最后几帧继续。 + + + + 端点版本。latest 提供当前发布版本;带日期的可固定发布标签会在发布时添加。 + + +本文件生成自 Router 在 `GET /v2/models/bfl/flux-3-video/openapi.json` 提供的 Schema,也就是在请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### Output + + + 提供商报告的以积分计的成本,在任务变为 Ready 后填充。 + + Format: `float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + Range: `0` to `1` + + Format: `float` + + + + 已完成的生成结果。两个 URL 叶子字段中恰好会填充其中一个:默认模式下为 `sample`,`draft: true` 模式下为 `draft_cache`。 + + + + 提供商报告的任务成本。这是 BFL 的数值,而不是 Comfy 的收费。 + + Format: `double` + + + + 由 `draft: true` 模式返回、用于替代 `sample` 的签名 URL,其重新托管到 Comfy 存储的方式与 `sample` 相同:通常是有效期最长 24 小时的 Comfy 托管 URL;若无法完成重新托管,则为 BFL 自身约两小时有效的交付 URL。 + + Format: `uri` + + + + 已生成 MP4 的签名 URL。Router 会把该资源重新托管到 Comfy 存储并重写此字段,因此它通常是有效期最长 24 小时的 Comfy 托管 URL(签发时签名 24 小时,之后从 23 小时的备忘录中重放,所以后续轮询可能返回仅剩一小时有效期的链接);若某个叶子字段无法完成重新托管,则会保留 BFL 自身约两小时有效的交付 URL。在 `draft: true` 模式下不存在。 + + Format: `uri` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。比较时不区分大小写;Router 会原样转发 BFL 的拼写。 + + +## 示例 + +### 输入 + +```json +{ + "mode": "t2v", + "prompt": "a single red maple leaf falling onto still water, slow motion", + "duration": 5, + "aspect_ratio": "16:9", + "generate_audio": true +} +``` + +### 输出 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../out.mp4" + } +} +``` + +`result.sample` 通常是一个由 Comfy 托管的签名 URL,自创建起最长 24 小时内有效。重放(replay)可能返回一个较早的 URL,而无法重新托管的素材会保留其有效期更短的提供商 URL。请及时下载 MP4,而不要只保存链接。当设置 `draft: true` 时,应读取 `result.draft_cache`,而不是期望获得 `result.sample`。 + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx new file mode 100644 index 000000000..a4376ddf2 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx @@ -0,0 +1,234 @@ +--- +title: "使用 FLUX Pro 1.0 Canny 搭配 Comfy Router" +description: "通过 Comfy Router 调用 bfl/flux-pro-1.0-canny:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "FLUX Pro 1.0 Canny" +translationSourceHash: 27f08d3c +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-canny/code.mdx +translationBlockHashes: + "_intro": ce5e56f7 + "Quick start": fa0ec32e + "Examples": ef614e15 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-canny.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-canny` 的 API 参考文档,由 Comfy Router 提供,模型来自 Black Forest Labs。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `bfl/flux-pro-1.0-canny` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-canny", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-canny", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-canny \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### Input + + + High threshold for Canny edge detection + + Range: `0` to `500` + + + + Low threshold for Canny edge detection + + Range: `0` to `500` + + + + Base64 encoded image to use as control input if no preprocessed image is provided + + + + Guidance strength for the image generation process + + Range: `1` to `100` + + + + Output format for the generated image. Can be 'jpeg' or 'png'. + + + + Optional pre-processed image that will bypass the control preprocessing step + + + + Text prompt for image generation + + + + Whether to perform upsampling on the prompt + + + + Tolerance level for input and output moderation. Between 0 and 6, 0 being most strict, 6 being least strict. + + Range: `0` to `6` + + + + Optional seed for reproducibility + + + + Number of steps for the image generation process + + Range: `15` to `50` + + + + Optional secret for webhook signature verification + + + + URL to receive webhook notifications + + +Generated from the schema Router serves at `GET /v2/models/bfl/flux-pro-1.0-canny/openapi.json`, the same document it validates a call against before the request reaches the provider. + +### Output + + + Provider-reported cost in credits, populated once the task is Ready. + + Format: `float` + + + + BFL task identifier. + + + + Optional generation progress reported by BFL. + + Range: `0` to `1` + + Format: `float` + + + + The finished generation. Not nullable here: this component's `required` entry is a promise that a `200` carries the result, and a nullable `result` would reduce it to a key-presence check. + + + + Provider-reported cost of the generation. This is BFL's number, not the Comfy charge. + + Format: `double` + + + + Provider-reported generation duration in seconds. + + Format: `double` + + + + Provider-reported completion time of the generation, in seconds since the Unix epoch. `double` for the same reason as `start_time`. + + Format: `double` + + + + The prompt the generation actually ran, after any prompt upsampling. + + + + Signed URL for the generated asset. Router re-hosts the asset onto Comfy storage and rewrites this field, so it is normally a Comfy-hosted URL valid for up to 24 hours - signed for 24 hours when minted, and replayed from a 23-hour memo, so a later poll can hand back one with as little as an hour left; a leaf whose re-host could not be performed keeps BFL's own short-lived delivery URL instead - roughly two hours for video, roughly ten minutes for images. Either way the link expires, so download the asset rather than storing the URL. + + Format: `uri` + + + + The seed the generation used, whether supplied or chosen by the provider. Declared `int64` because BFL returns seeds above 2^31 (e.g. 2784347701), which an unformatted `integer` generates as a 32-bit field in many SDK generators. + + Format: `int64` + + + + Provider-reported start time of the generation, in seconds since the Unix epoch. `double`, not `float`: float32 spacing near a present-day epoch value is ~128 seconds, which collapses a whole generation's span to a single decoded value. + + Format: `double` + + + + Task status: Pending, Reasoning, Generating, Ready, Request Moderated, Content Moderated, Error, or Task not found. + + +## 示例 + +### 输入 + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx new file mode 100644 index 000000000..435b979a9 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx @@ -0,0 +1,222 @@ +--- +title: "使用 Comfy Router 调用 FLUX Pro 1.0 Depth" +description: "通过 Comfy Router 调用 bfl/flux-pro-1.0-depth:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "FLUX Pro 1.0 Depth" +translationSourceHash: b41edb6c +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-depth/code.mdx +translationBlockHashes: + "_intro": 82c5ca01 + "Quick start": af98681e + "Schema": a0d1f1e2 + "Examples": ef614e15 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/flux-pro-1.0-depth.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-depth` 的 API 参考,由 Black Forest Labs 的 Comfy Router 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `bfl/flux-pro-1.0-depth` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-depth", + { + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-depth", { + control_image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-depth \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 模式 + +### 输入 + + + 用作控制输入的 Base64 编码图像 + + + + 图像生成过程的引导强度 + + 范围:`1` 到 `100` + + + + 生成图像的输出格式。可以是 'jpeg' 或 'png'。 + + + + 可选的预处理图像,将绕过控制预处理步骤 + + + + 用于图像生成的文本提示词 + + + + 是否对提示词执行上采样 + + + + 输入和输出审核的阈值级别。介于 0 和 6 之间,0 最严格,6 最宽松。 + + 范围:`0` 到 `6` + + + + 用于可复现的可选种子 + + + + 图像生成过程的步数 + + 范围:`15` 到 `50` + + + + 用于 Webhook 签名验证的可选密钥 + + + + 接收 Webhook 通知的 URL + + +由 Router 在 `GET /v2/models/bfl/flux-pro-1.0-depth/openapi.json` 提供的模式生成,该文档也是请求到达提供商之前用于验证调用的同一文档。 + +### 输出 + + + 提供商报告的积分成本,任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为 null:此组件的 `required` 条目承诺 `200` 响应会携带结果,而可空的 `result` 会将其降级为仅检查键是否存在。 + + + + 提供商报告的生成成本。这是 BFL 的数字,而不是 Comfy 的收费。 + + 格式:`double` + + + + 提供商报告的生成时长(秒)。 + + 格式:`double` + + + + 提供商报告的生成完成时间,自 Unix 纪元起的秒数。使用 `double` 的原因与 `start_time` 相同。 + + 格式:`double` + + + + 生成实际运行的提示词,即经过任何提示词上采样之后的提示词。 + + + + 生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 托管的 URL,有效期最长为 24 小时:铸造时签名 24 小时,并从 23 小时的备忘中重放,因此稍后轮询可能返回一个仅剩一小时有效期的 URL;如果某个叶子节点无法执行重新托管,则保留 BFL 自己的短时效交付 URL,视频大约两小时,图像大约十分钟。无论哪种方式,链接都会过期,因此请下载资产,而不是存储 URL。 + + 格式:`uri` + + + + 生成所使用的种子,无论是提供的还是提供商选择的。声明为 `int64`,因为 BFL 返回的种子超过 2^31(例如 2784347701),在许多 SDK 生成器中,未格式化的 `integer` 会将其生成为 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前时代的纪元值附近,float32 的间隔约为 128 秒,这会将整个生成的时间跨度压缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "control_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx new file mode 100644 index 000000000..92ba981b5 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx @@ -0,0 +1,246 @@ +--- +title: "使用 Comfy Router 调用 FLUX Pro 1.0 Expand" +description: "通过 Comfy Router 调用 bfl/flux-pro-1.0-expand:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "FLUX Pro 1.0 Expand" +translationSourceHash: 251b8f2d +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-expand/code.mdx +translationBlockHashes: + "_intro": 33c96788 + "Quick start": d6a11a7c + "Schema": dfc6f70d + "Examples": d27504bc +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bfl/flux-pro-1.0-expand.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-expand` 的 API 参考文档,由 Comfy Router 提供,来自 Black Forest Labs。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `bfl/flux-pro-1.0-expand` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-expand", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-expand", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + prompt: "extend the plain white background upward", + top: 64, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"prompt\": \"extend the plain white background upward\", \"top\": 64}" +``` + + +## 架构 + +### 输入 + + + 在图像底部扩展的像素数 + + Range: `0` 到 `2048` + + + + 图像生成过程的引导强度 + + Range: `1.5` 到 `100` + + + + 一个 Base64 编码的字符串,表示您想要扩展的图像。 + + + + 在图像左侧扩展的像素数 + + Range: `0` 到 `2048` + + + + 已生成图像的输出格式。可以是 'jpeg' 或 'png'。 + + + + 您想要进行的更改的描述。此文本引导扩展过程,让您可以为扩展区域指定特征、风格或修改。 + + + + 是否对提示词执行上采样。若启用,会自动修改提示词以实现更具创意的生成 + + + + 在图像右侧扩展的像素数 + + Range: `0` 到 `2048` + + + + 输入和输出审核的阈值级别。介于 0 和 6 之间,0 最严格,6 最宽松。 + + Range: `0` 到 `6` + + + + 可选种子,用于保证结果可复现 + + + + 图像生成过程的步数 + + Range: `15` 到 `50` + + + + 在图像顶部扩展的像素数 + + Range: `0` 到 `2048` + + + + 可选密钥,用于 webhook 签名验证 + + + + 用于接收 webhook 通知的 URL + + +Generated from the schema Router serves at `GET /v2/models/bfl/flux-pro-1.0-expand/openapi.json`, the same document it validates a call against before the request reaches the provider. + +### 输出 + + + 提供商报告的以积分计的费用,在任务进入 Ready 后填充。 + + Format: `float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + Range: `0` 到 `1` + + Format: `float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目承诺 `200` 会携带结果,而可为空的 `result` 会将其降格为仅检查键是否存在。 + + + + 提供商报告的本次生成费用。这是 BFL 的数值,而非 Comfy 的收费。 + + Format: `double` + + + + 提供商报告的生成时长,单位为秒。 + + Format: `double` + + + + 提供商报告的生成完成时间,为自 Unix 纪元起的秒数。与 `start_time` 同理使用 `double`。 + + Format: `double` + + + + 生成实际运行的提示词,即经过任何提示词上采样之后的版本。 + + + + 已生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:创建时按 24 小时签名,并从 23 小时的备忘录中重放,所以后续轮询可能返回仅剩一小时有效期的链接;若某个叶子节点的重新托管无法执行,则会保留 BFL 自己的短时效交付 URL,视频约为两小时,图像约为十分钟。无论哪种情况链接都会过期,因此请下载资产,而不要存储该 URL。 + + Format: `uri` + + + + 本次生成使用的种子,无论是外部提供还是由提供商选择。声明为 `int64`,因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未格式化时 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + Format: `int64` + + + + 提供商报告的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当今的纪元值附近,float32 的间隔约为 128 秒,这会将整个生成的跨度坍缩为单个解码值。 + + Format: `double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "prompt": "extend the plain white background upward", + "top": 64 +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx new file mode 100644 index 000000000..6e3d27f29 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx @@ -0,0 +1,227 @@ +--- +title: "使用 Comfy Router 调用 FLUX Pro 1.0 Fill" +description: "通过 Comfy Router 调用 bfl/flux-pro-1.0-fill:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "FLUX Pro 1.0 Fill" +translationSourceHash: 4d5d3842 +translationFrom: development/comfy-router/models/black-forest-labs/flux-pro-1-0-fill/code.mdx +translationBlockHashes: + "_intro": bc9030aa + "Quick start": 378cfefa + "Schema": 643ee647 + "Examples": f5994135 +--- + +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bfl/flux-pro-1.0-fill.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/flux-pro-1.0-fill` 的 API 参考,由 Comfy Router 提供,来源于 Black Forest Labs。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/flux-pro-1.0-fill` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/flux-pro-1.0-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/flux-pro-1.0-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/flux-pro-1.0-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"plain white background\"}" +``` + + +## Schema + +### Input + + + 图像生成过程的引导强度 + + 范围:`1.5` 到 `100` + + + + 表示你要修改的图像的 Base64 编码字符串。如有需要,可包含透明度遮罩。 + + + + 表示要修改的图像区域的遮罩的 Base64 编码字符串。遮罩的尺寸应与图像相同,且为黑白图像。黑色区域(0%)表示不做修改,白色区域(100%)则指定需要进行 inpainting 的区域。如果在原始图像中提供了透明度遮罩,则此项为可选。验证:端点会校验遮罩的尺寸是否与原始图像匹配。 + + + + 已生成图像的输出格式。可以是 'jpeg' 或 'png'。 + + + + 你想要进行的更改的描述。该文本会引导 inpainting 过程,让你可以为遮罩区域指定特征、风格或修改。 + + + + 是否对提示词执行上采样。如果启用,会自动修改提示词以实现更具创意的生成 + + + + 输入和输出审核的阈值。介于 0 和 6 之间,0 最严格,6 最宽松。 + + 范围:`0` 到 `6` + + + + 用于可复现性的可选种子 + + + + 图像生成过程的步数 + + 范围:`15` 到 `50` + + + + 用于 webhook 签名验证的可选密钥 + + + + 用于接收 webhook 通知的 URL + + +根据 Router 在 `GET /v2/models/bfl/flux-pro-1.0-fill/openapi.json` 处提供的 schema 生成,这也是请求到达提供商之前,Router 用来验证调用的同一份文档。 + +### Output + + + 提供商报告的以积分计的费用,在任务变为 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:此组件的 `required` 条目是一项承诺,即 `200` 会携带结果,而可空的 `result` 会使其退化为仅检查键是否存在的检查。 + + + + 提供商报告的生成费用。这是 BFL 的数值,而非 Comfy 的计费。 + + 格式:`double` + + + + 提供商报告的生成时长(以秒为单位)。 + + 格式:`double` + + + + 提供商报告的生成完成时间,以自 Unix 纪元起的秒数表示。与 `start_time` 同理,使用 `double`。 + + 格式:`double` + + + + 生成实际运行时使用的提示词,即经过任何提示词上采样之后的提示词。 + + + + 已生成资源的签名 URL。Router 会将资源重新托管到 Comfy 存储并重写此字段,因此它通常是一个有效期最长 24 小时的 Comfy 托管 URL:签发时按 24 小时签名,并从 23 小时的备忘录中重放,因此稍后轮询可能返回一个仅剩一小时有效期的链接;如果某个叶节点的重新托管无法执行,则会保留 BFL 自己的短时效交付 URL:视频约为两小时,图像约为十分钟。无论哪种情况,链接都会过期,因此请下载资源,而不要存储该 URL。 + + 格式:`uri` + + + + 生成所使用的种子,无论是提供的还是由提供商选择的。声明为 `int64`,因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而许多 SDK 生成器会把未指定格式的 `integer` 生成为 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,以自 Unix 纪元起的秒数表示。使用 `double` 而非 `float`:在当今的纪元值附近,float32 的间隔约为 128 秒,这会把整个生成的跨度塌缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "plain white background" +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx b/zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx new file mode 100644 index 000000000..c43dc52a9 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx @@ -0,0 +1,208 @@ +--- +title: "通过 Comfy Router 使用 FLUX Video Upscale" +description: "使用 Python、TypeScript 和 cURL 代码片段,通过 Comfy Router 以 HTTP 方式调用 FLUX Video Upscale 对视频进行放大,并说明请求字段与结果结构" +sidebarTitle: "FLUX Video Upscale" +translationSourceHash: 9eeb8b72 +translationFrom: development/comfy-router/models/black-forest-labs/flux-video-upscale/code.mdx +translationBlockHashes: + "_intro": 121a04b9 + "Quick start": 041e7993 + "Schema": 4675f835 + "Examples": d1ffa3d6 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +FLUX Video Upscale 的 API 参考。FLUX Video Upscale 是 Black Forest Labs 的视频放大器:发送一个视频,即可获得分辨率更高的版本。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `bfl/video-upscale-v1` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/video-upscale-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-upscale-v1", + { + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1, + }, + ) + +print("video:", result["result"]["sample"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { result: { sample: string } }; +const { data } = await comfy.models.run("bfl/video-upscale-v1", { + input_video: "https://your-host.example/clip.mp4", + upscale_factor: 2, + creativity: 1, +}); + +console.log("video:", data.result.sample); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-upscale-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_video\": \"https://your-host.example/clip.mp4\", \"upscale_factor\": 2, \"creativity\": 1}" +``` + + +## Schema {#schema} + +### 输入 + + + 0 会精确保留来源内容并对其进行锐化;1 则允许创意性的细节增强,此时不会严格保留人脸或产品。 + + 范围:`0` 到 `1` + + + + 要放大的视频,可以是 HTTP(S) URL 或 base64 编码的 MP4。来源素材最长 20 秒且不超过 50MB。 + + + + 可选的片段内容描述,用于引导增强后的细节。留空则进行中性的放大处理。 + + + + 提示词和输出帧内容审核的阈值等级,0 为最严格。 + + 范围:`0` 到 `4` + + + + 输出相对于来源分辨率的缩放倍数。输出会保留来源的宽高比,并限制在每帧约 14.4 兆像素以内,因此非常大的来源素材放大倍数会小于请求的值。 + + 范围:`1.5` 到 `3` + + 格式:`float` + + + + 用于 webhook 签名验证的可选密钥。 + + + + 用于接收 webhook 通知的 URL。 + + 格式:`uri` + + +本文档由 Router 在 `GET /v2/models/bfl/video-upscale-v1/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,正是依据同一份文档来校验调用。 + +### 输出 + + + 提供商报告的费用,以积分计,任务进入 Ready 状态后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的生成进度(可选)。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目承诺 `200` 响应必定携带结果,而可空的 `result` 会把它降格为仅检查键是否存在。 + + + + 提供商报告的本次生成费用。这是 BFL 的数字,不是 Comfy 的计费。 + + 格式:`double` + + + + 提供商报告的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商报告的生成完成时间,为自 Unix 纪元起的秒数。与 `start_time` 同样使用 `double`。 + + 格式:`double` + + + + 生成实际采用的提示词,即经过提示词上采样之后的结果。 + + + + 生成资源的签名 URL。Router 会把该资源重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的缓存中重放,所以稍后轮询拿到的链接可能只剩一小时有效期;若某个叶子节点无法执行重新托管,则保留 BFL 自己的短时效分发 URL,视频约为两小时,图像约为十分钟。无论哪种情况链接都会过期,因此请下载资源,而不要保存 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是传入的还是提供商选定的。声明为 `int64` 是因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而在许多 SDK 生成器中,未指定格式的 `integer` 会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当前纪元值附近,float32 的间隔约为 128 秒,会把整次生成的时间跨度压缩成一个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "input_video": "https://your-host.example/clip.mp4", + "upscale_factor": 2, + "creativity": 1 +} +``` + +### 输出 + +```json +{ + "id": "0a1b2c3d-...", + "status": "Ready", + "result": { + "sample": "https://.../upscaled.mp4" + } +} +``` + +`result.sample` 通常是 Comfy 托管的签名 URL,自创建时起最长 24 小时内有效。重放可能会返回较旧的 URL,而无法重新托管的资产会保留其有效期更短的提供商 URL。请及时下载 MP4,而不要只保存链接。 + + diff --git a/zh/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx b/zh/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx new file mode 100644 index 000000000..2460b698e --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx @@ -0,0 +1,187 @@ +--- +title: "将 Video Edit V1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 bfl/video-edit-v1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Video Edit V1" +translationSourceHash: 708e47c9 +translationFrom: development/comfy-router/models/black-forest-labs/video-edit-v1/code.mdx +translationBlockHashes: + "_intro": e7443ea9 + "Quick start": 5747cb6b + "Schema": e992b26e + "Examples": 9b07c268 +--- +{/* GENERATED FILE. Generated from router-schemas/bfl/video-edit-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/video-edit-v1` 的 API 参考文档,由 Comfy Router 从 Black Forest Labs 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `bfl/video-edit-v1` + +**端点:** `POST https://api.comfy.org/v2/models/bfl/video-edit-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/video-edit-v1", + { + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/video-edit-v1", { + prompt: "Remove the orange bucket.", + video: "https://example.com/clip.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/video-edit-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"Remove the orange bucket.\", \"video\": \"https://example.com/clip.mp4\"}" +``` + + +## Schema + +### 输入 + + + 编辑指令。指明需要更改的对象、场景、风格、屏幕文字或对话;未指明的内容都会被保留。 + + + + 输入和输出审核的阈值等级,0 为最严格。 + + 范围:`0` 到 `4` + + + + 要编辑的视频,可以是 HTTP(S) URL,也可以是 base64 编码的 MP4。来源素材最长 15 秒、最大 50 MiB,每一边至少 160 像素;高于 720p 的来源会被降采样到 720p。 + + +本 Schema 由 Router 在 `GET /v2/models/bfl/video-edit-v1/openapi.json` 提供,Router 在请求到达提供商之前,正是依据同一份文档来校验调用的。 + +### 输出 + + + 提供商报告的积分成本,任务进入 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 报告的生成进度,可选。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目承诺 `200` 响应必定携带 result,若 `result` 可空,就会退化为仅检查键是否存在。 + + + + 提供商报告的本次生成成本。这是 BFL 的数值,而非 Comfy 的收费。 + + 格式:`double` + + + + 提供商报告的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商报告的本次生成完成时间,为自 Unix 纪元起的秒数。出于与 `start_time` 相同的原因使用 `double`。 + + 格式:`double` + + + + 本次生成实际执行的提示词,即经过任何提示词上采样之后的结果。 + + + + 已生成资产的签名 URL。Router 会将资产重新托管到 Comfy 存储上并重写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的缓存记录中回放,因此后续轮询可能返回剩余有效期短至一小时的链接;若某个叶子节点的重新托管无法完成,则会保留 BFL 自己的短期分发 URL,视频大约两小时,图像大约十分钟。无论哪种情况链接都会过期,因此请下载资产,而不要保存 URL。 + + 格式:`uri` + + + + 本次生成使用的种子,无论是传入的还是由提供商选择的。声明为 `int64`,因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未指定格式的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商报告的本次生成开始时间,为自 Unix 纪元起的秒数。使用 `double` 而非 `float`:在当今的纪元数值附近,float32 的间隔约为 128 秒,会把一次生成的整个时间跨度坍缩为单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "Remove the orange bucket.", + "video": "https://example.com/clip.mp4" +} +``` + +### 输出 + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx b/zh/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx new file mode 100644 index 000000000..e259b8e52 --- /dev/null +++ b/zh/development/comfy-router/models/black-forest-labs/vto-v1/code.mdx @@ -0,0 +1,211 @@ +--- +title: "将 VTO V1 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 bfl/vto-v1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "VTO V1" +translationSourceHash: 39d9d687 +translationFrom: development/comfy-router/models/black-forest-labs/vto-v1/code.mdx +translationBlockHashes: + "_intro": 5449e6da + "Schema": fcb4652a +--- + +{/* GENERATED FILE. Generated from router-schemas/bfl/vto-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bfl/vto-v1` 的 API 参考文档,由 Black Forest Labs 的 Comfy Router 提供。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bfl/vto-v1` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bfl/vto-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bfl/vto-v1", + { + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bfl/vto-v1", { + garment: "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", + person: "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", + prompt: "TRY-ON: The person of image 1 wearing the garments of image 2.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bfl/vto-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"garment\": \"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\", \"person\": \"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\", \"prompt\": \"TRY-ON: The person of image 1 wearing the garments of image 2.\"}" +``` + + +## Schema + +### 输入 + + + 一件或多件服装的图像(内部映射到 input_image_2)。 + + + + 可选值:`jpeg`、`png`、`webp` + + + + 人物图像(内部映射到 input_image)。 + + + + 用于 VTO 生成的文本提示词。 + + + + 输入和输出审核的阈值。公开使用时介于 0 和 5 之间。 + + 范围:`0` 到 `5` + + + + 可选种子,用于结果复现。 + + + + 用于 webhook 签名校验的可选密钥。 + + + + 接收 webhook 通知的 URL。 + + 格式:`uri` + + +本文档由 Router 在 `GET /v2/models/bfl/vto-v1/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,正是用这同一份文档来校验调用。 + +### 输出 + + + 提供商上报的积分成本,任务进入 Ready 后填充。 + + 格式:`float` + + + + BFL 任务标识符。 + + + + BFL 上报的可选生成进度。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 已完成的生成结果。此处不可为空:该组件的 `required` 条目承诺 `200` 响应会携带结果,而可空的 `result` 会使其退化为仅检查键是否存在。 + + + + 提供商上报的本次生成成本。这是 BFL 的数字,而非 Comfy 的计费。 + + 格式:`double` + + + + 提供商上报的生成时长,单位为秒。 + + 格式:`double` + + + + 提供商上报的生成完成时间,以 Unix 纪元以来的秒数表示。与 `start_time` 同理使用 `double`。 + + 格式:`double` + + + + 生成实际运行的提示词,即经过任何提示词上采样之后的版本。 + + + + 已生成资产的签名 URL。Router 会把该资产重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 托管的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的备忘中重放,因此稍后轮询返回的 URL 可能仅剩一小时有效期;如果某个叶子节点无法完成重新托管,则保留 BFL 自己的短时效分发 URL:视频约两小时,图像约十分钟。无论哪种情况,链接都会过期,因此请下载资产,而不要存储该 URL。 + + 格式:`uri` + + + + 生成所使用的种子,无论是提供的还是由提供商选择的。声明为 `int64`,因为 BFL 会返回大于 2^31 的种子(例如 2784347701),而未加格式约束的 `integer` 在许多 SDK 生成器中会生成 32 位字段。 + + 格式:`int64` + + + + 提供商上报的生成开始时间,以 Unix 纪元以来的秒数表示。使用 `double` 而非 `float`:在当前纪元的数值附近,float32 的间距约为 128 秒,会把一次生成的完整时间跨度坍缩成单个解码值。 + + 格式:`double` + + + + 任务状态:Pending、Reasoning、Generating、Ready、Request Moderated、Content Moderated、Error 或 Task not found。 + + +## Examples + +### Input + +```json +{ + "garment": "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", + "person": "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", + "prompt": "TRY-ON: The person of image 1 wearing the garments of image 2." +} +``` + +### Output + +```json +{ + "cost": null, + "id": "b2e0c1a4-0f2f-4a55-9f2e-2f9a1c0d4e77", + "progress": null, + "result": { + "cost": null, + "duration": 3.4, + "end_time": 1767225603.4, + "prompt": "A watercolor painting of a lighthouse at dawn, soft light on the water", + "sample": "https://example.invalid/bfl/flux-pro-1.1/sample.png", + "seed": 2784347701, + "start_time": 1767225600 + }, + "status": "Ready" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/fibo/code.mdx b/zh/development/comfy-router/models/bria/fibo/code.mdx new file mode 100644 index 000000000..929ff257b --- /dev/null +++ b/zh/development/comfy-router/models/bria/fibo/code.mdx @@ -0,0 +1,214 @@ +--- +title: "将 Fibo 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 bria/fibo:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Fibo" +translationSourceHash: 0b7ac4fc +translationFrom: development/comfy-router/models/bria/fibo/code.mdx +translationBlockHashes: + "_intro": 08ef1a4b + "Quick start": ab430149 + "Schema": 90b7b8de + "Examples": 987e8ba6 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/fibo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/fibo` 的 API 参考文档,由 Comfy Router 从 Bria 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一个调用。 + +**模型 ID:** `bria/fibo` + +**端点:** `POST https://api.comfy.org/v2/models/bria/fibo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/fibo", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/fibo", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/fibo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## Schema + +### 输入 + + + 决定生成图像遵循指令的紧密程度。 + + 范围:`3` 至 `5` + + 格式:`float` + + + + 待编辑的来源图像。可公开访问的网址或 Base64 编码。接受 JPEG、JPG、PNG、WEBP 格式。必须恰好包含一项。 + + + + 基于文本的编辑指令(例如 "make the sky blue"、"add a cat")。必须提供 instruction 或 structured_instruction 之一。 + + + + 若为是,则针对指令中可能存在的知识产权内容返回警告。 + + + + 可选的遮罩图像网址或 Base64 编码。黑色区域将被保留,白色区域将被编辑。 + + + + 要使用的模型版本。Comfy Router 会从 `{model}` 路径段提供该值,因此在该处应省略;Bria 运行的值是 `FIBO`,当该字段缺失时 v1 路由同样默认使用该值。在此部分不受枚举约束:Router 会在调用方请求体校验完成之后写入该值。 + + + + 一个文本提示词,用于指定要从编辑后的图像中排除的概念、风格或对象。 + + + + 若为是,则当指令审核失败时返回 422。 + + + + 用于确定性生成的种子。若省略,则使用随机种子。 + + + + diffusion 步数。 + + 范围:`20` 至 `50` + + + + 一个包含 JSON 格式结构化编辑指令的字符串。若需精确、程序化的控制,请使用此项而非 instruction。 + + + + 若为是,则当图像或遮罩审核失败时返回 422。 + + + + 若为是,则当视觉输出审核失败时返回 422。 + + +生成自 Router 在 `GET /v2/models/bria/fibo/openapi.json` 提供的 schema,该文档与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅当 status 为 ERROR 时存在) + + + + 错误代码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅当 status 为 COMPLETED 时存在) + + + + 已生成/已编辑图像的网址。 + + + + 原始提示词。 + + + + 提示词的优化版本,或者当 Bria 在 COMPLETED 生成中未进行优化时为 null。可为空是因为该键是存在的并携带 null,而非被省略;在 bria/image-edit-gen-fill 上实测如此。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的网址。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/image-edit-erase/code.mdx b/zh/development/comfy-router/models/bria/image-edit-erase/code.mdx new file mode 100644 index 000000000..f93efb6f1 --- /dev/null +++ b/zh/development/comfy-router/models/bria/image-edit-erase/code.mdx @@ -0,0 +1,181 @@ +--- +title: "在 Comfy Router 中使用 Image Edit Erase" +description: "通过 Comfy Router 调用 bria/image-edit-erase:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Image Edit Erase" +translationSourceHash: 8b73ae29 +translationFrom: development/comfy-router/models/bria/image-edit-erase/code.mdx +translationBlockHashes: + "_intro": b56de2f2 + "Schema": 5c26377c + "Examples": d333bf78 +--- + +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-erase.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-erase` 的 API 参考文档,由 Bria 通过 Comfy Router 提供。 + +## Quick start + +Create a key in [your Comfy workspace](https://platform.comfy.org/profile/api-keys) and export it as `COMFY_API_KEY`. The Python and TypeScript snippets use the Comfy SDKs (`pip install comfy-sdk`, `npm install @comfyorg/sdk`); the cURL snippet is the same call over raw HTTP. + +**Model ID:** `bria/image-edit-erase` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-erase` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-erase", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-erase", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-erase \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\"}" +``` + + +## Schema + +### 输入 + + + 要编辑的图像。支持的输入类型为 Base64 编码字符串,或指向可公开访问的图像文件的 URL。接受的格式:JPEG、JPG、PNG、WEBP。 + + + + 定义要擦除区域的遮罩。Base64 编码字符串,或指向可公开访问的图像文件的 URL。白色像素 (255) 标记要移除的区域,黑色像素 (0) 则予以保留。 + + + + 提供的遮罩类型,为 "manual"(默认)或 "automatic"。 + + + + 控制输入图像中部分透明的区域是否在输出中保留。 + + + + 当为 false(默认)时,请求以异步方式处理。当为 true 时,API 会保持连接打开,直到处理完成。 + + + + 启用后,对输入视觉内容应用内容审核。如果图像未通过审核,返回 422。 + + + + 启用后,对结果视觉内容应用内容审核。如果输出未通过审核,返回 422。 + + +由 Router 在 `GET /v2/models/bria/image-edit-erase/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅在状态为 ERROR 时存在) + + + + 错误代码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在状态为 COMPLETED 时存在) + + + + 已生成/已编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;若为一次 COMPLETED 生成但 Bria 未进行优化,则为 null。之所以可为 null,是因为该键是存在的并携带 null,而非被省略;已在 bria/image-edit-gen-fill 上实际观察到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/zh/development/comfy-router/models/bria/image-edit-expand/code.mdx b/zh/development/comfy-router/models/bria/image-edit-expand/code.mdx new file mode 100644 index 000000000..42e8fe81c --- /dev/null +++ b/zh/development/comfy-router/models/bria/image-edit-expand/code.mdx @@ -0,0 +1,208 @@ +--- +title: "通过 Comfy Router 使用 Image Edit Expand" +description: "通过 Comfy Router 调用 bria/image-edit-expand:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Image Edit Expand" +translationSourceHash: 4dcd1799 +translationFrom: development/comfy-router/models/bria/image-edit-expand/code.mdx +translationBlockHashes: + "_intro": 2ca3ddec + "Quick start": 6cd79b35 + "Schema": bb25be53 + "Examples": 522e0b99 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-expand.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Bria 通过 Comfy Router 提供的 `bria/image-edit-expand` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `bria/image-edit-expand` + +**端点:** `POST https://api.comfy.org/v2/models/bria/image-edit-expand` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-expand", + { + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-expand", { + aspect_ratio: "3:2", + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-expand \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"3:2\", \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## Schema + +### 输入 + + + 展开后画布的比例,可以是预定义的比例字符串("1:1"、"2:3"、"3:2"、"3:4"、"4:3"、"4:5"、"5:4"、"9:16"、"16:9"),也可以是介于 0.5 到 3.0 之间的浮点数。提供该参数时,canvas_size、original_image_size 和 original_image_location 将被忽略。 + + 范围:`0.5` 到 `3` + + + + 展开后画布的宽度和高度,单位为像素。默认为 [1000, 1000]。画布最大面积为 5000x5000 像素。 + + + + 要展开的图像。支持的输入类型为 Base64 编码的字符串,或指向可公开访问的图像文件的 URL。可接受的格式为 JPEG、JPG、PNG、WEBP。 + + + + 一段文本提示词,用于指定要从展开区域中排除的概念、风格或对象。 + + + + 原始图像左上角在画布上的位置 [x, y]。当未提供 aspect_ratio 时,必须与 original_image_size 一同提供。 + + + + 放置在画布上的原始图像的宽度和高度。当未提供 aspect_ratio 时,必须与 original_image_location 一同提供。 + + + + 控制是否在输出中保留输入图像中的部分透明区域。 + + + + 用于引导展开区域中所生成内容的文本提示词。省略时自动生成。 + + + + 启用后,对提示词进行内容审核。如果提示词未通过审核,将返回 422。 + + + + 用于确定性生成的种子。如果省略,则使用随机种子。 + + + + 为 false(默认值)时,请求以异步方式处理。为 true 时,API 会保持连接打开,直到处理完成。 + + + + 启用后,对输入视觉内容进行内容审核。如果图像未通过审核,将返回 422。 + + + + 启用后,对结果视觉内容进行内容审核。如果输出未通过审核,将返回 422。 + + +以上内容根据 Router 在 `GET /v2/models/bria/image-edit-expand/openapi.json` 所提供的 schema 生成,这也是在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 错误对象(仅在 status 为 ERROR 时存在) + + + + 错误代码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在 status 为 COMPLETED 时存在) + + + + 已生成/已编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;若 Bria 在一次 COMPLETED 的生成中未做优化,则为 null。之所以可为 null,是因为该键是存在的并携带 null,而非被省略;已在 bria/image-edit-gen-fill 上实际观察到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "3:2", + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx b/zh/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx new file mode 100644 index 000000000..23d35d85b --- /dev/null +++ b/zh/development/comfy-router/models/bria/image-edit-gen-fill/code.mdx @@ -0,0 +1,200 @@ +--- +title: "将 Image Edit Gen Fill 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 bria/image-edit-gen-fill:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Image Edit Gen Fill" +translationSourceHash: 1dda204b +translationFrom: development/comfy-router/models/bria/image-edit-gen-fill/code.mdx +translationBlockHashes: + "_intro": b36f2810 + "Quick start": 19dde7b5 + "Schema": 6d9d5342 + "Examples": 1d258985 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-gen-fill.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-gen-fill` 的 API 参考,由 Comfy Router 提供,来源为 Bria。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `bria/image-edit-gen-fill` + +**端点:** `POST https://api.comfy.org/v2/models/bria/image-edit-gen-fill` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-gen-fill", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-gen-fill", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + mask: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + prompt: "a small green leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-gen-fill \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"mask\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==\", \"prompt\": \"a small green leaf\"}" +``` + + +## Schema + +### 输入 + + + 要编辑的图像。支持的输入类型为 Base64 编码字符串,或指向可公开访问的图像文件的 URL。接受的格式为 JPEG、JPG、PNG、WEBP。 + + + + 定义填充区域的遮罩。可以是 Base64 编码字符串,或指向可公开访问的图像文件的 URL。白色像素(255)标记要生成内容的区域,黑色像素(0)则保留不变。 + + + + 用于指定要从生成区域中排除的概念、风格或对象的文本提示词。 + + + + 控制是否在输出中保留输入图像里部分透明的区域。 + + + + 描述要在遮罩区域内生成什么内容的文本。 + + + + 启用后,会对提示词应用内容审核。若提示词未通过审核,则返回 422。 + + + + 为 true(默认值)时,会自动调整提示词以获得最佳生成效果。 + + + + 用于确定性生成的种子。若省略,则使用随机种子。 + + + + 为 false(默认值)时,请求以异步方式处理。为 true 时,API 会保持连接打开,直到请求完成。 + + + + 启用后,会对输入视觉内容应用内容审核。若图像未通过审核,则返回 422。 + + + + 启用后,会对结果视觉内容应用内容审核。若输出未通过审核,则返回 422。 + + +根据 Router 在 `GET /v2/models/bria/image-edit-gen-fill/openapi.json` 所提供的 schema 生成,该文档与它在请求送达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅当 status 为 ERROR 时存在) + + + + 错误代码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅当 status 为 COMPLETED 时存在) + + + + 已生成/已编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;对于 Bria 未做优化的已完成生成,则为 null。之所以可空,是因为该键是存在的并携带 null,而非被省略;已在 bria/image-edit-gen-fill 上实测观察到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "mask": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAB+UlEQVR42u3TMQ0AAAzDsPIn3d7DMBtCpKTwWCTAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAYAA4ABwABgADAAGAAMAAbAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAwABgADgAHAAGAAMAAYAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGAAOAAcAAYAAwABgADAAGgGvctyzUB/Dz3wAAAABJRU5ErkJggg==", + "prompt": "a small green leaf" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + diff --git a/zh/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx b/zh/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx new file mode 100644 index 000000000..8717018e2 --- /dev/null +++ b/zh/development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx @@ -0,0 +1,178 @@ +--- +title: "搭配 Comfy Router 使用 Image Edit Increase Resolution" +description: "通过 Comfy Router 调用 bria/image-edit-increase-resolution:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Image Edit Increase Resolution" +translationSourceHash: 3b8485d3 +translationFrom: development/comfy-router/models/bria/image-edit-increase-resolution/code.mdx +translationBlockHashes: + "_intro": c9ce8ff8 + "Quick start": 3ac2d450 + "Schema": 812f7799 + "Examples": af129535 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-increase-resolution.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-increase-resolution` 的 API 参考文档,该模型由 Comfy Router 从 Bria 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `bria/image-edit-increase-resolution` + +**端点:** `POST https://api.comfy.org/v2/models/bria/image-edit-increase-resolution` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-increase-resolution", + { + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-increase-resolution", { + desired_increase: 2, + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-increase-resolution \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"desired_increase\": 2, \"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## Schema + +### 输入 + + + 要应用的分辨率倍数。支持的值为 2 和 4。最大输出分辨率为 8192x8192。 + + + + 要放大的图像。支持的输入类型为 Base64 编码字符串或指向可公开访问的图像文件的 URL。接受的格式为 JPEG、JPG、PNG、WEBP。 + + + + 控制输入图像中的部分透明区域是否保留在输出中。 + + + + 当为否(默认值)时,请求以异步方式处理。当为是时,API 会保持连接打开,直到处理完成。 + + + + 启用后,对输入视觉内容应用内容审核。如果图像未通过审核,则返回 422。 + + + + 启用后,对结果视觉内容应用内容审核。如果输出未通过审核,则返回 422。 + + +根据 Router 在 `GET /v2/models/bria/image-edit-increase-resolution/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅在状态为 ERROR 时存在) + + + + 错误代码。 + + + + 附加错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在状态为 COMPLETED 时存在) + + + + 已生成/已编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;对于 Bria 未进行优化的已完成生成任务,该值为 null。之所以可为 null,是因为该键是存在的并携带 null,而不是被省略;此行为已在 bria/image-edit-gen-fill 上实际观测到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "desired_increase": 2, + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-increase-resolution/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/image-edit-remove-background/code.mdx b/zh/development/comfy-router/models/bria/image-edit-remove-background/code.mdx new file mode 100644 index 000000000..90608882e --- /dev/null +++ b/zh/development/comfy-router/models/bria/image-edit-remove-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "通过 Comfy Router 使用 Image Edit Remove Background" +description: "通过 Comfy Router 调用 bria/image-edit-remove-background:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "图像编辑移除背景" +translationSourceHash: da218b61 +translationFrom: development/comfy-router/models/bria/image-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": f6354a22 + "Quick start": de1d94f2 + "Schema": 676248d9 + "Examples": acf012fe +--- +{/* GENERATED FILE. Generated from router-schemas/bria/image-edit-remove-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/image-edit-remove-background` 的 API 参考,由 Comfy Router 提供,模型来自 Bria。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `bria/image-edit-remove-background` + +**Endpoint:** `POST https://api.comfy.org/v2/models/bria/image-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/image-edit-remove-background", + { + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/image-edit-remove-background", { + image: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/image-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"}" +``` + + +## Schema + +### 输入 + + + 要移除背景的图像。支持的输入类型为 Base64 编码字符串,或指向可公开访问的图像文件的 URL。接受的格式为 JPEG、JPG、PNG、WEBP。 + + + + 控制输入图像中的部分透明区域在背景移除后是否保留在输出中。 + + + + 为否(默认值)时,请求以异步方式处理。为是时,API 会保持连接打开,直到处理完成。 + + + + 启用后,对输入视觉内容应用内容审核。若图像未通过审核,返回 422。 + + + + 启用后,对结果视觉内容应用内容审核。若输出未通过审核,返回 422。 + + +由 Router 在 `GET /v2/models/bria/image-edit-remove-background/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅当状态为 ERROR 时存在) + + + + 错误代码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅当状态为 COMPLETED 时存在) + + + + 已生成/编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;若 Bria 在已完成的生成中未进行优化,则为 null。之所以可为空,是因为该键存在并携带 null,而非被省略;此行为已在 bria/image-edit-gen-fill 上实际观察到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "image_url": "https://example.invalid/bria/image-edit-remove-background/generated.png", + "seed": 42 + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/structured-instruction/code.mdx b/zh/development/comfy-router/models/bria/structured-instruction/code.mdx new file mode 100644 index 000000000..5531a3e15 --- /dev/null +++ b/zh/development/comfy-router/models/bria/structured-instruction/code.mdx @@ -0,0 +1,185 @@ +--- +title: "搭配 Comfy Router 使用结构化指令" +description: "通过 Comfy Router 调用 bria/structured-instruction:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "结构化指令" +translationSourceHash: ab1ce344 +translationFrom: development/comfy-router/models/bria/structured-instruction/code.mdx +translationBlockHashes: + "_intro": 89417472 + "Quick start": 2b743a21 + "Schema": ffdaeadf + "Examples": a6f75e62 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bria/structured-instruction.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/structured-instruction` 的 API 参考,由 Comfy Router 从 Bria 提供。 + + + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起相同的调用。 + +**模型 ID:** `bria/structured-instruction` + +**端点:** `POST https://api.comfy.org/v2/models/bria/structured-instruction` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/structured-instruction", + { + "images": ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + "instruction": "make the background light blue", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/structured-instruction", { + images: ["iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg=="], + instruction: "make the background light blue", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/structured-instruction \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"images\": [\"iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\"], \"instruction\": \"make the background light blue\"}" +``` + + +## Schema + +### 输入 + + + 待编辑的来源图像。可以是公开可访问的 URL 或 Base64 编码。必须恰好包含一个元素。 + + + + 必填。基于文本的编辑指令(例如 "make the sky blue"、"add a cat")。 + + + + 若为是,当指令中存在潜在 IP 内容时返回警告。 + + + + 可选的遮罩图像 URL 或 Base64 编码。黑色区域将被保留,白色区域将被编辑。 + + + + 若为是,指令审核失败时返回 422。 + + + + 用于确定性生成的种子。若省略,则使用随机种子。 + + + + 若为是,图像或遮罩审核失败时返回 422。 + + +该内容由 Router 在 `GET /v2/models/bria/structured-instruction/openapi.json` 提供的 schema 生成,与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误对象(仅在 status 为 ERROR 时出现) + + + + 错误代码。 + + + + 附加错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在 status 为 COMPLETED 时出现) + + + + 已生成或已编辑图像的图片网址。 + + + + 原始提示词。 + + + + 提示词的优化版本;若 Bria 在已完成的生成中未做优化,则为 null。之所以可为空,是因为该键是存在且携带 null,而不是被省略;这一现象在 bria/image-edit-gen-fill 上实测观察到。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的网址。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "images": [ + "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==" + ], + "instruction": "make the background light blue" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "structured_prompt": "{\"edit\":\"replace the background\",\"background\":\"light blue\"}" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/video-edit-green-screen/code.mdx b/zh/development/comfy-router/models/bria/video-edit-green-screen/code.mdx new file mode 100644 index 000000000..7559e4b60 --- /dev/null +++ b/zh/development/comfy-router/models/bria/video-edit-green-screen/code.mdx @@ -0,0 +1,172 @@ +--- +title: "配合 Comfy Router 使用 Video Edit Green Screen" +description: "通过 Comfy Router 调用 bria/video-edit-green-screen:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Video Edit Green Screen" +translationSourceHash: a0c7be90 +translationFrom: development/comfy-router/models/bria/video-edit-green-screen/code.mdx +translationBlockHashes: + "_intro": b4683e93 + "Quick start": c3a2d6fa + "Schema": 5008e45d + "Examples": 13c57b2c +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bria/video-edit-green-screen.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-green-screen` 的 API 参考,由 Comfy Router 提供,模型来自 Bria。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原生 HTTP 发起相同的调用。 + +**模型 ID:** `bria/video-edit-green-screen` + +**端点:** `POST https://api.comfy.org/v2/models/bria/video-edit-green-screen` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-green-screen", + { + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-green-screen", { + green_shade: "broadcast_green", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-green-screen \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"green_shade\": \"broadcast_green\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## 模式 {#schema} + +### 输入 + + + 用于抠像、应用在前景后方的纯色背景底色。默认值为 broadcast_green。 + + 可选值:`broadcast_green`、`chroma_green`、`blue_screen` + + + + 输出容器与编解码器预设。 + + 可选值:`mp4_h264`、`mp4_h265`、`webm_vp9`、`mov_h265`、`mov_proresks`、`mkv_h264`、`mkv_h265`、`mkv_vp9`、`gif` + + + + 是否保留输入视频中的音频。 + + + + 输入视频的公开可访问 URL。支持的输入分辨率最高为 16000x16000 (16K)。最大时长为 60 秒。 + + +该模式由 Router 在 `GET /v2/models/bria/video-edit-green-screen/openapi.json` 提供的 schema 生成,Router 在请求送达提供商之前,会用同一份文档来校验调用。 + +### 输出 + + + 错误对象(仅在 status 为 ERROR 时存在) + + + + 错误码。 + + + + 额外的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在 status 为 COMPLETED 时存在) + + + + 已生成/已编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;若某次 COMPLETED 的生成 Bria 未进行优化,则为 null。可为空是因为该键是存在的并携带 null,而非被省略;在 bria/image-edit-gen-fill 上实测观察到。 + + + + 生成所用的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可选值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "green_shade": "broadcast_green", + "video": "https://example.com/input.mp4" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-green-screen/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + diff --git a/zh/development/comfy-router/models/bria/video-edit-remove-background/code.mdx b/zh/development/comfy-router/models/bria/video-edit-remove-background/code.mdx new file mode 100644 index 000000000..d4af0b017 --- /dev/null +++ b/zh/development/comfy-router/models/bria/video-edit-remove-background/code.mdx @@ -0,0 +1,178 @@ +--- +title: "使用 Comfy Router 进行视频编辑移除背景" +description: "通过 Comfy Router 调用 bria/video-edit-remove-background:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "视频编辑移除背景" +translationSourceHash: 1db0833a +translationFrom: development/comfy-router/models/bria/video-edit-remove-background/code.mdx +translationBlockHashes: + "_intro": 6b77260c + "Quick start": 05321a14 + "Schema": c0c1ab12 + "Examples": 83ff7312 +--- +{/* 生成文件。由 `pnpm code-pages:gen` 从 router-schemas/bria/video-edit-remove-background.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-remove-background` 的 API 参考文档,由 Bria 通过 Comfy Router 提供。 + + + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `bria/video-edit-remove-background` + +**端点:** `POST https://api.comfy.org/v2/models/bria/video-edit-remove-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-remove-background", + { + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-remove-background", { + background_color: "Transparent", + output_container_and_codec: "webm_vp9", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-remove-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_color\": \"Transparent\", \"output_container_and_codec\": \"webm_vp9\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## Schema + +### 输入 + + + 输出视频的背景颜色。如果为 Transparent,输出编解码器必须支持透明度。 + + 可选值:`Transparent`、`Black`、`White`、`Gray`、`Red`、`Green`、`Blue`、`Yellow`、`Cyan`、`Magenta`、`Orange` + + + + 输出容器与编解码器预设。 + + 可选值:`mp4_h264`、`mp4_h265`、`webm_vp9`、`mov_h265`、`mov_proresks`、`mkv_h264`、`mkv_h265`、`mkv_vp9`、`gif` + + + + 是否保留输入视频的音频。 + + + + 输入视频的可公开访问 URL。支持的输入分辨率最高可达 16000x16000(16K)。最大时长为 60 秒。 + + +由 Router 在 `GET /v2/models/bria/video-edit-remove-background/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 错误对象(仅在 status 为 ERROR 时存在) + + + + 错误码。 + + + + 附加错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅在 status 为 COMPLETED 时存在) + + + + 已生成/编辑图像的 URL。 + + + + 原始提示词。 + + + + 提示词的优化版本;若 Bria 在 COMPLETED 生成中未做优化,则为 null。可为空是因为该键为 PRESENT 并携带 null,而不是被省略;在 bria/image-edit-gen-fill 上实际观察到该情况。 + + + + 用于生成的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可选值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "background_color": "Transparent", + "output_container_and_codec": "webm_vp9", + "video": "https://example.com/input.mp4" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-remove-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/bria/video-edit-replace-background/code.mdx b/zh/development/comfy-router/models/bria/video-edit-replace-background/code.mdx new file mode 100644 index 000000000..f44bd9bec --- /dev/null +++ b/zh/development/comfy-router/models/bria/video-edit-replace-background/code.mdx @@ -0,0 +1,171 @@ +--- +title: "使用 Comfy Router 进行视频编辑替换背景" +description: "通过 Comfy Router 调用 bria/video-edit-replace-background:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "视频编辑替换背景" +translationSourceHash: d12969c8 +translationFrom: development/comfy-router/models/bria/video-edit-replace-background/code.mdx +translationBlockHashes: + "_intro": 5955c067 + "Quick start": e405be35 + "Schema": 12e66309 + "Examples": 18e1a850 +--- +{/* GENERATED FILE. Generated from router-schemas/bria/video-edit-replace-background.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`bria/video-edit-replace-background` 的 API 参考,由 Comfy Router 提供,来源于 Bria。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `bria/video-edit-replace-background` + +**端点:** `POST https://api.comfy.org/v2/models/bria/video-edit-replace-background` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "bria/video-edit-replace-background", + { + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("bria/video-edit-replace-background", { + background_url: "https://example.com/background.mp4", + video: "https://example.com/input.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/bria/video-edit-replace-background \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"background_url\": \"https://example.com/background.mp4\", \"video\": \"https://example.com/input.mp4\"}" +``` + + +## Schema + +### 输入 + + + 可公开访问的背景素材(图像或视频)URL,用于合成到前景之后。必须与前景的宽高比匹配。 + + + + 输出容器与编解码器预设。 + + 可能的值:`mp4_h264`、`mp4_h265`、`webm_vp9`、`mov_h265`、`mov_proresks`、`mkv_h264`、`mkv_h265`、`mkv_vp9`、`gif` + + + + 是否保留输入(前景)视频中的音频。 + + + + 可公开访问的输入(前景)视频 URL。输入分辨率最高支持 16000x16000(16K)。最大时长为 60 秒。 + + +根据 Router 在 `GET /v2/models/bria/video-edit-replace-background/openapi.json` 提供的 schema 生成,这也是 Router 在请求到达提供商之前校验调用时所依据的同一份文档。 + +### 输出 + + + 错误对象(仅当状态为 ERROR 时存在) + + + + 错误码。 + + + + 补充的错误详情。 + + + + 报错信息。 + + + + 请求的唯一标识符。 + + + + 结果对象(仅当状态为 COMPLETED 时存在) + + + + 已生成/编辑后图像的 URL。 + + + + 原始提示词。 + + + + 提示词的精炼版本;若为 Bria 未进行精炼的 COMPLETED 生成,则为 null。之所以可为 null,是因为该键是存在并携带 null,而非被省略;已在 bria/image-edit-gen-fill 上实际观察到。 + + + + 生成所用的种子。 + + + + 详细的 JSON 结构化提示词。 + + + + 已生成视频的 URL。 + + + + 请求的当前状态。 + + 可能的值:`IN_PROGRESS`、`COMPLETED`、`ERROR`、`UNKNOWN` + + +## 示例 + +### 输入 + +```json +{ + "background_url": "https://example.com/background.mp4", + "video": "https://example.com/input.mp4" +} +``` + +### 输出 + +```json +{ + "request_id": "0b3f9d7e-2c41-4a8b-9f10-6d5c8e2a4b71", + "result": { + "video_url": "https://example.invalid/bria/video-edit-replace-background/generated.mp4" + }, + "status": "COMPLETED" +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx new file mode 100644 index 000000000..7de5a357c --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx @@ -0,0 +1,345 @@ +--- +title: "使用 Dreamina Seedance 2.0 260128 与 Comfy Router" +description: "通过 Comfy Router 调用 byteplus/dreamina-seedance-2-0-260128:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Dreamina Seedance 2.0 260128" +translationSourceHash: 6be1e5f1 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-260128/code.mdx +translationBlockHashes: + "_intro": 9fd49814 + "Quick start": 6f5f6b3e + "Schema": d7b1deb9 + "Examples": 6e09b6c0 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/dreamina-seedance-2-0-260128.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-260128` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `byteplus/dreamina-seedance-2-0-260128` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须包含至少 1 张图像或 1 段视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图片网址:请确保图片网址可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型输入的文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词之后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认值:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认值:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认值:5) +- --framepersecond (--fps):24(默认值:24) +- --watermark (--wm):true/false(默认值:false) +- --seed (--seed):-1 至 2^32-1(默认值:-1) +- --camerafixed (--cf):true/false(默认值:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长,单位为秒。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 至 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 至 `259200` + + + + 由 Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。通过 v1 直接调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供该值:代理会拒绝任何其他值,若省略该值则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广,文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 生成视频的比例。Seedance 2.0 和 2.0 fast、1.5 pro 默认值:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认值:720p。Seedance 1.0 pro 和 pro-fast 默认值:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。true:返回已生成视频的最后一帧图像。将此参数设置为 true 后,你可以通过调用查询视频生成任务信息来获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不包含水印。使用此参数可以生成多个连续视频:将前一个已生成视频的最后一帧作为下一个视频任务的第一帧,从而快速生成多个连续视频。 +false:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + Range: `-1` to `4294967295` + + + + 用于处理的服务层级。Seedance 2.5、2.0 与 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +由 Router 在 `GET /v2/models/byteplus/dreamina-seedance-2-0-260128/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档为同一份。### 输出 + + + 视频生成任务完成后返回的输出内容,其中包含输出视频的下载 URL,并在 BytePlus 返回时,还包含其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;此处其他所有字段均为 BytePlus 自有字段。可为空:BytePlus 会在任务结束 24 小时后清除这些 URL,之后轮询到的成功文档可能不带 `content` 或其为 null。 + + + + 所生成视频最后一帧的下载 URL,仅在请求设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,Router 会重新托管它收到的任意字节,并根据上游 Content-Type 或内容嗅探来确定其类型,只有在两者都失败时才回退为 `image/jpeg`。Router 会将最后一帧重新托管到 Comfy 存储并改写此字段,因此它通常是一个有效期最长 24 小时的 Comfy 签名 URL:签发时按 24 小时签名,并从 23 小时的备忘录中重放,因此之后轮询返回的 URL 可能仅剩 1 小时有效期。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务结束 24 小时后清除该 URL。无论哪种情况链接都会过期,因此请下载该帧,而不要保存 URL。 + + + + 所生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内时返回。Seedance 模型更常将其作为 `content` 的顶层同级字段返回,详见顶层 `output_format` 字段;Router 会读取实际存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并改写此字段,因此它通常是一个有效期最长 24 小时的 Comfy 签名 URL:签发时按 24 小时签名,并从 23 小时的备忘录中重放,因此之后轮询返回的 URL 可能仅剩 1 小时有效期。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务结束 24 小时后清除该 URL,并且在某些模型上将下载次数限制为 100 次。无论哪种情况链接都会过期,因此请下载该视频,而不要保存 URL。 + + + + 任务创建的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 所生成视频的时长,单位为秒。之所以声明为 number 而非 integer,是因为 BytePlus 在这方面并不一致:已观察到视频任务返回整数秒,而 BytePlus 其他相关接口会报告带小数的时长,因此客户端不能假定其为整数值。这是 BytePlus 自有字段,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,则返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 所生成视频的容器格式(mp4 或 mov),在顶层作为 `content` 的同级字段返回,这正是 Seedance 视频任务查询返回它的位置。BytePlus 自有字段,原样转发。 + + + + 所生成视频的分辨率,例如 `1080p`。BytePlus 自有字段,在成功的视频任务中返回并原样转发。 + + + + 该任务实际使用的生成种子。BytePlus 自有字段,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认为 0。因此 total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx new file mode 100644 index 000000000..5fb0e14da --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx @@ -0,0 +1,345 @@ +--- +title: "使用 Comfy Router 调用 Dreamina Seedance 2.0 Fast 260128" +description: "通过 Comfy Router 调用 byteplus/dreamina-seedance-2-0-fast-260128:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Dreamina Seedance 2.0 Fast 260128" +translationSourceHash: 9cf630ff +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-fast-260128/code.mdx +translationBlockHashes: + "_intro": 7c02160b + "Quick start": 16e12af8 + "Schema": 9b41db67 + "Examples": 952ee859 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-0-fast-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 BytePlus 提供的 `byteplus/dreamina-seedance-2-0-fast-260128` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `byteplus/dreamina-seedance-2-0-fast-260128` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-fast-260128", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-fast-260128", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-fast-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## 架构 + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 模型用于生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须至少包含 1 张图像或 1 个视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图像 URL:请确保该图像 URL 可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长(秒)。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 至 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 至 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接以 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供该参数;代理会拒绝任何其他值,若省略则返回 400。它不在本架构的 `required` 列表中,是因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段中填充它,因此 Router 调用方可省略。 + + + + 仅 Seedance 2.5。输出视频的封装格式。 +mp4:通用封装格式(H.264/AAC,yuv420p),兼容性广泛且文件大小更小。 +mov:专业封装格式(H.264 High 4:4:4 Predictive/PCM,yuv444p),色彩精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 生成视频的宽高比例。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。是:返回已生成视频的最后一帧图像。将此参数设置为 是 之后,您可以通过调用"查询视频生成任务的信息"来获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成的视频一致,且不包含水印。使用此参数可以生成多个连续的视频:将前一个已生成视频的最后一帧用作下一个视频任务的第一帧,从而快速生成多个连续视频。 +否:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 到 `4294967295` + + + + 处理所使用的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成的视频是否包含水印。 + + +本文档由 Router 在 `GET /v2/models/byteplus/dreamina-seedance-2-0-fast-260128/openapi.json` 提供的 schema 生成,该 schema 与请求到达提供商之前 Router 用于校验调用所依据的文档相同。### 输出 + + + 视频生成任务完成后返回的输出,其中包含输出视频的下载 URL,以及(当 BytePlus 返回该字段时)其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管(RE-HOSTED)到 Comfy 存储上;此处的其他所有字段均来自 BytePlus 本身。可为空:BytePlus 会在任务结束 24 小时后清除这些 URL,因此在此之后轮询到的已成功文档中,`content` 可能缺失或为 null。 + + + + 已生成视频最后一帧的下载 URL,仅当请求中设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,Router 会重新托管它实际收到的字节,并根据上游 Content-Type 或内容嗅探来确定其类型,只有当两者都失败时才会最后回退到 `image/jpeg`。Router 会将最后一帧重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时签名有效期为 24 小时,并从 23 小时的缓存中重放,因此稍后轮询可能返回仅剩一小时有效期的 URL。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务结束 24 小时后将其清除。无论哪种情况,链接都会过期,因此请下载该帧,而不要存储 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内部时出现。Seedance 模型更常将其作为 `content` 的顶层同级字段返回(参见顶层的 `output_format` 字段),Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时签名有效期为 24 小时,并从 23 小时的缓存中重放,因此稍后轮询可能返回仅剩一小时有效期的 URL。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务结束 24 小时后将其清除,并在部分模型上将下载次数限制为 100 次。无论哪种情况,链接都会过期,因此请下载视频,而不要存储 URL。 + + + + 任务创建的时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 已生成视频的时长,以秒为单位。声明为 number 而非 integer,因为 BytePlus 在这点上并不一致:观察到视频任务返回整数秒,而 BytePlus 其他同类接口会返回小数时长,因此客户端不能假定其为整数值。该字段来自 BytePlus 本身,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 已生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回:Seedance 视频任务查询就是在这里返回该字段。该字段来自 BytePlus 本身,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。该字段来自 BytePlus 本身,在成功的视频任务中返回并原样转发。 + + + + 任务实际使用的生成种子。该字段来自 BytePlus 本身,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 本次请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认为 0。因此,total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-fast-260128", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx new file mode 100644 index 000000000..abae35ae3 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx @@ -0,0 +1,345 @@ +--- +title: "通过 Comfy Router 使用 Dreamina Seedance 2.0 Mini" +description: "通过 Comfy Router 调用 byteplus/dreamina-seedance-2-0-mini:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Dreamina Seedance 2.0 Mini" +translationSourceHash: bfc609db +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-0-mini/code.mdx +translationBlockHashes: + "_intro": cad8bfca + "Quick start": 8635ce8a + "Schema": 4588f61a + "Examples": 8337a2e0 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/dreamina-seedance-2-0-mini.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-0-mini` 的 API 参考,由 Comfy Router 提供,来源为 BytePlus。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `byteplus/dreamina-seedance-2-0-mini` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-0-mini", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-0-mini", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-0-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须至少包含 1 个图像或视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或资产 ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +资产 ID:格式为 asset://\ + + + + + + + + 用于图生视频的图像内容(当 type 为 "image_url" 时) +图片 URL:请确保图片 URL 可访问。 +Base64 编码的内容:格式必须为 data:image/\;base64,\ +资产 ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可能的值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中文和英文字符描述要生成的视频。 + +参数(可选):在文本提示词之后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可能的值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或资产 ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +资产 ID:格式为 asset://\ + + + + 视频时长,单位为秒。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。已生成的视频是否包含与画面同步的音频。 +true:模型输出的视频带有同步音频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接通过 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供该参数:代理会拒绝任何其他值,省略该参数时也会返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充该值,因此 Router 调用方会省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:常规容器(H.264/AAC,yuv420p),兼容性广泛且文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可能的值:`mp4`、`mov` + + + + 已生成视频的比例。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可能的值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可能的值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。是:返回已生成视频的尾帧图像。将此参数设置为是后,可通过调用查询视频生成任务信息接口获取尾帧图像。尾帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不带水印。使用此参数可以生成多个连续视频:将前一个已生成视频的尾帧作为下一个视频任务的首帧,从而快速生成多个连续视频。 +否:不返回已生成视频的尾帧图像。 + + + + 用于控制随机性的种子整数。取值范围:[-1, 2^32-1]。使用 -1 表示随机种子。 + + 取值范围:`-1` 到 `4294967295` + + + + 处理所用的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +本文档由 Router 在 `GET /v2/models/byteplus/dreamina-seedance-2-0-mini/openapi.json` 提供的 schema 生成,该 schema 也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 视频生成任务完成后的输出内容。其中包含输出视频的下载 URL;当 BytePlus 返回时,还包含其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上,此处的其他所有字段均来自 BytePlus 本身。可为空:BytePlus 会在任务结束 24 小时后清除这些 URL,因此在此之后轮询一个已成功的文档时,`content` 可能不存在或为 null。 + + + + 已生成视频最后一帧的下载 URL。当请求设置了 `return_last_frame` 时返回。请勿根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,而 Router 会重新托管它接收到的任意字节,并依据上游的 Content-Type 或内容嗅探来确定其类型,仅当两者都失败时才将 `image/jpeg` 作为最后兜底。Router 会将最后一帧重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时。该 URL 在签发时按 24 小时签名,并从一份 23 小时的备忘中重放,所以稍后轮询可能返回一个仅剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务结束 24 小时后清除它。无论哪种情况,链接都会过期,因此请下载该帧,而不要存储 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内时返回。Seedance 系列模型更常将其作为 `content` 的顶层同级字段返回,请参见顶层的 `output_format` 字段;Router 会读取两者中实际存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时。该 URL 在签发时按 24 小时签名,并从一份 23 小时的备忘中重放,所以稍后轮询可能返回一个仅剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务结束 24 小时后清除它,并且在某些模型上将其下载次数限制为 100 次。无论哪种情况,链接都会过期,因此请下载该视频,而不要存储 URL。 + + + + 任务的创建时间。该值为 UNIX 时间戳,单位为秒。 + + + + 已生成视频的时长,单位为秒。声明为 number 而非 integer,是因为 BytePlus 对此并不一致:视频任务曾被观察到返回整数秒,而 BytePlus 的其他相关接口会报告带小数的时长,因此客户端不应假定其为整数值。这是 BytePlus 自己的字段,在视频任务成功时返回并原样转发。 + + + + 错误信息。如果任务成功,则返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 该任务所使用的模型名称与版本 + + + + 已生成视频的容器格式(mp4 或 mov),在顶层作为 `content` 的同级字段返回,这正是 Seedance 视频任务查询返回它的位置。这是 BytePlus 自己的字段,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自己的字段,在视频任务成功时返回并原样转发。 + + + + 该任务实际使用的生成种子。这是 BytePlus 自己的字段,在视频任务成功时返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的取值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务的最后更新时间。该值为 UNIX 时间戳,单位为秒。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认值为 0。因此 total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-0-mini-260615", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx new file mode 100644 index 000000000..0187817d8 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx @@ -0,0 +1,345 @@ +--- +title: "使用 Dreamina Seedance 2.5 260628 与 Comfy Router" +description: "通过 Comfy Router 调用 byteplus/dreamina-seedance-2-5-260628:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Dreamina Seedance 2.5 260628" +translationSourceHash: 8b6f07c0 +translationFrom: development/comfy-router/models/byteplus/dreamina-seedance-2-5-260628/code.mdx +translationBlockHashes: + "_intro": a9ab3ace + "Quick start": e9d4aa36 + "Schema": d42dc4e9 + "Examples": 718a5264 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/dreamina-seedance-2-5-260628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/dreamina-seedance-2-5-260628` 的 API 参考文档,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 {#quick-start} + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `byteplus/dreamina-seedance-2-5-260628` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/dreamina-seedance-2-5-260628", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/dreamina-seedance-2-5-260628", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频:必须至少包含 1 张图像或视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式 data:audio/\;base64,\ +Asset ID:格式 asset://\ + + + + + + + + 用于图生视频的图像内容(当 type 为 "image_url" 时) +图片网址:请确保该图片网址可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式 asset://\ + + + + 内容项的角色/位置。 +图像:first_frame、last_frame 或 reference_image。 +视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可能的值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 供模型使用的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可能的值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式 asset://\ + + + + 视频时长(秒)。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值(秒)。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带有同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供该参数:代理会拒绝任何其他值,省略该参数则会返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方可以省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广泛,文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可能的值:`mp4`、`mov` + + + + 已生成视频的比例。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可能的值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可能的值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。是:返回已生成视频的最后一帧图像。将此参数设置为是后,可通过调用“查询视频生成任务信息”来获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不包含水印。使用此参数可生成多个连续视频:将前一个已生成视频的最后一帧用作下一个视频任务的首帧,从而快速生成多个连续视频。 +否:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。取值范围:[-1, 2^32-1]。取 -1 表示使用随机种子。 + + 取值范围:`-1` 至 `4294967295` + + + + 用于处理的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +根据 Router 在 `GET /v2/models/byteplus/dreamina-seedance-2-5-260628/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 视频生成任务完成后得到的输出,其中包含输出视频的下载 URL,以及在 BytePlus 返回时其末帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;此处其他所有字段均为 BytePlus 自身的字段。可为空。BytePlus 会在任务完成 24 小时后清除这些 URL,因此在此之后轮询一个已成功的文档时,`content` 可能缺失或为 null。 + + + + 已生成视频末帧的下载 URL,当请求设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将末帧记录为 PNG,Router 会重新托管它收到的任意字节,并根据上游的 Content-Type 或内容嗅探来确定其类型,而 `image/jpeg` 仅在两者都失败时作为最后的兜底。Router 会将末帧重新托管到 Comfy 存储上并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的备忘中重放,因此稍后轮询可能返回一个仅剩一小时有效期的 URL。当无法执行重新托管时,此字段会保留 BytePlus 自身的 URL,而 BytePlus 会在任务完成 24 小时后清除它。无论哪种情况,链接都会过期,因此请下载该帧,而不要存储这个 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),在 BytePlus 将其嵌套在 `content` 内时出现。Seedance 模型更常将其作为 `content` 的顶层同级字段返回,参见顶层的 `output_format` 字段。Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储上并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的备忘中重放,因此稍后轮询可能返回一个仅剩一小时有效期的 URL。当无法执行重新托管时,此字段会保留 BytePlus 自身的 URL,而 BytePlus 会在任务完成 24 小时后清除它,并且某些模型上限制为 100 次下载。无论哪种情况,链接都会过期,因此请下载该视频,而不要存储这个 URL。 + + + + 任务的创建时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 已生成视频的时长,单位为秒。声明为 number 而非 integer,是因为 BytePlus 在这方面并不一致:视频任务曾被观察到返回整数秒,而同类的其他 BytePlus 接口会报告带小数的时长,因此客户端不能假定其为整数值。这是 BytePlus 自身的字段,会在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 该任务所用模型的名称和版本 + + + + 已生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回,这正是 Seedance 视频任务查询返回它的位置。这是 BytePlus 自身的字段,会原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自身的字段,会在成功的视频任务中返回并原样转发。 + + + + 该任务实际使用的生成种子。这是 BytePlus 自身的字段,会在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认为 0。因此,total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "dreamina-seedance-2-5-260628", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx b/zh/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx new file mode 100644 index 000000000..756e3e61c --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx @@ -0,0 +1,459 @@ +--- +title: "将 Seed 2.0 Lite 260228 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seed-2-0-lite-260228:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seed 2.0 Lite 260228" +translationSourceHash: b3883790 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-lite-260228/code.mdx +translationBlockHashes: + "_intro": 1571ac12 + "Quick start": dd5d6146 + "Schema": c5f06bce + "Examples": 84abd59f +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-lite-260228.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 BytePlus 通过 Comfy Router 提供的 `byteplus/seed-2-0-lite-260228` API 参考文档。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `byteplus/seed-2-0-lite-260228` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-lite-260228", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-lite-260228", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-lite-260228 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## Schema + +### 输入 + + + 上下文缓存配置。 + + + + 当为 true 时,仅创建公共前缀缓存;模型不会返回响应。 + + + + 可能的值:`enabled`、`disabled` + + + + 用于保持上下文窗口可控的上下文管理策略(`clear_thinking`、`clear_tool_uses`)。 + + + + 单个上下文编辑策略,通过 `type` 区分。 + + + + 存储的响应与缓存过期时的 Unix 时间戳(秒,UTC)。取值范围为 (creation_time, creation_time + 604800]。默认值:creation_time + 259200(3 天)。 + + + + 需要额外包含的输出字段。目前支持:`reasoning.encrypted_content`(经过加密和压缩的推理内容,用于手动多轮复用)。 + + + + 提供给模型的文本内容或输入项列表。 + + + + 作为第一条指令前置的系统/开发者消息。与 `caching` 不兼容:如果 `caching.type` 为 `enabled`,设置 `instructions` 会返回错误。 + + + + 最大输出 token 数(响应 + 思维链)。 + + + + 取值范围:`1` 到 `10` + + + + 模型 ID 或端点 ID。模型列表见 https://docs.byteplus.com/en/docs/ModelArk/1330310,端点 ID 见 https://docs.byteplus.com/en/docs/ModelArk/1099522。直接对 POST /proxy/byteplus/api/v3/responses 发起 v1 调用时必须提供该字段:代理会拒绝其自身允许列表之外的任何值,也会拒绝省略该字段的请求,并返回 400。该字段不在 Comfy Router 输入 Schema 的 `required` 列表中,因为 Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略该字段。 + + + + 上一个响应的 ID,用于继续多轮对话。请求之间插入约 100ms 的间隔可避免失败。 + + + + 限制深度思考的工作量。 + + + + `minimal` 会完全禁用思考。当 `thinking.type = +disabled` 时,仅允许 `minimal`。 + + 可能的值:`minimal`、`low`、`medium`、`high` + + + + 当为 true 时,响应会被持久化,并可通过 ID 检索以用于多轮对话。 + + + + 取值范围:`0` 到 `2` + + 格式:`float` + + + + 输出格式配置。 + + + + 由 `type` 区分的文本输出格式。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + 控制深度思考模式。 + + + + `enabled`:始终先推理再响应。 +`disabled`:不进行额外推理直接响应。 +`auto`:由模型按每次查询自行决定。 + + 可能的值:`enabled`、`disabled`、`auto` + + + + 工具选择模式。仅 seed-1-6 模型支持该字段。 + + + + 模型可以调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述该函数参数的 JSON Schema。 + + + + 可能的值:`function` + + + + 取值范围:`0` 到 `1` + + 格式:`float` + + +本文档由 Router 在 `GET /v2/models/byteplus/seed-2-0-lite-260228/openapi.json` 提供的 schema 生成,请求到达提供商之前,Router 也使用同一份文档校验调用。### 输出 + + + + + + + + + + + 可能的值:`enabled`、`disabled` + + + + 本次响应中实际应用的上下文管理策略。与请求侧的 `BytePlusResponseContextManagement`(用于配置策略)不同,此字段回显的是服务器实际调用的策略,并附带被清除内容的计数。 + + + + 一条已应用的上下文编辑记录,通过 `type` 进行区分。 + + + + 响应创建时的 Unix 时间戳(秒)。 + + + + 错误详情。响应成功时为 null。 + + + + + + + + + + + + 已存储响应过期时的 Unix 时间戳(秒)。 + + + + 响应的唯一 ID。可作为 `previous_response_id` 用于继续对话。 + + + + 当 `status` 为 `incomplete` 时填充。 + + + + 例如 `max_output_tokens`、`content_filter`。 + + + + 请求中 `instructions` 字段的回显。 + + + + + + + + + + + + + + + + 生成该响应的模型 ID。 + + + + 可能的值:`response` + + + + 模型按顺序生成的输出项。 + + + + + + + + + + + + 可能的值:`minimal`、`low`、`medium`、`high` + + + + TPM 保障包用量。`default` 表示未使用。 + + 可能的值:`default` + + + + 可能的值:`in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + 格式:`float` + + + + 请求中 `text` 字段的回显。 + + + + 文本输出格式,通过 `type` 进行区分。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + + + + + 可能的值:`enabled`、`disabled`、`auto` + + + + + + + + 模型可调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述该函数参数的 JSON Schema。 + + + + 可能的值:`function` + + + + 格式:`float` + + + + 用于计费与可观测性的 token 用量明细。 + + + + 请求中的 token 总数。 + + + + 输入 token 的明细(缓存命中数等)。 + + + + 由上下文缓存提供的 token 数。 + + + + 模型生成的 token 总数。 + + + + 输出 token 的明细(推理等)。 + + + + 思维链消耗的 token 数。 + + + + 各工具的调用次数。 + + + + 图像处理工具调用的次数。 + + + + MCP 工具调用的次数。 + + + + 网络搜索工具调用的次数。 + + + + 各工具的子工具调用次数明细。 + + 例如 `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例如 `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例如 `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-lite-260228", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + diff --git a/zh/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx b/zh/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx new file mode 100644 index 000000000..01c5ba146 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx @@ -0,0 +1,459 @@ +--- +title: "将 Seed 2.0 Mini 260215 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seed-2-0-mini-260215:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "Seed 2.0 Mini 260215" +translationSourceHash: d31f55eb +translationFrom: development/comfy-router/models/byteplus/seed-2-0-mini-260215/code.mdx +translationBlockHashes: + "_intro": 8913ff52 + "Quick start": a6214085 + "Schema": 81ae34b2 + "Examples": 023957a5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-mini-260215.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 BytePlus 提供的 `byteplus/seed-2-0-mini-260215` API 参考文档。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `byteplus/seed-2-0-mini-260215` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-mini-260215", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-mini-260215", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-mini-260215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## Schema + +### Input + + + 上下文缓存配置。 + + + + 为 true 时,仅创建公共前缀缓存;模型不会返回响应。 + + + + 可选值:`enabled`、`disabled` + + + + 用于保持上下文窗口可控的上下文管理策略(`clear_thinking`、`clear_tool_uses`)。 + + + + 单个上下文编辑策略,通过 `type` 区分。 + + + + Unix 时间戳(秒,UTC),已存储的响应和缓存在该时间过期。范围 (creation_time, creation_time + 604800]。默认值:creation_time + 259200(3 天)。 + + + + 要额外包含的输出字段。目前支持:`reasoning.encrypted_content`(加密并压缩的推理内容,用于手动多轮复用)。 + + + + 提供给模型的文本内容或输入项列表。 + + + + 作为第一条指令前置的系统/开发者消息。与 `caching` 不兼容:如果 `caching.type` 为 `enabled`,设置 `instructions` 会返回错误。 + + + + 最大输出 token 数(响应 + 思维链)。 + + + + 范围:`1` 到 `10` + + + + 模型 ID 或 Endpoint ID。模型列表见 https://docs.byteplus.com/en/docs/ModelArk/1330310,Endpoint ID 见 https://docs.byteplus.com/en/docs/ModelArk/1099522。直接对 POST /proxy/byteplus/api/v3/responses 发起 v1 调用时必须提供该字段:代理会以 400 拒绝任何不在其自身允许列表中的值,以及任何省略该字段的请求。它不在 Comfy Router 输入 schema 的 `required` 列表中,因为 Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略该字段。 + + + + 上一个响应的 ID,用于继续多轮对话。请在请求之间插入约 100ms 的间隔以避免失败。 + + + + 限制深度思考的工作量。 + + + + `minimal` 会完全禁用思考。当 `thinking.type = disabled` 时,只允许使用 `minimal`。 + + 可选值:`minimal`、`low`、`medium`、`high` + + + + 为 true 时,响应会被持久化,并可通过 ID 检索以用于多轮对话。 + + + + 范围:`0` 到 `2` + + 格式:`float` + + + + 输出格式配置。 + + + + 通过 `type` 区分的文本输出格式。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + 控制深度思考模式。 + + + + `enabled`:始终先推理再响应。 +`disabled`:不进行额外推理直接响应。 +`auto`:由模型按每次查询自行决定。 + + 可选值:`enabled`、`disabled`、`auto` + + + + 工具选择模式。仅 seed-1-6 模型支持该字段。 + + + + 模型可调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述函数参数的 JSON Schema。 + + + + 可选值:`function` + + + + 范围:`0` 到 `1` + + 格式:`float` + + +由 Router 在 `GET /v2/models/byteplus/seed-2-0-mini-260215/openapi.json` 提供的 schema 生成,也是在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + + + + + 可能的值:`enabled`、`disabled` + + + + 本次响应中实际应用的上下文管理策略。与请求侧的 `BytePlusResponseContextManagement`(用于配置策略)不同,此处回显的是服务器实际调用的策略,并包含被清除内容的计数。 + + + + 一条已应用的上下文编辑,通过 `type` 进行区分。 + + + + 响应创建时的 Unix 时间戳(秒)。 + + + + 错误详情。响应成功时为 null。 + + + + + + + + + + + + 已存储响应过期时的 Unix 时间戳(秒)。 + + + + 响应的唯一 ID。可作为 `previous_response_id` 用于继续对话。 + + + + 当 `status` 为 `incomplete` 时填充。 + + + + 例如 `max_output_tokens`、`content_filter`。 + + + + 请求中 `instructions` 字段的回显。 + + + + + + + + + + + + + + + + 生成该响应的模型 ID。 + + + + 可能的值:`response` + + + + 模型按顺序生成的输出项。 + + + + + + + + + + + + 可能的值:`minimal`、`low`、`medium`、`high` + + + + TPM 保障套餐的使用情况。`default` 表示无。 + + 可能的值:`default` + + + + 可能的值:`in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + 格式:`float` + + + + 请求中 `text` 字段的回显。 + + + + 通过 `type` 区分的文本输出格式。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + + + + + 可能的值:`enabled`、`disabled`、`auto` + + + + + + + + 模型可调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述该函数参数的 JSON Schema。 + + + + 可能的值:`function` + + + + 格式:`float` + + + + 用于计费与可观测性的 token 用量明细。 + + + + 请求中的 token 总数。 + + + + 输入 token 的明细(缓存命中情况等)。 + + + + 由上下文缓存提供的 token 数。 + + + + 模型生成的 token 总数。 + + + + 输出 token 的明细(推理等)。 + + + + 思维链消耗的 token 数。 + + + + 各工具的调用次数。 + + + + 图像处理工具的调用次数。 + + + + MCP 工具的调用次数。 + + + + Web 搜索工具的调用次数。 + + + + 各工具子工具调用次数的明细。 + + 例如 `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例如 `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例如 `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-mini-260215", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx b/zh/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx new file mode 100644 index 000000000..d5a9fc2cf --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx @@ -0,0 +1,459 @@ +--- +title: "将 Seed 2.0 Pro 260328 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 byteplus/seed-2-0-pro-260328:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seed 2.0 Pro 260328" +translationSourceHash: 66dabb87 +translationFrom: development/comfy-router/models/byteplus/seed-2-0-pro-260328/code.mdx +translationBlockHashes: + "_intro": 3395e7cc + "Quick start": c2770ef5 + "Schema": 93899ca4 + "Examples": e3b39a19 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-2-0-pro-260328.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-2-0-pro-260328` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `byteplus/seed-2-0-pro-260328` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-2-0-pro-260328", + { + "input": "Reply with the single word: ok", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-2-0-pro-260328", { + input: "Reply with the single word: ok", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-2-0-pro-260328 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\"}" +``` + + +## Schema + +### 输入 + + + 上下文缓存配置。 + + + + 当为是时,仅创建公共前缀缓存;模型不会作出响应。 + + + + 可选值:`enabled`、`disabled` + + + + 上下文管理策略(`clear_thinking`、`clear_tool_uses`),用于保持上下文窗口可控。 + + + + 单个上下文编辑策略,由 `type` 区分。 + + + + 存储的响应与缓存的过期时间,Unix 时间戳(秒,UTC)。范围 (creation_time, creation_time + 604800]。默认:creation_time + 259200(3 天)。 + + + + 需要额外包含的输出字段。当前支持:`reasoning.encrypted_content`(加密并压缩的推理内容,供手动多轮复用)。 + + + + 提供给模型的文本内容或输入项列表。 + + + + 作为第一条指令前置的系统/开发者消息。与 `caching` 不兼容:如果 `caching.type` 为 `enabled`,设置 `instructions` 会返回错误。 + + + + 最大输出 token 数(响应 + 思维链)。 + + + + 范围:`1` 到 `10` + + + + 模型 ID 或 Endpoint ID。模型列表见 https://docs.byteplus.com/en/docs/ModelArk/1330310,Endpoint ID 见 https://docs.byteplus.com/en/docs/ModelArk/1099522。直接对 POST /proxy/byteplus/api/v3/responses 发起 v1 调用时,必须提供该字段:代理会拒绝不在其自身允许列表中的任何值,缺省时则返回 400。它不在 Comfy Router 输入 schema 的 `required` 列表中,因为 Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充该字段,因此 Router 调用方会省略它。 + + + + 上一个响应的 ID,用于继续多轮对话。请求之间插入约 100ms 的间隔可避免失败。 + + + + 限制深度思考的工作量。 + + + + `minimal` 会完全禁用思考。当 `thinking.type = disabled` 时,仅允许使用 `minimal`。 + + 可选值:`minimal`、`low`、`medium`、`high` + + + + 当为是时,响应会被持久化,并可通过 ID 检索以用于多轮对话。 + + + + 范围:`0` 到 `2` + + 格式:`float` + + + + 输出格式配置。 + + + + 由 `type` 区分的文本输出格式。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + 控制深度思考模式。 + + + + `enabled`:始终先推理再响应。 +`disabled`:不作额外推理直接响应。 +`auto`:由模型按查询自行决定。 + + 可选值:`enabled`、`disabled`、`auto` + + + + 工具选择模式。仅 seed-1-6 模型支持该字段。 + + + + 模型可以调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述函数参数的 JSON Schema。 + + + + 可选值:`function` + + + + 范围:`0` 到 `1` + + 格式:`float` + + +本文档依据 Router 在 `GET /v2/models/byteplus/seed-2-0-pro-260328/openapi.json` 提供的 schema 生成,即请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + + + + + 可能的值:`enabled`、`disabled` + + + + 本次响应中实际应用的上下文管理策略。与请求侧的 `BytePlusResponseContextManagement`(用于配置策略)不同,此处回显的是服务器实际调用的策略,并附上被清理内容的数量。 + + + + 一条已应用的上下文编辑,通过 `type` 区分。 + + + + 响应创建时的 Unix 时间戳(秒)。 + + + + 错误详情。响应成功时为 null。 + + + + + + + + + + + + 所存储响应过期时的 Unix 时间戳(秒)。 + + + + 响应的唯一 ID。可作为 `previous_response_id` 用于继续对话。 + + + + 当 `status` 为 `incomplete` 时填充。 + + + + 例如 `max_output_tokens`、`content_filter`。 + + + + 请求中 `instructions` 字段的回显。 + + + + + + + + + + + + + + + + 生成该响应的模型 ID。 + + + + 可能的值:`response` + + + + 模型按顺序产生的输出项。 + + + + + + + + + + + + 可能的值:`minimal`、`low`、`medium`、`high` + + + + TPM 保障包的使用情况。`default` 表示未使用。 + + 可能的值:`default` + + + + 可能的值:`in_progress`、`completed`、`incomplete`、`failed`、`cancelled` + + + + + + + + + + + + 格式:`float` + + + + 请求中 `text` 字段的回显。 + + + + 通过 `type` 区分的文本输出格式。`text` 返回自然语言,`json_object` 返回自由形式的 JSON 对象,`json_schema` 将输出约束为调用方提供的 JSON Schema。 + + + + + + + + 可能的值:`enabled`、`disabled`、`auto` + + + + + + + + 模型可调用的工具。目前仅支持 `function`。 + + + + + + + + + + + + 描述该函数参数的 JSON Schema。 + + + + 可能的值:`function` + + + + 格式:`float` + + + + 用于计费和可观测性的 token 用量明细。 + + + + 请求中的 token 总数。 + + + + 输入 token 的明细(缓存命中数等)。 + + + + 由上下文缓存提供的 token 数。 + + + + 模型生成的 token 总数。 + + + + 输出 token 的明细(推理等)。 + + + + 思维链消耗的 token 数。 + + + + 各工具的调用次数。 + + + + 图像处理工具的调用次数。 + + + + MCP 工具的调用次数。 + + + + web 搜索工具的调用次数。 + + + + 各工具下子工具调用次数的明细。 + + 例如 `{"zoom":1,"point":1,"grounding":1}`。 + + + + 例如 `{"mcp_server_tos":1,"mcp_server_tls":1}`。 + + + + 例如 `{"toutiao":1,"moji":1,"search_engine":1}`。 + + + + input_tokens + output_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "model": "seed-2-0-pro-260328", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx b/zh/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx new file mode 100644 index 000000000..9b8fb4af0 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx @@ -0,0 +1,275 @@ +--- +title: "将 Seed Audio 1.0 Multilingual 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seed-audio-1.0-multilingual:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seed Audio 1.0 Multilingual" +translationSourceHash: 2ecb3379 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0-multilingual/code.mdx +translationBlockHashes: + "_intro": 0936b282 + "Quick start": 2edf8519 + "Schema": 5e381884 + "Examples": be556f45 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-audio-1.0-multilingual.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-audio-1.0-multilingual` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是在原始 HTTP 上执行同样的调用。 + +**模型 ID:** `byteplus/seed-audio-1.0-multilingual` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0-multilingual", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0-multilingual", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## Schema + +### 输入 + + + 输出音频配置。 + + + + 是否启用字幕服务。启用后,响应会包含话语级和词级时间戳(默认:否)。 + + + + 输出音频格式:wav(默认)、mp3、pcm 或 ogg_opus。 + + 可选值:`wav`、`mp3`、`pcm`、`ogg_opus` + + + + -50 至 100;100 表示 2.0 倍音量,-50 表示 0.5 倍音量(默认:0)。 + + 范围:`-50` 至 `100` + + + + -12 至 12(默认:0)。 + + 范围:`-12` 至 `12` + + + + 输出采样率:8000、16000、24000(默认)、32000、44100 或 48000。 + + 可选值:`8000`、`16000`、`24000`、`32000`、`44100`、`48000` + + + + -50 至 100;100 表示 2.0 倍语速,-50 表示 0.5 倍语速(默认:0)。 + + 范围:`-50` 至 `100` + + + + 模型标识符。支持的模型:seed-audio-1.0 和 seed-audio-1.0-multilingual。直接以 v1 调用 POST /proxy/byteplus/api/v3/tts/create 时必须提供它:代理会拒绝任何其他值,省略该值时也会以 400 拒绝。它不在此 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,所以 Router 调用方可以省略。 + + + + 参考资源。纯文本生成时省略。最多 3 个音频参考(每个最长 30 秒、解码后最大 10 MB;wav、mp3、pcm 或 ogg_opus),或恰好 1 个图像参考(解码后最大 10 MB;jpeg、png 或 webp)。图像参考不能与音频参考混用。这些上限由 BytePlus 设定,且以解码后的字节数表示:base64 会使资源膨胀约 4/3,而一次 Comfy Router 调用的整个 JSON 文档上限为 10 MiB,因此发送到 /v2/models/byteplus/\{model} 的内联 `audio_data`/`image_data` 参考,解码后必须保持在约 7.5 MB 以下。更大的资源请使用 `audio_url`/`image_url`:若内联发送,达到 BytePlus 自身 10 MB 上限的参考会在验证运行之前被以 413 拒绝。 + + + + Base64 编码的参考音频。 + + + + 远程参考音频文件的 URL。 + + + + Base64 编码的参考图像。 + + + + 远程参考图像的 URL。 + + + + 音色 ID。可以是受支持的 Doubao TTS 音色,也可以是声音克隆的音色 ID。 + + + + 要合成的提示词或文本(1 至 3,000 个字符;空字符串会被拒绝)。提供音频参考时,按顺序使用 @Audio1、@Audio2 和 @Audio3 引用它们。 + + + + 水印配置对象。接受空对象。 + + + + 隐式水印。向合成音频的头部添加元数据。 + + + + 合成服务提供商的名称或代码。 + + + + 内容分发服务提供商的名称或代码。 + + + + 是否启用隐式水印(默认:否)。 + + + + 内容生产 ID。 + + + + 内容分发 ID。 + + + + 显式水印切换开关。在合成音频的末尾添加音频节奏标记(默认:否)。 + + +由 Router 在 `GET /v2/models/byteplus/seed-audio-1.0-multilingual/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于验证调用的同一份文档。### 输出 + + + 生成的音频数据,采用 Base64 编码。 + + + + 状态码。详情请参阅官方错误码文档。 + + + + 变速或后处理之后的时长,单位为秒。 + + 格式:`double` + + + + 状态详情。 + + + + 模型原始输出时长,单位为秒。用于计费,上限为 120 秒。 + + 格式:`double` + + + + 音频的字幕信息。仅当请求中 audio_config.enable_subtitle 设为 true 时才会返回。 + + + + 句子级字幕信息。 + + + + 分段结束时间,单位为毫秒,从音频开头算起。 + + + + 分段开始时间,单位为毫秒,从音频开头算起。 + + + + 该分段的完整文本。 + + + + 与音频对应的字幕文本。 + + + + 单词级字幕信息。 + + + + 分段结束时间,单位为毫秒,从音频开头算起。 + + + + 分段开始时间,单位为毫秒,从音频开头算起。 + + + + 该分段的完整文本。 + + + + 临时音频 URL,有效期为 2 小时。 + + +## 示例 + +### 输入 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 输出 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx b/zh/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx new file mode 100644 index 000000000..736045d4a --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx @@ -0,0 +1,277 @@ +--- +title: "结合 Comfy Router 使用 Seed Audio 1.0" +description: "通过 Comfy Router 调用 byteplus/seed-audio-1.0:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seed Audio 1.0" +translationSourceHash: 1971dfe6 +translationFrom: development/comfy-router/models/byteplus/seed-audio-1-0/code.mdx +translationBlockHashes: + "_intro": 8371b803 + "Quick start": 20fc3b16 + "Schema": c8c3aa89 + "Examples": be556f45 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seed-audio-1.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seed-audio-1.0` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + + + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `byteplus/seed-audio-1.0` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seed-audio-1.0", + { + "audio_config": { + "format": "wav", + "sample_rate": 24000, + }, + "text_prompt": "Hello from Comfy Router.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seed-audio-1.0", { + audio_config: { + format: "wav", + sample_rate: 24000, + }, + text_prompt: "Hello from Comfy Router.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" +``` + + +## 模式 + +### 输入 + + + 输出音频配置。 + + + + 是否启用字幕服务。启用后,响应中包含句子级和词级时间戳(默认:否)。 + + + + 输出音频格式:wav(默认)、mp3、pcm 或 ogg_opus。 + + 可能的值:`wav`、`mp3`、`pcm`、`ogg_opus` + + + + -50 到 100;100 表示 2.0 倍音量,-50 表示 0.5 倍音量(默认:0)。 + + 范围:`-50` 到 `100` + + + + -12 到 12(默认:0)。 + + 范围:`-12` 到 `12` + + + + 输出采样率:8000、16000、24000(默认)、32000、44100 或 48000。 + + 可能的值:`8000`、`16000`、`24000`、`32000`、`44100`、`48000` + + + + -50 到 100;100 表示 2.0 倍速度,-50 表示 0.5 倍速度(默认:0)。 + + 范围:`-50` 到 `100` + + + + 模型标识符。支持的模型:seed-audio-1.0 和 seed-audio-1.0-multilingual。直接对 POST /proxy/byteplus/api/v3/tts/create 的 v1 调用必须提供它:代理会以 400 拒绝任何其他值以及省略值。它并不在此模式的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。 + + + + 参考资源。仅文本生成时可省略。最多 3 个音频参考(每个最长 30 秒,解码后最大 10 MB;wav、mp3、pcm 或 ogg_opus),或正好 1 个图像参考(解码后最大 10 MB;jpeg、png 或 webp)。图像参考不能与音频参考混用。这些上限是 BytePlus 的限制,并且以解码后的字节数表示:base64 会将资源膨胀约 4/3,而 Comfy Router 调用对整个 JSON 文档的上限为 10 MiB,因此,发送到 /v2/models/byteplus/\{model} 的内联 `audio_data`/`image_data` 参考的解码后大小必须保持在约 7.5 MB 以下。对于更大的内容,请使用 `audio_url`/`image_url`:如果内联,达到 BytePlus 自身 10 MB 上限的参考会在验证运行之前被以 413 拒绝。 + + + + Base64 编码的参考音频。 + + + + 远程参考音频文件的 URL。 + + + + Base64 编码的参考图像。 + + + + 远程参考图像的 URL。 + + + + 音色 ID。可以是受支持的 Doubao TTS 音色或声音克隆音色 ID。 + + + + 要合成的提示词或文本(1 到 3,000 个字符;空字符串会被拒绝)。提供音频参考时,按顺序使用 @Audio1、@Audio2 和 @Audio3 引用它们。 + + + + 水印配置对象。接受空对象。 + + + + 隐式水印。向合成音频头部添加元数据。 + + + + 合成服务提供商的名称或代码。 + + + + 内容分发服务提供商的名称或代码。 + + + + 是否启用隐式水印(默认:否)。 + + + + 内容生产 ID。 + + + + 内容分发 ID。 + + + + 显式水印开关。在合成音频末尾添加音频节奏标记(默认:否)。 + + +根据 Router 在 `GET /v2/models/byteplus/seed-audio-1.0/openapi.json` 提供的模式生成;该文档也是它在请求到达提供商之前用于验证调用的同一份文档。### 输出 + + + 已生成的音频数据,采用 Base64 编码。 + + + + 状态码。详情请参阅官方错误码文档。 + + + + 变速或后处理之后的时长,单位为秒。 + + 格式:`double` + + + + 状态详情。 + + + + 原始模型输出时长,单位为秒。用于计费,上限为 120 秒。 + + 格式:`double` + + + + 音频的字幕信息。仅当请求中 audio_config.enable_subtitle 设置为 true 时才会返回。 + + + + 语句级字幕信息。 + + + + 片段结束时间,单位为毫秒,从音频开始处计算。 + + + + 片段开始时间,单位为毫秒,从音频开始处计算。 + + + + 该片段的完整文本。 + + + + 与音频对应的字幕文本。 + + + + 单词级字幕信息。 + + + + 片段结束时间,单位为毫秒,从音频开始处计算。 + + + + 片段开始时间,单位为毫秒,从音频开始处计算。 + + + + 该片段的完整文本。 + + + + 临时音频 URL,有效期为 2 小时。 + + +## 示例 + +### 输入 + +```json +{ + "audio_config": { + "format": "wav", + "sample_rate": 24000 + }, + "text_prompt": "Hello from Comfy Router." +} +``` + +### 输出 + +```json +{ + "audio": "PGJhc2U2ND4=", + "duration": 1.2, + "original_duration": 1.2, + "url": "https://example.invalid/byteplus/seed-audio/generated.wav" +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx b/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx new file mode 100644 index 000000000..0168bfc76 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx @@ -0,0 +1,344 @@ +--- +title: "搭配 Comfy Router 使用 Seedance 1.0 Lite I2V 250428" +description: "通过 Comfy Router 调用 byteplus/seedance-1-0-lite-i2v-250428:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedance 1.0 Lite I2V 250428" +translationSourceHash: 90148920 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-i2v-250428/code.mdx +translationBlockHashes: + "_intro": 66c320e8 + "Quick start": 3e9c0d27 + "Schema": 0dd61406 + "Examples": d126be96 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/seedance-1-0-lite-i2v-250428.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-lite-i2v-250428` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的相同调用。 + +**模型 ID:** `byteplus/seedance-1-0-lite-i2v-250428` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-i2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-i2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-i2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 此生成任务结果的回调通知地址 + + 格式:`uri` + + + + 模型生成视频所需的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须至少包含 1 张图像或视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或资产 ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +资产 ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图片网址:请确保图片网址可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +资产 ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词之后添加 --[parameters] 以控制视频规格: +- --resolution(--rs):480p、720p、1080p(默认值:720p) +- --ratio(--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认值:16:9 或 adaptive) +- --duration(--dur):3-12 秒(默认值:5) +- --framepersecond(--fps):24(默认值:24) +- --watermark(--wm):true/false(默认值:false) +- --seed(--seed):-1 到 2^32-1(默认值:-1) +- --camerafixed(--cf):true/false(默认值:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或资产 ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +资产 ID:格式为 asset://\ + + + + 视频时长(秒)。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值(秒)。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带有同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接向 POST /proxy/byteplus/api/v3/contents/generations/tasks 发起 v1 调用时必须提供该参数:代理会拒绝任何其他值,若省略该参数则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广且文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 已生成视频的宽高比。Seedance 2.0 和 2.0 fast、1.5 pro 默认值:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认值:720p。Seedance 1.0 pro 和 pro-fast 默认值:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。`true`:返回已生成视频的最后一帧图像。将该参数设置为 true 后,可通过调用"查询视频生成任务信息"接口获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不包含水印。使用该参数可以生成多个连续视频:将前一个已生成视频的最后一帧用作下一个视频任务的首帧,从而快速生成多个连续视频。 +`false`:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。取值范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 到 `4294967295` + + + + 处理所使用的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +由 Router 在 `GET /v2/models/byteplus/seedance-1-0-lite-i2v-250428/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。### 输出 + + + 视频生成任务完成后得到的输出,其中包含输出视频的下载 URL,以及 BytePlus 返回时其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;这里的其他所有字段都是 BytePlus 自己的字段。可为空:任务完成 24 小时后 BytePlus 会清除这些 URL,而在之后轮询到的已成功完成的文档中,`content` 可能缺失或为 null。 + + + + 生成视频最后一帧的下载 URL,当请求设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,Router 会重新托管它收到的任何字节,并根据上游的 Content-Type 或内容嗅探来确定其类型,只有当两者都失败时,才会以 `image/jpeg` 作为最后的兜底。Router 会把最后一帧重新托管到 Comfy 存储上并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长为 24 小时:签发时按 24 小时签名,并从 23 小时的备忘录中重放,因此稍后轮询返回的 URL 有效期可能只剩不到一小时。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务完成 24 小时后清除它。无论哪种情况,链接都会过期,因此请下载该帧,而不要保存 URL。 + + + + 生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内部时返回。Seedance 模型更常见的是将其作为 `content` 的顶层同级字段返回,参见顶层 `output_format` 字段;Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会把视频重新托管到 Comfy 存储上并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长为 24 小时:签发时按 24 小时签名,并从 23 小时的备忘录中重放,因此稍后轮询返回的 URL 有效期可能只剩不到一小时。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务完成 24 小时后清除它,且在某些模型上将其限制为 100 次下载。无论哪种情况,链接都会过期,因此请下载视频,而不要保存 URL。 + + + + 任务的创建时间。该值为 UNIX 时间戳,单位为秒。 + + + + 生成视频的时长,单位为秒。这里声明为 number 而非 integer,是因为 BytePlus 在这点上并不一致:视频任务曾被观察到返回整数秒,而 BytePlus 的其他同级接口报告的是小数时长,因此客户端不应假定它是整数值。这是 BytePlus 自己的字段,在成功的视频任务上返回并原样转发。 + + + + 错误信息。如果任务成功,则返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回,这正是 Seedance 视频任务查询返回它的位置。这是 BytePlus 自己的字段,原样转发。 + + + + 生成视频的分辨率,例如 `1080p`。这是 BytePlus 自己的字段,在成功的视频任务上返回并原样转发。 + + + + 任务实际使用的生成种子。这是 BytePlus 自己的字段,在成功的视频任务上返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,并默认为 0。因此 total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-i2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + diff --git a/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx b/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx new file mode 100644 index 000000000..8df5ee995 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx @@ -0,0 +1,345 @@ +--- +title: "使用 Comfy Router 调用 Seedance 1.0 Lite T2V 250428" +description: "通过 Comfy Router 调用 byteplus/seedance-1-0-lite-t2v-250428:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seedance 1.0 Lite T2V 250428" +translationSourceHash: 25d0588b +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-lite-t2v-250428/code.mdx +translationBlockHashes: + "_intro": a1ec32a9 + "Quick start": bd072989 + "Schema": 060399d4 + "Examples": 7c3591f8 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-lite-t2v-250428.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-lite-t2v-250428` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `byteplus/seedance-1-0-lite-t2v-250428` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-lite-t2v-250428", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-lite-t2v-250428", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-lite-t2v-250428 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须至少包含 1 个图像或视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图像 URL:请确保该图像 URL 可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`, `last_frame`, `reference_image`, `reference_video`, `reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`, `image_url`, `video_url`, `audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长(秒)。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值(秒)。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接以 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供它,代理会拒绝任何其他值;若省略它,则返回 400。它不在本 Schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广,文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`, `mov` + + + + 生成的视频宽高比。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可选值:`16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`, `9:21`, `adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`, `720p`, `1080p`, `4k` + + + + 是否返回已生成视频的最后一帧图像。是:返回已生成视频的最后一帧图像。将此参数设置为是后,可通过调用"查询视频生成任务信息"获取最后一帧图像。该最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不含水印。使用此参数可以生成多个连续视频:将前一个已生成视频的最后一帧作为下一个视频任务的第一帧,从而快速生成多个连续视频。 +否:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 到 `4294967295` + + + + 用于处理的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +由 Router 在 `GET /v2/models/byteplus/seedance-1-0-lite-t2v-250428/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 视频生成任务完成后得到的输出,其中包含输出视频的下载 URL,并且在 BytePlus 返回时,还包含其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;这里的其他每个字段都来自 BytePlus 本身。可为 null:BytePlus 会在任务结束 24 小时后清除这些 URL,之后轮询一个已成功的文档时,`content` 可能缺失或为 null。 + + + + 已生成视频最后一帧的下载 URL,仅当请求设置了 `return_last_frame` 时返回。不要根据这个 URL 推断图像格式:BytePlus 在请求侧将最后一帧记为 PNG,Router 会重新托管它实际拿到的任何字节,并根据上游的 Content-Type 或内容嗅探来确定其类型,而 `image/jpeg` 只是两者都失败时的最后兜底。Router 会把最后一帧重新托管到 Comfy 存储上并改写此字段,因此它通常是一个有效期最长 24 小时的 Comfy 签名 URL:生成时签名 24 小时,并从 23 小时的备忘中重放,所以之后的轮询可能返回一个只剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务结束 24 小时后清除它。无论哪种情况链接都会过期,因此请下载该帧,而不要保存 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内时返回。Seedance 模型更常把它作为 `content` 的顶层同级字段返回,参见顶层的 `output_format` 字段。Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会把视频重新托管到 Comfy 存储上并改写此字段,因此它通常是一个有效期最长 24 小时的 Comfy 签名 URL:生成时签名 24 小时,并从 23 小时的备忘中重放,所以之后的轮询可能返回一个只剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务结束 24 小时后清除它,并在某些模型上限制为 100 次下载。无论哪种情况链接都会过期,因此请下载视频,而不要保存 URL。 + + + + 任务创建的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 已生成视频的时长,单位为秒。之所以声明为 number 而不是整数,是因为 BytePlus 在这点上并不一致:视频任务曾被观察到返回整秒,而 BytePlus 相邻的其他接口会报告小数时长,因此客户端不能假定它是整数值。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 已生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回:Seedance 视频任务查询正是在这里返回它。这是 BytePlus 自己的字段,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 该任务实际使用的生成种子。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 本次请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认为 0。因此 total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-lite-t2v-250428", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx b/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx new file mode 100644 index 000000000..7f1bbd60a --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx @@ -0,0 +1,345 @@ +--- +title: "将 Seedance 1.0 Pro 250528 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seedance-1-0-pro-250528:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedance 1.0 Pro 250528" +translationSourceHash: 662d9fd0 +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-250528/code.mdx +translationBlockHashes: + "_intro": 7a940f76 + "Quick start": e301b36e + "Schema": 0a7ca1d5 + "Examples": 2ace8cc9 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedance-1-0-pro-250528.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-250528` 的 API 参考,由 Comfy Router 提供,来源为 BytePlus。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `byteplus/seedance-1-0-pro-250528` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-250528", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-250528", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-250528 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 与 2.0 fast 支持音频输入。Seedance 2.0 与 2.0 fast 不能单独使用音频,必须至少包含 1 张图像或 1 个视频;Seedance 2.5 支持纯音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图片 URL:请确保图片 URL 可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 与 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 与 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 与 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长,单位为秒。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 与 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + Seedance 2.5、2.0、2.0 fast 与 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供它,代理会拒绝任何其他值,若省略则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方可以省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广,文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 生成视频的画面比例。Seedance 2.0 与 2.0 fast、1.5 pro 默认:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 与 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 与 pro-fast 默认:1080p。 +注意:Seedance 2.0 与 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 与 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回已生成视频的最后一帧图像。true:返回已生成视频的最后一帧图像。将此参数设置为 true 后,可通过调用"查询视频生成任务信息"来获取最后一帧图像。该最后一帧图像为 PNG 格式,其像素宽度和高度与已生成的视频一致,且不包含水印。使用此参数可以生成多个连续视频:将前一个已生成视频的最后一帧用作下一个视频任务的第一帧,从而快速生成多个连续视频。 +false:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 到 `4294967295` + + + + 处理所用的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可能的值:`default`、`flex` + + + + 已生成的视频是否包含水印。 + + +由 Router 在 `GET /v2/models/byteplus/seedance-1-0-pro-250528/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 视频生成任务完成后返回的输出内容,包含输出视频的下载 URL,以及当 BytePlus 返回时其末帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;这里其他所有字段都来自 BytePlus 本身。可为 null:BytePlus 会在任务完成 24 小时后清除这些 URL,之后轮询一个已成功的文档时,`content` 可能缺失或为 null。 + + + + 已生成视频末帧的下载 URL,当请求设置了 `return_last_frame` 时返回。不要从这个 URL 推断图像格式:BytePlus 在请求侧将末帧记录为 PNG,Router 会重新托管它收到的任何字节,并根据上游的 Content-Type 或内容嗅探来确定类型,只有当两者都失败时才最后退回到 `image/jpeg`。Router 会将末帧重新托管到 Comfy 存储上并重写该字段,因此它通常是有效期最长 24 小时的 Comfy 签名 URL:签发时签 24 小时,并从 23 小时的备忘中重放,所以之后的一次轮询可能返回只剩一小时的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务完成 24 小时后将其清除。无论哪种情况链接都会过期,所以要下载帧,而不是保存 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内时提供。Seedance 模型更常将它作为 `content` 的顶层同级字段返回:参见顶层的 `output_format` 字段。Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储上并重写该字段,因此它通常是有效期最长 24 小时的 Comfy 签名 URL:签发时签 24 小时,并从 23 小时的备忘中重放,所以之后的一次轮询可能返回只剩一小时的链接。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,BytePlus 会在任务完成 24 小时后将其清除,并在某些模型上将下载次数限制为 100 次。无论哪种情况链接都会过期,所以要下载视频,而不是保存 URL。 + + + + 任务创建的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 已生成视频的时长,单位为秒。之所以声明为 number 而不是 integer,是因为 BytePlus 在这点上并不一致:已观察到视频任务返回整数秒,而 BytePlus 的其他同类接口会报告小数时长,因此客户端不能假定其为整数值。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称与版本 + + + + 已生成视频的容器格式(mp4 或 mov),在顶层作为 `content` 的同级字段返回:这正是 Seedance 视频任务查询返回它的位置。这是 BytePlus 自己的字段,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 任务实际使用的生成种子。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认值为 0。因此,total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-250528", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx b/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx new file mode 100644 index 000000000..ff06a2a8b --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx @@ -0,0 +1,345 @@ +--- +title: "使用 Comfy Router 调用 Seedance 1.0 Pro Fast 251015" +description: "通过 Comfy Router 调用 byteplus/seedance-1-0-pro-fast-251015:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seedance 1.0 Pro Fast 251015" +translationSourceHash: fe17d7dd +translationFrom: development/comfy-router/models/byteplus/seedance-1-0-pro-fast-251015/code.mdx +translationBlockHashes: + "_intro": b414baf3 + "Quick start": 39685b9b + "Schema": dfc9d47b + "Examples": f5cd7d00 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/seedance-1-0-pro-fast-251015.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-0-pro-fast-251015` 的 API 参考,由 Comfy Router 提供,来自 BytePlus。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 发出的同一调用。 + +**模型 ID:** `byteplus/seedance-1-0-pro-fast-251015` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-0-pro-fast-251015", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-0-pro-fast-251015", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-0-pro-fast-251015 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 供模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 无法单独使用音频:它们必须至少包含 1 个图像或视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 “image_url” 时) +图片 URL:请确保图片 URL 可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中文和英文字符描述要生成的视频。 + +参数(可选):在文本提示词之后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 至 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:“A beautiful landscape --ratio 16:9 --resolution 720p --duration 5” + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长,单位为秒。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 至 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 至 `259200` + + + + Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接对 POST /proxy/byteplus/api/v3/contents/generations/tasks 发起 v1 调用时必须提供该参数:代理会拒绝任何其他值,若省略该参数则会返回 400。它不在此 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充该值,所以 Router 调用方会省略它。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广,文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 生成视频的比例。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回生成视频的最后一帧图像。是:返回已生成视频的最后一帧图像。将此参数设置为是后,您可以通过调用查询视频生成任务信息来获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不包含水印。使用此参数可以生成多个连续视频:将上一个已生成视频的最后一帧作为下一个视频任务的首帧,从而快速生成多个连续视频。 +否:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 至 `4294967295` + + + + 处理服务层级。Seedance 2.5、2.0 与 2.0 fast 不支持 flex(离线推理)。 + + 可选值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +由 Router 在 `GET /v2/models/byteplus/seedance-1-0-pro-fast-251015/openapi.json` 处提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 视频生成任务完成后的输出,其中包含输出视频的下载 URL,以及 BytePlus 返回时其最后一帧的下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储上;此处的其他所有字段均来自 BytePlus 自身。可为空:BytePlus 会在任务结束 24 小时后清除这些 URL,因此在那之后轮询一个已成功的文档,其 `content` 可能缺失或为 null。 + + + + 已生成视频最后一帧的下载 URL,仅在请求设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,而 Router 会重新托管它实际收到的字节,并根据上游的 Content-Type 或内容嗅探来判定其类型,`image/jpeg` 只是在两者都失败时的最后兜底。Router 会将最后一帧重新托管到 Comfy 存储上并改写此字段,因此它通常是一个 Comfy 签名的 URL,有效期最长 24 小时:签发时为 24 小时,从 23 小时的备忘缓存中重放,所以稍后轮询可能返回一个只剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自身的 URL,BytePlus 会在任务结束 24 小时后清除它。无论哪种情况链接都会过期,因此请下载该帧,而不要保存 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 内时提供。Seedance 模型更常将其作为 `content` 的顶层同级字段返回,参见顶层的 `output_format` 字段;Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储上并改写此字段,因此它通常是一个 Comfy 签名的 URL,有效期最长 24 小时:签发时为 24 小时,从 23 小时的备忘缓存中重放,所以稍后轮询可能返回一个只剩一小时有效期的链接。当无法执行重新托管时,该字段会保留 BytePlus 自身的 URL,BytePlus 会在任务结束 24 小时后清除它,并在某些模型上限制最多 100 次下载。无论哪种情况链接都会过期,因此请下载该视频,而不要保存 URL。 + + + + 任务创建的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 已生成视频的时长,单位为秒。声明为 number 而非 integer,是因为 BytePlus 在这一点上并不一致:曾观察到视频任务返回整秒数,而 BytePlus 的其他相关接口则报告带小数的时长,因此客户端不能假定它是整数值。这是 BytePlus 自身的字段,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,则返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 已生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回,这正是 Seedance 视频任务查询返回它的位置。这是 BytePlus 自身的字段,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自身的字段,在成功的视频任务中返回并原样转发。 + + + + 该任务实际使用的生成种子。这是 BytePlus 自身的字段,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为 UNIX 时间戳,单位为秒。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认值为 0。因此,total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-0-pro-fast-251015", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx b/zh/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx new file mode 100644 index 000000000..be7f351b7 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx @@ -0,0 +1,346 @@ +--- +title: "通过 Comfy Router 使用 Seedance 1.5 Pro 251215" +description: "通过 Comfy Router 调用 byteplus/seedance-1-5-pro-251215:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedance 1.5 Pro 251215" +translationSourceHash: 1317f7bd +translationFrom: development/comfy-router/models/byteplus/seedance-1-5-pro-251215/code.mdx +translationBlockHashes: + "_intro": c67f4c25 + "Quick start": f31d9e26 + "Schema": 0ba08868 + "Examples": ec5f82bf +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/seedance-1-5-pro-251215.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedance-1-5-pro-251215` 的 API 参考文档,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `byteplus/seedance-1-5-pro-251215` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedance-1-5-pro-251215", + { + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedance-1-5-pro-251215", { + content: [ + { + text: "A red fox trotting through a snowy pine forest", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "720p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedance-1-5-pro-251215 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A red fox trotting through a snowy pine forest\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"720p\"}" +``` + + +## Schema + +### 输入 + + + 本次生成任务结果的回调通知地址 + + 格式:`uri` + + + + 模型生成视频的输入内容 + + + + 输入音频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持音频输入。Seedance 2.0 和 2.0 fast 不能单独使用音频,必须至少包含 1 张图像或 1 个视频;Seedance 2.5 支持仅音频输入。 + + + + 音频 URL、Base64 编码或 Asset ID。 +音频 URL:音频的公开 URL(wav、mp3)。 +Base64:格式为 data:audio/\;base64,\ +Asset ID:格式为 asset://\ + + + + + + + + 用于图生视频生成的图像内容(当 type 为 "image_url" 时) +图片网址:请确保图片网址可访问。 +Base64 编码内容:格式必须为 data:image/\;base64,\ +Asset ID:格式为 asset://\ + + + + 内容项的角色/位置。 +对于图像:first_frame、last_frame 或 reference_image。 +对于视频:reference_video(仅 Seedance 2.5、2.0 和 2.0 fast)。 +对于音频:reference_audio(仅 Seedance 2.5、2.0 和 2.0 fast)。 + + 可选值:`first_frame`、`last_frame`、`reference_image`、`reference_video`、`reference_audio` + + + + 模型的输入文本信息。包含文本提示词和可选参数。 + +文本提示词(必填):使用中英文字符描述要生成的视频。 + +参数(可选):在文本提示词后添加 --[parameters] 以控制视频规格: +- --resolution (--rs):480p、720p、1080p(默认:720p) +- --ratio (--rt):21:9、16:9、4:3、1:1、3:4、9:16、9:21、adaptive(默认:16:9 或 adaptive) +- --duration (--dur):3-12 秒(默认:5) +- --framepersecond (--fps):24(默认:24) +- --watermark (--wm):true/false(默认:false) +- --seed (--seed):-1 到 2^32-1(默认:-1) +- --camerafixed (--cf):true/false(默认:false) + +示例:"A beautiful landscape --ratio 16:9 --resolution 720p --duration 5" + + + + 输入内容的类型 + + 可选值:`text`、`image_url`、`video_url`、`audio_url` + + + + 输入视频对象。仅 Seedance 2.5、2.0 和 2.0 fast 支持视频输入。 + + + + 视频 URL 或 Asset ID。 +视频 URL:视频的公开 URL(mp4、mov)。 +Asset ID:格式为 asset://\ + + + + 视频时长,单位为秒。Seedance 2.5:[4,30] 或 -1(自动;视频编辑任务仅支持 -1)。Seedance 2.0 和 2.0 fast:[4,15] 或 -1(自动)。Seedance 1.5 pro:[4,12] 或 -1。Seedance 1.0:[2,12]。 + + 范围:`2` 到 `30` + + + + 任务超时阈值,单位为秒。默认 172800(48 小时)。范围:[3600, 259200]。 + + 范围:`3600` 到 `259200` + + + + 由 Seedance 2.5、2.0、2.0 fast 和 1.5 pro 支持。生成的视频是否包含与画面同步的音频。 +true:模型输出带有同步音频的视频。 +false:模型输出无声视频。 + + + + 要调用的模型 ID。支持的模型:seedance-1-5-pro-251215、seedance-1-0-pro-250528、seedance-1-0-pro-fast-251015、seedance-1-0-lite-t2v-250428、seedance-1-0-lite-i2v-250428、dreamina-seedance-2-0-260128、dreamina-seedance-2-0-fast-260128、dreamina-seedance-2-0-mini 和 dreamina-seedance-2-5-260628。直接通过 v1 调用 POST /proxy/byteplus/api/v3/contents/generations/tasks 时必须提供它:代理会拒绝任何其他值,未提供时则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。 + + + + 仅 Seedance 2.5。输出视频的容器格式。 +mp4:通用容器(H.264/AAC,yuv420p),兼容性广且文件大小更小。 +mov:专业容器(H.264 High 4:4:4 Predictive/PCM,yuv444p),颜色精度高,适合后期制作;文件大小更大。 + + 可选值:`mp4`、`mov` + + + + 生成视频的宽高比。Seedance 2.0 和 2.0 fast、1.5 pro 默认:adaptive。 + + 可选值:`16:9`、`4:3`、`1:1`、`3:4`、`9:16`、`21:9`、`9:21`、`adaptive` + + + + 视频分辨率。Seedance 2.5、2.0 和 2.0 fast、1.5 pro、1.0 lite 默认:720p。Seedance 1.0 pro 和 pro-fast 默认:1080p。 +注意:Seedance 2.0 和 2.0 fast 不支持 1080p。Seedance 2.5 支持 480p、720p 和 1080p。 + + 可选值:`480p`、`720p`、`1080p`、`4k` + + + + 是否返回生成视频的最后一帧图像。 +true:返回已生成视频的最后一帧图像。将此参数设置为 true 后,可通过调用“查询视频生成任务信息”获取最后一帧图像。最后一帧图像为 PNG 格式,其像素宽度和高度与已生成视频一致,且不包含水印。使用此参数可以生成多个连续视频:将前一个已生成视频的最后一帧用作下一个视频任务的第一帧,从而快速生成多个连续视频。 +false:不返回已生成视频的最后一帧图像。 + + + + 用于控制随机性的种子整数。范围:[-1, 2^32-1]。-1 表示使用随机种子。 + + 范围:`-1` 到 `4294967295` + + + + 用于处理的服务层级。Seedance 2.5、2.0 和 2.0 fast 不支持 flex(离线推理)。 + + 可能的值:`default`、`flex` + + + + 已生成视频是否包含水印。 + + +该文档由 Router 在 `GET /v2/models/byteplus/seedance-1-5-pro-251215/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 视频生成任务完成后返回的输出,其中包含输出视频的下载 URL,以及 BytePlus 返回最后一帧时的最后一帧下载 URL。`video_url` 和 `last_frame_url` 都会被重新托管到 Comfy 存储;这里的其他字段均来自 BytePlus 本身。可为空:BytePlus 会在任务完成 24 小时后清除这些 URL,因此在那之后轮询一个已成功的文档时,`content` 可能缺失或为 null。 + + + + 已生成视频最后一帧的下载 URL,仅当请求设置了 `return_last_frame` 时返回。不要根据此 URL 推断图像格式:BytePlus 在请求侧将最后一帧记录为 PNG,Router 会重新托管它收到的任何字节,并根据上游 Content-Type 或内容嗅探来确定其类型,只有两者都失败时才以 `image/jpeg` 作为最后的回退。Router 会将最后一帧重新托管到 Comfy 存储并重写此字段,因此它通常是有效期最长 24 小时的 Comfy 签名 URL:签发时按 24 小时签名,并从 23 小时的备忘缓存中重放,所以稍后一次轮询返回的 URL 可能只剩一小时有效期。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务完成 24 小时后清除该 URL。无论哪种情况链接都会过期,因此请下载该帧,而不是保存 URL。 + + + + 已生成视频的容器格式(mp4 或 mov),当 BytePlus 将其嵌套在 `content` 中时返回。Seedance 模型更常将它作为 `content` 的顶层同级字段返回,参见顶层的 `output_format` 字段;Router 会读取两者中存在的那个。 + + + + 输出视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是有效期最长 24 小时的 Comfy 签名 URL:签发时按 24 小时签名,并从 23 小时的备忘缓存中重放,所以稍后一次轮询返回的 URL 可能只剩一小时有效期。当无法执行重新托管时,该字段会保留 BytePlus 自己的 URL,而 BytePlus 会在任务完成 24 小时后清除该 URL,并在某些模型上限制为最多 100 次下载。无论哪种情况链接都会过期,因此请下载视频,而不是保存 URL。 + + + + 任务的创建时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 已生成视频的时长,以秒为单位。之所以声明为 number 而不是 integer,是因为 BytePlus 在这点上并不一致:已观察到视频任务返回整数秒,而 BytePlus 的其他接口会报告带小数的时长,因此客户端不能假定它是整数值。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 错误信息。如果任务成功,则返回 null。如果任务失败,则返回错误信息。 + + + + 错误码 + + + + 报错信息 + + + + 视频生成任务的 ID + + + + 任务所用模型的名称和版本 + + + + 已生成视频的容器格式(mp4 或 mov),作为 `content` 的同级字段在顶层返回,Seedance 视频任务查询就是在这一层返回它的。这是 BytePlus 自己的字段,原样转发。 + + + + 已生成视频的分辨率,例如 `1080p`。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + + + 任务实际使用的生成种子。这是 BytePlus 自己的字段,在成功的视频任务中返回并原样转发。 + + 格式:`int64` + + + + 任务的状态 + + 可能的值:`queued`、`running`、`cancelled`、`succeeded`、`failed`、`expired` + + + + 任务最后更新的时间。该值为以秒为单位的 UNIX 时间戳。 + + + + 该请求的 token 用量 + + + + 模型生成的 token 数量 + + + + 对于视频生成模型,不计算输入 token 数量,默认为 0。因此 total_tokens = completion_tokens。 + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A red fox trotting through a snowy pine forest", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "720p" +} +``` + +### 输出 + +```json +{ + "content": { + "last_frame_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/last-frame", + "video_url": "https://example.invalid/byteplus/seedance-1-0-lite-t2v-250428/generated.mp4" + }, + "created_at": 1767225600, + "duration": 5, + "error": null, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "seedance-1-5-pro-251215", + "output_format": "mp4", + "resolution": "1080p", + "seed": 1234567890123, + "status": "succeeded", + "updated_at": 1767225730 +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx b/zh/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx new file mode 100644 index 000000000..b0f6639b1 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx @@ -0,0 +1,313 @@ +--- +title: "将 Seededit 3.0 I2I 250628 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seededit-3-0-i2i-250628:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seededit 3.0 I2I 250628" +translationSourceHash: ac63c117 +translationFrom: development/comfy-router/models/byteplus/seededit-3-0-i2i-250628/code.mdx +translationBlockHashes: + "_intro": b2e7faed + "Quick start": 133e47db + "Schema": fe63d102 + "Examples": 130ffbde +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/byteplus/seededit-3-0-i2i-250628.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seededit-3-0-i2i-250628` 的 API 参考文档,由 Comfy Router 提供,模型来自 BytePlus。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `byteplus/seededit-3-0-i2i-250628` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seededit-3-0-i2i-250628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seededit-3-0-i2i-250628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seededit-3-0-i2i-250628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 架构 + +### 输入 + + + 控制输出图像与输入提示词的契合程度。范围 [1, 10]。值越高,对提示词的遵循度越强。seedream-3-0-t2i-250415 的默认值为 2.5,seededit-3-0-i2i-250628 的默认值为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持该参数。 + + Range: `1` to `10` + + Format: `float` + + + + seedream-5.0-pro、5.0-lite、4.5 和 4.0,以及 seededit-3.0-i2i 支持此参数。 + +输入待编辑图像的 Base64 编码或可访问的网址。seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张图像或多张图像(参见多图融合示例),而 seededit-3.0-i2i 仅支持单张图像输入。 + +• 图片网址:请确保图片网址可访问。 +• Base64 编码:格式必须为 data:image/\<图像格式>;base64,\。注意:\<图像格式> 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,其中包括 base64 膨胀后的数据以及所有参考图像。对于会超出该传输限制的输入,请使用网址。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 在 [1/16, 16] 范围内;seededit-3.0-i2i 在 [1/3, 3] 范围内 +• 宽度和高度(px):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 最多 14 张参考图像(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填项,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),大小不超过 30 MB,总像素在 [512x512, 6000x6000] 范围内,宽高比在 [1/16, 16] 范围内。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持该参数。 +true:图层分离模式。模型将单张输入图像分解为一张基础图像加多个图层(最多 16 个),并返回每个生成图层的位置和内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +false:标准图像生成模式,不执行图层分离。 +关于图层分离模式的说明:仅支持单张输入图像(传入多张图像会返回错误);如果任一图层生成失败,整个请求都会失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream 会返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接以 v1 调用 POST /proxy/byteplus/api/v3/images/generations 时必须提供该参数,代理会拒绝任何其他值,若省略则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段中填充它,因此 Router 调用方会省略它。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持该参数。 + + + + 设置提示词优化功能的模式。standard = 质量更高,生成时间更长。fast = 速度更快,但质量较为一般。 + + Possible values: `standard`, `fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持该参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 格式输出。 + + Possible values: `png`, `jpeg` + + + + 用于图像生成或变换的文本描述。 +在图层分离场景中为可选项(seedream-5.0-pro 且启用 layer_decomposition):如果提供了提示词,模型会根据提示词意图识别并分离你指定的元素;如果未提供提示词,模型会自动检测图像中的所有主要元素,并将其分离为独立的图层。 + + + + 指定响应中返回的生成图像的格式 + + Possible values: `url`, `b64_json` + + + + 用于控制图像生成随机性的随机种子。范围:[-1, 2147483647]。如果未指定,将自动生成一个种子。要复现相同的输出,请使用相同的种子值。 + + Range: `-1` to `2147483647` + + + + 控制是否禁用批处理生成功能。该参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:在自动模式下,模型会根据用户提示词自动判断是否返回多张图像,以及将包含多少张图像。 +disabled:禁用批处理生成功能。模型将只生成一张图像。 + + Possible values: `auto`, `disabled` + + + + 仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。 +批处理图像生成功能的配置。仅当 sequential_image_generation 设置为 auto 时,此参数才生效。 + + + + 指定本次请求中生成图像的最大数量。输入参考图像数量 + 生成图像数量 ≤ 15。 + + 范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定生成图像的尺寸(宽 x 高,单位为像素)。必须介于 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":生成图像的宽度和高度像素值。目前仅支持 adaptive。 +"seedream-4-0-250828":设置生成图像的规格。有两种方法,但不能同时使用。 + 方法 1 | 指定分辨率。可选值:1K、2K、4K + 方法 2 | 指定宽度和高度像素值。默认:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":有两种可用方法。 + 方法 1 | 指定分辨率。可选值:2K、4K + 方法 2 | 指定宽度和高度像素值。默认:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":有两种可用方法。 + 方法 1 | 指定分辨率。可选值:2K、3K + 方法 2 | 指定宽度和高度像素值。默认:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":有两种可用方法(不能同时使用)。 + 方法 1 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;最终尺寸由模型决定。可选值:1K、2K + 方法 2 | 指定宽度和高度像素值。默认:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +启用 layer_decomposition 的 "seedream-5-0-pro-260628":仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认:auto。 + 基础图像按指定分辨率输出,并保留原始输入图像的宽高比;每个图层按接近指定分辨率输出,并保留其在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比输出。介于 [1280x720, ~2048x2048] 之间的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 会将显式提供的 stream 标记设为 false,因为它会捕获完整的 JSON 结果。在 v1 代理上,此字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。false = 所有输出图像一次性返回。true = 每张输出图像生成后立即返回。 + + + + 指定是否为生成图像添加水印。false = 不添加水印,true = 添加带有 "AI generated" 标签的水印 + + +由 Router 在 `GET /v2/models/byteplus/seededit-3-0-i2i-250628/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + Unix 时间戳(以秒为单位),表示请求的创建时间 + + + + 包含所生成图像的信息。 +在图层分离场景中,数组的第一个元素是基础图像(z_index=0),后续元素是各图层,按 z_index 递增排序。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时) + + + + 当前图层在基础图像中所占区域的边界框信息。仅图层会返回该字段;基础图像覆盖整个画布,不返回 bounding_box。仅当 layer_decomposition 为 true 时返回。 + + + + 图层边界框的绝对像素坐标,以输出基础图像的坐标系为准,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 图层边界框的千分位量化(归一化)坐标,根据基础图像尺寸按比例映射到 [0, 1000] 的离散整数范围,最大截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,相比 name 提供更丰富的图层特征(如颜色、状态、材质)。仅图层会返回该字段;基础图像不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据分离主体的特征自动生成。仅图层会返回该字段;基础图像不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持该字段。 + + + + 图像的宽度和高度(以像素为单位),格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持该参数。 + + + + 用于下载图像的 URL(当 response_format 为 "url" 时) + + Format: `uri` + + + + 图层的堆叠顺序,从下到上递增:0 是最底层的图层(基础图像);数值越大位置越高。可使用它按正确的堆叠顺序将各图层重新合成为完整图像。仅当 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误码 + + + + 报错信息 + + + + 请求所使用的模型 ID + + + + + + + + 模型生成的图像数量 + + + + 输入到模型的图像数量。仅 seedream-5.0-pro 支持该字段。 + + + + 模型生成图片所使用的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seededit-3-0-i2i-250628", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx b/zh/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx new file mode 100644 index 000000000..1b9359f38 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx @@ -0,0 +1,310 @@ +--- +title: "在 Comfy Router 中使用 Seedream 3.0 T2I 250415" +description: "通过 Comfy Router 调用 byteplus/seedream-3-0-t2i-250415:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedream 3.0 T2I 250415" +translationSourceHash: 0f41197b +translationFrom: development/comfy-router/models/byteplus/seedream-3-0-t2i-250415/code.mdx +translationBlockHashes: + "_intro": dafe6167 + "Quick start": 42b1f4f6 + "Schema": c6abe2a5 + "Examples": 61ceb30b +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-3-0-t2i-250415.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-3-0-t2i-250415` 的 API 参考文档,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `byteplus/seedream-3-0-t2i-250415` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-3-0-t2i-250415", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-3-0-t2i-250415", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-3-0-t2i-250415 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### 输入 + + + 控制输出图像与输入提示词的贴合程度。取值范围 [1, 10]。值越高,提示词遵循度越强。seedream-3-0-t2i-250415 默认值为 2.5,seededit-3-0-i2i-250628 默认值为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持该参数。 + + 取值范围:`1` 到 `10` + + 格式:`float` + + + + Seedream-5.0-pro、5.0-lite、4.5 和 4.0,以及 seededit-3.0-i2i 支持该参数。 + +输入要编辑图像的 Base64 编码或可访问的 URL。Seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张图像或多张图像(参见多图融合示例),而 seededit-3.0-i2i 仅支持单张图像输入。 + +• 图片网址:请确保图片网址可访问。 +• Base64 编码:格式必须为 data:image/\;base64,\。注意:\ 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,包括 base64 编码膨胀和所有参考图像。对于会超出此传输限制的输入,请使用 URL。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 需在 [1/16, 16] 范围内;seededit-3.0-i2i 需在 [1/3, 3] 范围内 +• 宽度和高度(px):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 最多 14 张参考图像(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填项,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),大小不超过 30 MB,总像素在 [512x512, 6000x6000] 范围内,宽高比在 [1/16, 16] 范围内。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持该参数。 +是:图层分离模式。模型将单张输入图像分解为一张基础图像加多个图层(最多 16 个),并返回每个生成图层的位置和内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +否:标准图像生成模式;不执行图层分离。 +图层分离模式注意事项:仅支持单张输入图像(传入多张图像会返回错误);如果任一单个图层生成失败,整个请求即失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。若传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream 会返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接通过 v1 调用 POST /proxy/byteplus/api/v3/images/generations 时必须提供该参数,代理会拒绝任何其他值,若省略则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略该参数。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持该参数。 + + + + 设置提示词优化功能的模式。standard = 更高质量,生成时间更长。fast = 速度更快,但质量较为一般。 + + 可能的值:`standard`、`fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持该参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 输出。 + + 可能的值:`png`、`jpeg` + + + + 用于图像生成或转换的文本描述。 +在图层分离场景中为可选项(seedream-5.0-pro 启用 layer_decomposition 时):如果提供了提示词,模型会根据提示词意图识别并分离你指定的元素;如果未提供提示词,模型会自动检测图像中的所有主要元素并将其分离为独立图层。 + + + + 指定响应中返回的已生成图像的格式 + + 可能的值:`url`、`b64_json` + + + + 用于控制图像生成随机性的随机种子。取值范围:[-1, 2147483647]。如果未指定,将自动生成一个种子。要复现相同的输出,请使用相同的种子值。 + + 取值范围:`-1` 到 `2147483647` + + + + 控制是否禁用批处理生成功能。该参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:自动模式下,模型根据用户的提示词自动判断是否返回多张图像以及包含多少张图像。 +disabled:禁用批处理生成功能。模型仅生成一张图像。 + + 可能的值:`auto`、`disabled` + + 仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。 +批处理图像生成功能的配置。仅当 sequential_image_generation 设置为 auto 时,此参数才生效。 + + + + 指定本次请求中生成图像的最大数量。输入参考图像数量 + 生成图像数量 ≤ 15。 + + 范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定已生成图像的尺寸(宽度 x 高度,单位为像素)。必须介于 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":已生成图像的宽度和高度像素值。目前仅支持自适应。 +"seedream-4-0-250828":设置已生成图像的规格。可用两种方法,但不能同时使用。 + 方法 1 | 指定分辨率。可选值:1K、2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认值:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":可用两种方法。 + 方法 1 | 指定分辨率。可选值:2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认值:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":可用两种方法。 + 方法 1 | 指定分辨率。可选值:2K、3K + 方法 2 | 以像素为单位指定宽度和高度。默认值:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":可用两种方法(不能同时使用)。 + 方法 1 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;由模型决定最终尺寸。可选值:1K、2K + 方法 2 | 以像素为单位指定宽度和高度。默认值:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +"seedream-5-0-pro-260628" 在启用 layer_decomposition 时:仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认值:auto。 + 基础图像按指定分辨率输出,并采用原始输入图像的宽高比;每个图层输出的尺寸接近指定分辨率,同时保持它在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比进行输出。[1280x720, ~2048x2048] 范围内的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 会将显式提供的 stream 标志固定为 false,因为它捕获的是完整的 JSON 结果。在 v1 代理上,该字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。false = 所有输出图像一次性返回。true = 每张输出图像在生成后立即返回。 + + + + 指定是否为已生成图像添加水印。false = 不添加水印,true = 添加带有 "AI generated" 标签的水印 + + +由 Router 在 `GET /v2/models/byteplus/seedream-3-0-t2i-250415/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于验证调用的同一份文档。### 输出 + + + Unix 时间戳(以秒为单位),表示请求的创建时间 + + + + 包含已生成图像的相关信息。 +在图层分离场景中,数组的第一个元素是基础图像(z_index=0),后续元素是各个图层,按 z_index 递增的顺序排列。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时) + + + + 当前图层在基础图像中所占区域的边界框信息。仅图层会返回此字段;基础图像覆盖整个画布,不返回 bounding_box。仅在 layer_decomposition 为 true 时返回。 + + + + 该图层边界框的绝对像素坐标,以输出基础图像的坐标系为准,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 该图层边界框的千分位量化(归一化)坐标,根据基础图像尺寸按比例映射到 [0, 1000] 的离散整数范围,最大值截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,提供比 name 更丰富的图层特征(如颜色、状态、材质)。仅图层会返回此字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据分离主体的特征自动生成。仅图层会返回此字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持此字段。 + + + + 图像的宽度和高度(以像素为单位),格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持此参数。 + + + + 用于下载图像的 URL(当 response_format 为 "url" 时) + + 格式:`uri` + + + + 图层的堆叠顺序,从下到上递增:0 是最底层图层(基础图像);数值越大位置越高。可用它按正确的堆叠顺序将各图层重新合成为完整图像。仅在 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误代码 + + + + 报错信息 + + + + 请求所使用的模型 ID + + + + + + + + 模型已生成的图像数量 + + + + 输入到模型的图像数量。仅 seedream-5.0-pro 支持此字段。 + + + + 模型生成图片所使用的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-3-0-t2i-250415", + "usage": { + "generated_images": 1 + } +} +``` + + diff --git a/zh/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx b/zh/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx new file mode 100644 index 000000000..4956c7011 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx @@ -0,0 +1,313 @@ +--- +title: "将 Seedream 4.0 250828 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seedream-4-0-250828:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedream 4.0 250828" +translationSourceHash: 5f0d0629 +translationFrom: development/comfy-router/models/byteplus/seedream-4-0-250828/code.mdx +translationBlockHashes: + "_intro": 6d2bb0be + "Quick start": aadf580d + "Schema": 38af2b63 + "Examples": c5d15057 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-4-0-250828.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-4-0-250828` 的 API 参考文档,该模型由 Comfy Router 提供,来源于 BytePlus。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 发出的同一调用。 + +**Model ID:** `byteplus/seedream-4-0-250828` + +**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-0-250828", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-0-250828", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-0-250828 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### 输入 + + + 控制输出图像与输入提示词的对齐程度。范围 [1, 10]。数值越高,对提示词的遵循程度越强。seedream-3-0-t2i-250415 的默认值为 2.5,seededit-3-0-i2i-250628 的默认值为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持该参数。 + + 范围:`1` 至 `10` + + 格式:`float` + + + + seedream-5.0-pro、5.0-lite、4.5 和 4.0,以及 seededit-3.0-i2i 支持该参数。 + +输入待编辑图像的 Base64 编码或可访问的 URL。seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张图像或多张图像(参见多图混合示例),而 seededit-3.0-i2i 仅支持单图输入。 + +• 图片网址:请确保该图片网址可访问。 +• Base64 编码:格式必须为 data:image/\;base64,\。注意:\ 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,包括 base64 膨胀和所有参考图像。对于会超出该传输限制的输入,请使用 URL。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 为 [1/16, 16];seededit-3.0-i2i 为 [1/3, 3] +• 宽度和高度(px):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 最多 14 张参考图像(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填项,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),最大 30 MB,总像素在 [512x512, 6000x6000] 范围内,宽高比在 [1/16, 16] 范围内。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持该参数。 +true:图层分离模式。模型将单张输入图像分解为一张基础图像加多个图层(最多 16 个),并返回每个所生成图层的位置和内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +false:标准图像生成模式;不执行图层分离。 +关于图层分离模式的注意事项:仅支持单张输入图像(传入多张图像会返回错误);如果任一单个图层生成失败,整个请求即失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream 会返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接对 POST /proxy/byteplus/api/v3/images/generations 发起 v1 调用时必须提供该参数,代理会拒绝任何其他值,若省略则返回 400。该参数不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略该参数。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持该参数。 + + + + 设置提示词优化功能的模式。standard = 更高质量,生成时间更长。fast = 更快,但质量较为一般。 + + 可选值:`standard`、`fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持该参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 输出。 + + 可选值:`png`、`jpeg` + + + + 用于图像生成或转换的文本描述。 +在图层分离场景中为可选项(seedream-5.0-pro 且启用 layer_decomposition):如果提供了提示词,模型会根据提示词意图识别并分离你指定的元素;如果未提供提示词,模型会自动检测图像中的所有主要元素,并将其分离为独立图层。 + + + + 指定响应中返回的已生成图像的格式 + + 可选值:`url`、`b64_json` + + + + 用于控制图像生成随机性的随机种子。范围:[-1, 2147483647]。如果未指定,将自动生成一个种子。要复现相同的输出,请使用相同的种子值。 + + 范围:`-1` 至 `2147483647` + + + + 控制是否禁用批处理生成功能。该参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:在自动模式下,模型会根据用户的提示词自动判断是否返回多张图像以及包含多少张图像。 +disabled:禁用批处理生成功能。模型将只生成一张图像。 + + 可选值:`auto`、`disabled` + + + + 仅 seedream-5.0-lite、4.5 和 4.0 支持该参数(seedream-5.0-pro 不支持)。 +批量生成图像功能的配置。仅当 sequential_image_generation 设置为 auto 时,该参数才会生效。 + + + + 指定本次请求中最多生成的图像数量。输入参考图像数量 + 已生成图像数量 ≤ 15。 + + 取值范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定已生成图像的尺寸(宽度 x 高度,单位为像素)。必须介于 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":已生成图像的宽度和高度像素。目前仅支持 adaptive。 +"seedream-4-0-250828":设置已生成图像的规格。有两种方法可用,但不能同时使用。 + 方法 1 | 指定分辨率。可选值:1K、2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":有两种方法可用。 + 方法 1 | 指定分辨率。可选值:2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":有两种方法可用。 + 方法 1 | 指定分辨率。可选值:2K、3K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":有两种方法可用(不能同时使用)。 + 方法 1 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;由模型决定最终尺寸。可选值:1K、2K + 方法 2 | 以像素为单位指定宽度和高度。默认:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +"seedream-5-0-pro-260628" 启用 layer_decomposition 时:仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认:auto。 + 基础图像按指定分辨率输出,并保持原始输入图像的宽高比;每个图层输出的尺寸接近指定分辨率,同时保持其在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比进行输出。介于 [1280x720, ~2048x2048] 之间的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 会将显式提供的 stream 标志确定为 false,因为它捕获的是完整的 JSON 结果。在 v1 代理上,该字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持该参数(seedream-5.0-pro 不支持)。false = 一次性返回所有输出图像。true = 每张输出图像在生成完成后立即返回。 + + + + 指定是否为已生成图像添加水印。false = 不添加水印,true = 添加带有 'AI generated' 标记的水印 + + +由 Router 在 `GET /v2/models/byteplus/seedream-4-0-250828/openapi.json` 处提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + Unix 时间戳(单位为秒),表示请求创建的时间 + + + + 包含已生成图像的相关信息。 +在图层分离场景中,数组的第一个元素为底图(z_index=0),后续元素为图层,按 z_index 递增顺序排列。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时) + + + + 当前图层在底图中所占区域的边界框信息。仅图层会返回该字段;底图覆盖整个画布,不返回 bounding_box。仅当 layer_decomposition 为 true 时返回。 + + + + 图层边界框的绝对像素坐标,以输出底图的坐标系为准,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 图层边界框的千分比量化(归一化)坐标,按底图尺寸等比例映射到 [0, 1000] 的离散整数区间,最大截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,相比 name 提供更丰富的图层特征(如颜色、状态、材质)。仅图层会返回该字段;底图不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据被分离主体的特征自动生成。仅图层会返回该字段;底图不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持该字段。 + + + + 图像的宽度和高度(以像素为单位),格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持该参数。 + + + + 图像下载 URL(当 response_format 为 "url" 时) + + 格式:`uri` + + + + 图层的堆叠顺序,从下到上递增:0 为最底层(底图);值越大位置越高。可用它按正确的堆叠顺序将各图层重新合成为完整图像。仅当 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误代码 + + + + 报错信息 + + + + 请求使用的模型 ID + + + + + + + + 模型生成的图像数量 + + + + 输入模型的图像数量。仅 seedream-5.0-pro 支持该字段。 + + + + 模型生成图片所使用的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-0-250828", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx b/zh/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx new file mode 100644 index 000000000..9ac401739 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "将 Seedream 4.5 251128 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 byteplus/seedream-4-5-251128:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Seedream 4.5 251128" +translationSourceHash: efa9ee24 +translationFrom: development/comfy-router/models/byteplus/seedream-4-5-251128/code.mdx +translationBlockHashes: + "_intro": 598e0279 + "Quick start": 8ba3ab6e + "Schema": 9685e55c + "Examples": 3fde19f6 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-4-5-251128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-4-5-251128` 的 API 参考文档,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `byteplus/seedream-4-5-251128` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-4-5-251128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-4-5-251128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## Schema + +### Input + + + 控制输出图像与输入提示词的对齐程度。范围 [1, 10]。数值越高,提示词遵循度越强。seedream-3-0-t2i-250415 的默认值为 2.5,seededit-3-0-i2i-250628 的默认值为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持该参数。 + + 范围:`1` 到 `10` + + 格式:`float` + + + + Seedream-5.0-pro、5.0-lite、4.5 和 4.0,以及 seededit-3.0-i2i 支持该参数。 + +输入要编辑图像的 Base64 编码或可访问的网址。Seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张或多张图像(参见多图融合示例),而 seededit-3.0-i2i 仅支持单张图像输入。 + +• 图片网址:请确保图片网址可访问。 +• Base64 编码:格式必须为 data:image/\;base64,\。注意:\ 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,包括 base64 膨胀和所有参考图像。对于会超出该传输限制的输入,请使用网址。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 为 [1/16, 16];seededit-3.0-i2i 为 [1/3, 3] +• 宽度和高度(px):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 最多 14 张参考图像(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填项,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),最大 30 MB,总像素范围在 [512x512, 6000x6000] 之间,宽高比在 [1/16, 16] 之间。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持该参数。 +true:图层分离模式。模型将单张输入图像分解为一张基础图像加上多个图层(最多 16 个),并返回每个生成图层的位置与内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +false:标准图像生成模式;不执行图层分离。 +关于图层分离模式的说明:仅支持单张输入图像(传入多张图像会返回错误);如果任一单个图层生成失败,则整个请求失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。若传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream 会返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接向 POST /proxy/byteplus/api/v3/images/generations 发起的 v1 调用必须提供该参数,代理会拒绝任何其他值,若省略则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段中填充它,因此 Router 调用方会省略它。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持该参数。 + + + + 设置提示词优化功能的模式。standard = 更高质量,生成时间更长。fast = 更快,但质量较为一般。 + + 可能的值:`standard`、`fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持该参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 格式输出。 + + 可能的值:`png`、`jpeg` + + + + 用于图像生成或转换的文本描述。 +在图层分离场景中为可选(启用 layer_decomposition 的 seedream-5.0-pro):如果提供了 prompt,模型会根据提示词意图识别并分离你指定的元素;如果未提供 prompt,模型会自动检测图像中的所有主要元素并将其分离为独立图层。 + + + + 指定响应中返回的已生成图像的格式 + + 可能的值:`url`、`b64_json` + + + + 用于控制图像生成随机性的随机种子。范围:[-1, 2147483647]。如果未指定,将自动生成一个种子。要复现相同的输出,请使用相同的种子值。 + + 范围:`-1` 到 `2147483647` + + + + 控制是否禁用批处理生成功能。该参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:在自动模式下,模型会根据用户的提示词自动判断是否返回多张图像以及包含多少张图像。 +disabled:禁用批处理生成功能。模型将只生成一张图像。 + + 可能的值:`auto`、`disabled` + + + + 仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。 +批处理图像生成功能的配置。仅当 sequential_image_generation 设置为 auto 时,此参数才会生效。 + + + + 指定本次请求中最多可生成的图像数量。输入参考图像数量 + 生成图像数量 ≤ 15。 + + 范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定生成图像的尺寸(宽 x 高,单位为像素)。必须介于 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":生成图像的宽度和高度像素值。目前仅支持 adaptive。 +"seedream-4-0-250828":设置生成图像的规格。有两种方法可用,但不能同时使用。 + 方法一 | 指定分辨率。可选值:1K、2K、4K + 方法二 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":有两种方法可用。 + 方法一 | 指定分辨率。可选值:2K、4K + 方法二 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":有两种方法可用。 + 方法一 | 指定分辨率。可选值:2K、3K + 方法二 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":有两种方法可用(不能同时使用)。 + 方法一 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;由模型决定最终尺寸。可选值:1K、2K + 方法二 | 指定宽度和高度像素值。默认值:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +启用 layer_decomposition 的 "seedream-5-0-pro-260628":仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认值:auto。 + 基础图像按指定分辨率输出,并保持原始输入图像的宽高比;每个图层输出的尺寸接近指定分辨率,同时保持其在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比进行输出。介于 [1280x720, ~2048x2048] 之间的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 会将显式提供的 stream 标志固定为 false,因为它捕获的是完整的 JSON 结果。在 v1 代理上,此字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。false = 所有输出图像一次性返回。true = 每张输出图像生成后立即返回。 + + + + 指定是否为生成图像添加水印。false = 不添加水印,true = 添加带有 "AI generated" 标识的水印 + + +由 Router 在 `GET /v2/models/byteplus/seedream-4-5-251128/openapi.json` 提供的 schema 生成,也就是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + Unix 时间戳(单位:秒),表示该请求的创建时间 + + + + 包含已生成图像的相关信息。 +在图层分离场景中,数组的第一个元素是基础图像(z_index=0),后续元素为各个图层,按 z_index 递增排序。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时返回) + + + + 当前图层在基础图像中所占区域的边界框信息。仅图层返回该字段;基础图像覆盖整个画布,不返回 bounding_box。仅在 layer_decomposition 为 true 时返回。 + + + + 图层边界框的绝对像素坐标,以输出基础图像的坐标系为准,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 图层边界框的千分位量化(归一化)坐标,根据基础图像尺寸按比例映射到 [0, 1000] 的离散整数区间,最大截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,相比 name 提供更丰富的图层特征(如颜色、状态、材质)。仅图层返回该字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据分离主体的特征自动生成。仅图层返回该字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持该字段。 + + + + 图像的宽度和高度,单位为像素,格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持该参数。 + + + + 图像下载 URL(当 response_format 为 "url" 时返回) + + 格式:`uri` + + + + 图层的堆叠顺序,从下到上依次递增:0 为最底层(即基础图像);数值越大层级越高。可用于按照正确的堆叠顺序将各图层重新合成为完整图像。仅在 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误码 + + + + 报错信息 + + + + 该请求使用的模型 ID + + + + + + + + 模型生成的图像数量 + + + + 输入到模型的图像数量。仅 seedream-5.0-pro 支持该字段。 + + + + 模型生成图片所使用的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-4-5-251128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx b/zh/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx new file mode 100644 index 000000000..ceb4da3bd --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx @@ -0,0 +1,313 @@ +--- +title: "结合 Comfy Router 使用 Seedream 5.0 260128" +description: "通过 Comfy Router 调用 byteplus/seedream-5-0-260128:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedream 5.0 260128" +translationSourceHash: 2791f0e2 +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-260128/code.mdx +translationBlockHashes: + "_intro": 7058e811 + "Quick start": e3755750 + "Schema": 66ac7717 + "Examples": 70b6a1f5 +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-5-0-260128.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-5-0-260128` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `byteplus/seedream-5-0-260128` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-260128", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-260128", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-260128 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 架构 + +### 输入 + + + 控制输出图像与输入提示词的贴合程度。范围为 [1, 10]。值越高,对提示词的遵循越强。seedream-3-0-t2i-250415 默认为 2.5,seededit-3-0-i2i-250628 默认为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持此参数。 + + 范围:`1` 到 `10` + + 格式:`float` + + + + Seedream-5.0-pro、5.0-lite、4.5 和 4.0,以及 seededit-3.0-i2i 支持此参数。 + +输入要编辑图像的 Base64 编码或可访问的 URL。Seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张图像或多张图像(参见多图像混合示例),而 seededit-3.0-i2i 仅支持单图输入。 + +• 图像 URL:确保图像 URL 可访问。 +• Base64 编码:格式必须为 data:image/\;base64,\。注意:\ 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,其中包括 base64 展开和所有参考图像。对于会超出此传输限制的输入,请使用 URL。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 在 [1/16, 16] 范围内;seededit-3.0-i2i 在 [1/3, 3] 范围内 +• 宽度和高度(像素):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 参考图像最多 14 张(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),最大 30 MB,总像素在 [512x512, 6000x6000] 范围内,宽高比在 [1/16, 16] 范围内。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持此参数。 +是:图层分离模式。模型将单张输入图像分解为一张基础图像加多个图层(最多 16 个),并返回每个生成图层的位置和内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +否:标准图像生成模式;不执行图层分离。 +关于图层分离模式的说明:仅支持单张输入图像(传入多张图像会返回错误);如果任一图层生成失败,整个请求都会失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。如果传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream,将返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接对 POST /proxy/byteplus/api/v3/images/generations 发起 v1 调用时必须提供它;代理会拒绝任何其他值,若省略则返回 400。它不在此架构的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方可以省略。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持此参数。 + + + + 设置提示词优化功能的模式。standard = 更高质量,生成时间更长。fast = 速度更快,但质量更一般。 + + 可能的值:`standard`、`fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持此参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 格式输出。 + + 可能的值:`png`、`jpeg` + + + + 用于图像生成或变换的文本描述。 +在图层分离场景中为可选(启用 layer_decomposition 的 seedream-5.0-pro):如果提供了提示词,模型会根据提示词意图识别并分离你指定的元素;如果未提供提示词,模型会自动检测图像中的所有主要元素并将其分离为独立图层。 + + + + 指定响应中返回的已生成图像的格式 + + 可能的值:`url`、`b64_json` + + + + 用于控制图像生成随机性的随机种子。范围:[-1, 2147483647]。如果未指定,将自动生成种子。要复现相同的输出,请使用相同的种子值。 + + 范围:`-1` 到 `2147483647` + + + + 控制是否禁用批处理生成功能。此参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:在自动模式下,模型会根据用户的提示词自动判断是否返回多张图像以及包含多少张图像。 +disabled:禁用批处理生成功能。模型将只生成一张图像。 + + 可能的值:`auto`、`disabled` + + + + 仅 seedream-5.0-lite、4.5 和 4.0 支持该参数(seedream-5.0-pro 不支持)。 +批处理图像生成功能的配置。该参数仅在 sequential_image_generation 设置为 auto 时生效。 + + + + 指定本次请求中生成图像的最大数量。输入参考图像的数量 + 生成图像的数量 ≤ 15。 + + 范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定生成图像的尺寸(宽 x 高,单位为像素)。必须介于 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":生成图像的宽度和高度像素值。目前仅支持 adaptive。 +"seedream-4-0-250828":设置生成图像的规格。可采用两种方法,但不能同时使用。 + 方法 1 | 指定分辨率。可选值:1K、2K、4K + 方法 2 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":可采用两种方法。 + 方法 1 | 指定分辨率。可选值:2K、4K + 方法 2 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":可采用两种方法。 + 方法 1 | 指定分辨率。可选值:2K、3K + 方法 2 | 指定宽度和高度像素值。默认值:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":可采用两种方法(不能同时使用)。 + 方法 1 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;由模型决定最终尺寸。可选值:1K、2K + 方法 2 | 指定宽度和高度像素值。默认值:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +启用 layer_decomposition 的 "seedream-5-0-pro-260628":仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认值:auto。 + 基础图像按照指定分辨率输出,并保持原始输入图像的宽高比;每个图层按接近指定分辨率输出,并保持其在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比进行输出。介于 [1280x720, ~2048x2048] 范围内的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 将显式传入的 stream 标志设置为 false,因为它捕获的是完整的 JSON 结果。在 v1 代理上,该字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持该参数(seedream-5.0-pro 不支持)。false = 所有输出图像一次性返回。true = 每张输出图像在生成后立即返回。 + + + + 指定是否为生成图像添加水印。false = 不添加水印,true = 添加带有 "AI generated" 标签的水印 + + +根据 Router 在 `GET /v2/models/byteplus/seedream-5-0-260128/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前 Router 用于校验调用的文档相同。### 输出 + + + 表示请求创建时间的 Unix 时间戳(以秒为单位) + + + + 包含已生成图像的相关信息。 +在图层分离场景中,数组的第一个元素是基础图像(z_index=0),后续元素是各个图层,按 z_index 递增排序。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时) + + + + 当前图层在基础图像中所占区域的边界框信息。仅图层会返回该字段;基础图像覆盖整个画布,不返回 bounding_box。仅当 layer_decomposition 为 true 时返回。 + + + + 图层边界框的绝对像素坐标,以输出基础图像的坐标系为准,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 图层边界框的千分比量化(归一化)坐标,基于基础图像尺寸按比例映射到 [0, 1000] 的离散整数范围,最大截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,相比 name 提供了更丰富的图层特征(如颜色、状态、材质)。仅图层会返回该字段;基础图像不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据分离主体的特征自动生成。仅图层会返回该字段;基础图像不返回。仅当 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持该字段。 + + + + 图像的宽度和高度,以像素为单位,格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持该参数。 + + + + 图像下载 URL(当 response_format 为 "url" 时) + + 格式:`uri` + + + + 图层的堆叠顺序,自下而上递增:0 为最底层(基础图像);数值越大层级越高。可用它按正确的堆叠顺序将各图层重新合成为完整图像。仅当 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误码 + + + + 报错信息 + + + + 请求所使用的模型 ID + + + + + + + + 模型已生成的图像数量 + + + + 输入到模型的图像数量。仅 seedream-5.0-pro 支持该字段。 + + + + 模型生成图片所使用的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-260128", + "usage": { + "generated_images": 1 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx b/zh/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx new file mode 100644 index 000000000..ea6180ba2 --- /dev/null +++ b/zh/development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx @@ -0,0 +1,312 @@ +--- +title: "使用 Comfy Router 调用 Seedream 5.0 Pro 260628" +description: "通过 Comfy Router 调用 byteplus/seedream-5-0-pro-260628:端点、请求格式以及 Router 返回的响应。" +sidebarTitle: "Seedream 5.0 Pro 260628" +translationSourceHash: 0171cc6c +translationFrom: development/comfy-router/models/byteplus/seedream-5-0-pro-260628/code.mdx +translationBlockHashes: + "_intro": f8a92639 + "Quick start": aae3b073 + "Schema": 0936e6ef + "Examples": 60b5bdba +--- +{/* GENERATED FILE. Generated from router-schemas/byteplus/seedream-5-0-pro-260628.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`byteplus/seedream-5-0-pro-260628` 的 API 参考,由 Comfy Router 从 BytePlus 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `byteplus/seedream-5-0-pro-260628` + +**端点:** `POST https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "byteplus/seedream-5-0-pro-260628", + { + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("byteplus/seedream-5-0-pro-260628", { + prompt: "A red fox trotting through a snowy pine forest, cinematic lighting", + response_format: "url", + watermark: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/byteplus/seedream-5-0-pro-260628 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}" +``` + + +## 参数结构 + +### 输入 + + + 控制输出图像与输入提示词的贴合程度。范围 [1, 10]。值越大,对提示词的遵循程度越强。seedream-3-0-t2i-250415 的默认值为 2.5,seededit-3-0-i2i-250628 的默认值为 5.5。seedream-5.0-pro、5.0-lite、4.5 和 4.0 不支持此参数。 + + 范围:`1` 至 `10` + + 格式:`float` + + + + seedream-5.0-pro、5.0-lite、4.5 和 4.0 以及 seededit-3.0-i2i 支持此参数。 + +输入待编辑图像的 Base64 编码或可访问的 URL。seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持输入单张图像或多张图像(参见多图融合示例),而 seededit-3.0-i2i 仅支持单张图像输入。 + +• 图片网址:请确保图片网址可访问。 +• Base64 编码:格式必须为 data:image/\<图像格式>;base64,\。注意:\<图像格式> 必须为小写,例如 data:image/png;base64,\。 + +Comfy Router 将整个 JSON 请求限制为 10 MiB,其中包括 base64 扩展后的体积和所有参考图像。对于会超出此传输限制的输入,请使用 URL。 + +输入图像必须满足以下要求: +• 图像格式:jpeg、png(seedream-5.0-pro、5.0-lite、4.5 和 4.0 还支持 webp、bmp、tiff 和 gif;seedream-5.0-pro 还支持 heic 和 heif) +• 宽高比(宽度/高度):seedream-5.0-pro、5.0-lite、4.5 和 4.0 在 [1/16, 16] 范围内;seededit-3.0-i2i 为 [1/3, 3] +• 宽度和高度(px):> 14 +• 大小:不超过 10 MB(seedream-5.0-pro 为 30 MB) +• 总像素:seedream-5.0-pro 不超过 6000x6000(36,000,000 px) +• 最多 14 张参考图像(seedream-5.0-pro 为 10 张) + +在图层分离场景中(启用 layer_decomposition),image 为必填,且仅支持单张输入图像(传入多张图像会返回错误)。输入图像必须为 png、jpeg、webp、bmp、tiff 或 gif(不支持 heic 和 heif),最大 30 MB,总像素在 [512x512, 6000x6000] 范围内,宽高比在 [1/16, 16] 范围内。 + + + + 控制是否启用图层分离。仅 seedream-5.0-pro 支持此参数。 +是:图层分离模式。模型将单张输入图像分解为一张基础图像加多个图层(最多 16 个),并返回每个生成图层的位置和内容信息,包括堆叠顺序(z_index)、边界框(bounding_box)、名称(name)和描述(description)。 +否:标准图像生成模式;不执行图层分离。 +关于图层分离模式的说明:仅支持单张输入图像(传入多张图像会返回错误);如果任一单个图层生成失败,整个请求即失败,不支持部分成功;最多返回 17 张图像(1 张基础图像 + 16 个图层)。如果传入 sequential_image_generation、sequential_image_generation_options、tools 和 stream,会返回错误。 + + + + 模型标识符。支持的模型:seedream-3-0-t2i-250415、seededit-3-0-i2i-250628、seedream-4-0-250828、seedream-4-5-251128、seedream-5-0-260128 和 seedream-5-0-pro-260628。直接向 POST /proxy/byteplus/api/v3/images/generations 发起的 v1 调用必须提供该参数,代理会拒绝任何其他值,省略该参数则返回 400。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。 + + + + 提示词优化功能的配置。仅 seedream-5.0-pro/5.0-lite/4.5(仅支持 standard 模式)和 seedream-4.0 支持此参数。 + + + + 设置提示词优化功能的模式。standard = 质量更高,生成时间更长。fast = 速度更快,但质量较为一般。 + + 可选值:`standard`、`fast` + + + + 指定输出图像的格式。仅 seedream-5.0-pro 和 5.0-lite 支持此参数。在图层分离场景中,output_format 仅控制基础图像的格式;每个图层始终以 png 输出。 + + 可选值:`png`、`jpeg` + + + + 用于图像生成或变换的文本描述。 +在图层分离场景中为可选(seedream-5.0-pro 且启用 layer_decomposition 时):如果提供了提示词,模型会根据提示词意图识别并分离你指定的元素;如果未提供提示词,模型会自动检测图像中的所有主要元素,并将其分离为独立图层。 + + + + 指定响应中返回的已生成图像的格式 + + 可选值:`url`、`b64_json` + + + + 用于控制图像生成随机性的随机种子。范围:[-1, 2147483647]。如果未指定,将自动生成种子。如需复现相同的输出,请使用相同的种子值。 + + 范围:`-1` 至 `2147483647` + + + + 控制是否禁用批处理生成功能。此参数仅在 seedream-5.0-lite、4.5 和 4.0 上受支持(seedream-5.0-pro 不支持)。有效值: +auto:在自动模式下,模型根据用户提示词自动判断是否返回多张图像以及包含多少张图像。 +disabled:禁用批处理生成功能。模型仅生成一张图像。 + + 可选值:`auto`、`disabled` + + + + 仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。 +批处理图像生成功能的配置。仅当 sequential_image_generation 设置为 auto 时,此参数才会生效。 + + + + 指定本次请求中要生成的最大图像数量。输入参考图像数量 + 生成图像数量 ≤ 15。 + + 范围:`1` 到 `15` + + + + "seedream-3-0-t2i-250415":指定生成图像的尺寸(宽度 x 高度,单位为像素)。必须在 [512x512, 2048x2048] 之间 +"seededit-3-0-i2i-250628":生成图像的宽度和高度像素值。目前仅支持自适应。 +"seedream-4-0-250828":设置生成图像的规格。有两种方法可用,但不能同时使用。 + 方法 1 | 指定分辨率。可选值:1K、2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[1024x1024, 4096x4096],宽高比:[1/16, 16] +"seedream-4-5-251128":有两种方法可用。 + 方法 1 | 指定分辨率。可选值:2K、4K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[2560x1440, 4096x4096],宽高比:[1/16, 16] +"seedream-5-0-260128":有两种方法可用。 + 方法 1 | 指定分辨率。可选值:2K、3K + 方法 2 | 以像素为单位指定宽度和高度。默认:2048x2048,总像素:[2560x1440, ~3072x3072],宽高比:[1/16, 16] +"seedream-5-0-pro-260628":有两种方法可用(不能同时使用)。 + 方法 1 | 指定分辨率,并在提示词中描述图像的宽高比、形状或用途;最终尺寸由模型决定。可选值:1K、2K + 方法 2 | 以像素为单位指定宽度和高度。默认:1024x1024,总像素:[1024x1024 (1048576), 2048x2048 (4194304)],宽高比:[1/16, 16] +启用 layer_decomposition 的 "seedream-5-0-pro-260628":仅支持分辨率级别的方法。可选值:1K、1.5K、2K、auto。默认:auto。 + 基础图像按指定分辨率输出,并保持原始输入图像的宽高比;每个图层以接近指定分辨率的尺寸输出,并保持其在原始图像中的宽高比。 + auto:根据输入图像的尺寸和宽高比进行输出。[1280x720, ~2048x2048] 范围内的输入按原始输入尺寸输出;小于 1K 的输入按 1K 输出;大于 2K 的输入按 2K 输出。 + + + + Comfy Router 会将显式提供的 stream 标志设为 false,因为它会捕获完整的 JSON 结果。在 v1 代理上,此字段控制是否启用流式输出模式。仅 seedream-5.0-lite、4.5 和 4.0 支持此参数(seedream-5.0-pro 不支持)。false = 所有输出图像一次性返回。true = 每张输出图像在生成后立即返回。 + + + + 指定是否为生成图像添加水印。false = 不添加水印,true = 添加带有 "AI generated" 标记的水印 + + +由 Router 在 `GET /v2/models/byteplus/seedream-5-0-pro-260628/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。### 输出 + + + Unix 时间戳(以秒为单位),表示请求的创建时间 + + + + 包含已生成图像的相关信息。 +在图层分离场景中,数组的第一个元素是基础图像(z_index=0),后续元素是各个图层,按 z_index 递增的顺序排列。 + + + + Base64 编码的图像数据(当 response_format 为 "b64_json" 时) + + + + 当前图层在基础图像中所占区域的边界框信息。只有图层会返回此字段;基础图像覆盖整个画布,不返回 bounding_box。仅在 layer_decomposition 为 true 时返回。 + + + + 图层边界框的绝对像素坐标,采用输出基础图像的坐标系,左上角为 (0, 0)。坐标格式:[left, top, right, bottom]。 + + + + 图层边界框的千分比量化(归一化)坐标,根据基础图像尺寸按比例映射到 [0, 1000] 的离散整数区间,最大值截断为 1000。坐标格式:[left, top, right, bottom]。 + + + + 当前分离元素的详细描述,相比 name 提供更丰富的图层特征(如颜色、状态、材质)。只有图层会返回此字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 当前分离元素的名称/标签,由模型根据分离主体的特征自动生成。只有图层会返回此字段;基础图像不返回。仅在 layer_decomposition 为 true 时返回。 + + + + 输出图像的文件格式。仅 seedream-5.0-pro 支持此字段。 + + + + 图像的宽度和高度,以像素为单位,格式为 \x\。仅 seedream-5.0-pro、5.0-lite、4.5 和 4.0 支持此参数。 + + + + 图像下载的 URL(当 response_format 为 "url" 时) + + 格式:`uri` + + + + 图层的堆叠顺序,从下到上递增:0 是最底层的图层(基础图像);数值越大位置越高。可据此以正确的堆叠顺序将各图层重新合成为完整图像。仅在 layer_decomposition 为 true 时返回。 + + + + 错误信息(如有) + + + + 错误代码 + + + + 报错信息 + + + + 请求所使用的模型 ID + + + + + + + + 模型生成的图像数量 + + + + 输入到模型的图像数量。仅 seedream-5.0-pro 支持此字段。 + + + + 模型生成图片所消耗的 token 数量。 + + + + 本次请求消耗的 token 总数。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting", + "response_format": "url", + "watermark": false +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "size": "1024x1024", + "url": "https://example.invalid/byteplus/seedream-3-0-t2i-250415/generated.png" + } + ], + "model": "seedream-5-0-pro-260628", + "usage": { + "generated_images": 1 + } +} +``` + + diff --git a/zh/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx b/zh/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx new file mode 100644 index 000000000..1679e23d5 --- /dev/null +++ b/zh/development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx @@ -0,0 +1,134 @@ +--- +title: "将 Eleven Sfx V2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 elevenlabs/eleven_sfx_v2:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Eleven Sfx V2" +translationSourceHash: cd7478d8 +translationFrom: development/comfy-router/models/elevenlabs/eleven-sfx-v2/code.mdx +translationBlockHashes: + "_intro": 776f30c7 + "Quick start": 7e465cc1 + "Schema": fc56be8b + "Examples": 6f6a9333 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/elevenlabs/eleven_sfx_v2.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`elevenlabs/eleven_sfx_v2` 的 API 参考,由 Comfy Router 从 Elevenlabs 提供服务。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起相同的调用。 + +**模型 ID:** `elevenlabs/eleven_sfx_v2` + +**端点:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_sfx_v2", + { + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_sfx_v2", { + duration_seconds: 5, + text: "A distant rumble of thunder rolling across a valley.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_sfx_v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration_seconds\": 5, \"text\": \"A distant rumble of thunder rolling across a valley.\"}" +``` + + +## 模式 + +### 输入 + + + 将要生成的声音的时长,单位为秒。 +必须至少为 0.5,最多为 30。 +此路由上为必填:与上游 ElevenLabs API 不同(当该字段为 null 时, +上游会推测一个最佳时长),此路由会拒绝省略该字段的请求, +并返回 400 "Duration is required"。 +该字段保持可为 null,只是为了让显式的 null 成为一个格式良好的 +文档;它仍然会被拒绝。 +该值是请求计量所依据的数量。 + + 范围:`0.5` 到 `30` + + 格式:`double` + + + + 是否创建可平滑循环的音效。 +ElevenLabs 的文档说明此选项仅适用于 +'eleven_text_to_sound_v2' 模型,而此路由不予接受该模型 +(见 model_id),因此在这里它可能没有效果。 + + + + 用于声音生成的模型 ID。此路由仅接受 +'eleven_sfx_v2',其他任何值都会在请求到达 ElevenLabs 之前 +被拒绝并返回 400。它不在此模式的 `required` 列表中, +因为 Comfy Router 会从 /v2/models/elevenlabs/\{model} 的 +`{model}` 路径段填充它,所以 Router +调用方会省略它。 + + + + 提示词影响越高,生成结果就越贴近提示词, +同时生成结果的多样性也会降低。 +必须是 0 到 1 之间的值。默认为 0.3。 + + 范围:`0` 到 `1` + + 格式:`double` + + + + 将被转换为音效的文本。 + + +此内容根据 Router 在 `GET /v2/models/elevenlabs/eleven_sfx_v2/openapi.json` 提供的模式生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + +Router 不为此模型发布输出模式。 + +## 示例 + +### 输入 + +```json +{ + "duration_seconds": 5, + "text": "A distant rumble of thunder rolling across a valley." +} +``` + + + diff --git a/zh/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx b/zh/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx new file mode 100644 index 000000000..6aaba49e5 --- /dev/null +++ b/zh/development/comfy-router/models/elevenlabs/eleven-v3/code.mdx @@ -0,0 +1,172 @@ +--- +title: "将 Eleven V3 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 elevenlabs/eleven_v3:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Eleven V3" +translationSourceHash: c122bb0a +translationFrom: development/comfy-router/models/elevenlabs/eleven-v3/code.mdx +translationBlockHashes: + "_intro": df41671e + "Quick start": 9120bea9 + "Schema": fa6daefe + "Examples": ef5fbb0e +--- +{/* GENERATED FILE. Generated from router-schemas/elevenlabs/eleven_v3.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`elevenlabs/eleven_v3` 的 API 参考文档,由 Comfy Router 从 Elevenlabs 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `elevenlabs/eleven_v3` + +**端点:** `POST https://api.comfy.org/v2/models/elevenlabs/eleven_v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "elevenlabs/eleven_v3", + { + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("elevenlabs/eleven_v3", { + inputs: [ + { + text: "Hello from Comfy Router.", + voice_id: "21m00Tcm4TlvDq8ikWAM", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/elevenlabs/eleven_v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"inputs\": [{\"text\":\"Hello from Comfy Router.\",\"voice_id\":\"21m00Tcm4TlvDq8ikWAM\"}]}" +``` + + +## Schema + +### 输入 + + + 通过三种模式控制文本归一化: +'auto' - 系统自动决定是否应用文本归一化 +'on' - 始终应用文本归一化 +'off' - 跳过文本归一化 + + 可选值:`auto`、`on`、`off` + + + + 对话输入列表,每一项包含将被转换为语音的文本和语音 ID。 +唯一语音 ID 的最大数量为 10。 + + + + 要转换为语音的文本。 + + + + 用于生成的语音 ID。 + + + + 语言代码(ISO 639-1),用于为模型和文本归一化强制指定一种语言。 +如果模型不支持所提供的语言代码,将返回错误。 + + + + 将要使用的模型标识符。此路由仅接受 +'eleven_v3',不接受其他任何值;任何其他值都会在请求到达 +ElevenLabs 之前以 400 拒绝。 +上游 ElevenLabs 关于通过 GET /v1/models 查询 +可用模型集合的建议并不适用于此路由,因为此路由只提供一个模型。 +它不在本 schema 的 `required` 列表中,因为 Comfy Router +会从 /v2/models/elevenlabs/\{model} 的 `{model}` 路径段中 +填充该值,因此 Router 调用方会省略它。 + + + + 要应用于文本的发音词典定位符列表(id、version_id)。 +它们将按顺序应用。每次请求最多可使用 3 个定位符。 + + + + 发音词典的 ID + + + + 发音词典的版本 ID + + + + 如果指定,我们的系统将尽最大努力进行确定性采样。 +使用相同种子和参数的重复请求应返回相同的结果。 +必须是 0 到 4294967295 之间的整数。 + + 范围:`0` 到 `4294967295` + + + + 控制对话生成的设置 + + + + 决定语音的稳定程度以及每次生成之间的随机性。 +较低的值会为语音带来更广泛的情感范围。 +较高的值可能导致语音单调、情感表达有限。 + + 格式:`double` + + +根据 Router 在 `GET /v2/models/elevenlabs/eleven_v3/openapi.json` 提供的 schema 生成,该文档与 Router 在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + +Router 不发布此模型的输出 schema。 + +## 示例 + +### 输入 + +```json +{ + "inputs": [ + { + "text": "Hello from Comfy Router.", + "voice_id": "21m00Tcm4TlvDq8ikWAM" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/fal/h3-max-turbo/code.mdx b/zh/development/comfy-router/models/fal/h3-max-turbo/code.mdx new file mode 100644 index 000000000..223e23ba2 --- /dev/null +++ b/zh/development/comfy-router/models/fal/h3-max-turbo/code.mdx @@ -0,0 +1,169 @@ +--- +title: "将 H3 Max Turbo 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 fal/h3-max-turbo:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "H3 Max Turbo" +translationSourceHash: 4587bb42 +translationFrom: development/comfy-router/models/fal/h3-max-turbo/code.mdx +translationBlockHashes: + "_intro": 000b76c4 + "Quick start": 3f4586dc + "Schema": fa803ecb + "Examples": 53e0f9d0 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/h3-max-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 fal 提供的 `fal/h3-max-turbo` API 参考文档。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 执行相同的调用。 + +**模型 ID:** `fal/h3-max-turbo` + +**端点:** `POST https://api.comfy.org/v2/models/fal/h3-max-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max-turbo", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max-turbo", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## Schema + +### 输入 + + + 宽高比:21:9、16:9、4:3、1:1、3:4 或 9:16。 + + + + 已生成视频的时长,单位为秒。 + + + + 是否启用安全检查器。 + + + + 用于视频生成的文本提示词。 + + + + 生成之前重写提示词的投入程度:balanced 或 quality。 + + + + 已生成视频的分辨率:480P 或 768P。 + + + + 随机种子。省略时会随机选择一个种子。 + + + + 以 base64 而非 CDN URL 的形式返回生成的视频。 + + +由 Router 在 `GET /v2/models/fal/h3-max-turbo/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用来校验调用的同一份文档。 + +### 输出 + + + 扩展之后的提示词,即发送给模型的提示词。 + + + + 端到端耗时明细(秒)。 + + + + 已生成的视频文件。 + + + + 视频文件的 MIME 类型。 + + + + 视频文件的名称。 + + + + 视频文件的大小,单位为字节。 + + + + 已生成视频的 URL。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 输出 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + diff --git a/zh/development/comfy-router/models/fal/h3-max/code.mdx b/zh/development/comfy-router/models/fal/h3-max/code.mdx new file mode 100644 index 000000000..31a36d101 --- /dev/null +++ b/zh/development/comfy-router/models/fal/h3-max/code.mdx @@ -0,0 +1,170 @@ +--- +title: "在 Comfy Router 中使用 H3 Max" +description: "通过 Comfy Router 调用 fal/h3-max:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "H3 Max" +translationSourceHash: 3c959af9 +translationFrom: development/comfy-router/models/fal/h3-max/code.mdx +translationBlockHashes: + "_intro": 9639e44f + "Quick start": 09bfe825 + "Schema": 9d6db301 + "Examples": 53e0f9d0 +--- +{/* GENERATED FILE. Generated from router-schemas/fal/h3-max.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`fal/h3-max` 的 API 参考,由 Comfy Router 从 fal 提供。 + +## 快速开始 + +在[您的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `fal/h3-max` + +**端点:** `POST https://api.comfy.org/v2/models/fal/h3-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/h3-max", + { + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/h3-max", { + duration: 5, + prompt: "a red fox running through a snowy forest", + prompt_expansion_mode: "balanced", + resolution: "480P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/h3-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"prompt\": \"a red fox running through a snowy forest\", \"prompt_expansion_mode\": \"balanced\", \"resolution\": \"480P\"}" +``` + + +## Schema + +### 输入 + + + 宽高比:21:9、16:9、4:3、1:1、3:4 或 9:16。 + + + + 已生成视频的时长,单位为秒。 + + + + 启用安全检查器。 + + + + 用于生成视频的文本提示词。 + + + + 在生成之前为重写提示词投入多少精力:balanced 或 quality。 + + + + 已生成视频的分辨率:480P 或 768P。 + + + + 随机种子。省略时会选择一个随机种子。 + + + + 以 base64 返回已生成的视频,而不是 CDN URL。 + + +本文档根据 Router 在 `GET /v2/models/fal/h3-max/openapi.json` 提供的 schema 生成,它也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 发送给模型时经过扩展之后的提示词。 + + + + 端到端耗时明细(秒)。 + + + + 已生成的视频文件。 + + + + 视频文件的 MIME 类型。 + + + + 视频文件的名称。 + + + + 视频文件的大小,单位为字节。 + + + + 已生成视频的 URL。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 5, + "prompt": "a red fox running through a snowy forest", + "prompt_expansion_mode": "balanced", + "resolution": "480P" +} +``` + +### 输出 + +```json +{ + "expanded_prompt": "a single red maple leaf falling onto still water, cinematic, 4k", + "timings": { + "inference": 42.5 + }, + "video": { + "content_type": "video/mp4", + "file_name": "output.mp4", + "file_size": 4194304, + "url": "https://example.invalid/fal/minimax/h3-max/output.mp4" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/fal/patina/code.mdx b/zh/development/comfy-router/models/fal/patina/code.mdx new file mode 100644 index 000000000..71399277b --- /dev/null +++ b/zh/development/comfy-router/models/fal/patina/code.mdx @@ -0,0 +1,158 @@ +--- +title: "将 Patina 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 fal/patina:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Patina" +translationSourceHash: fcac0478 +translationFrom: development/comfy-router/models/fal/patina/code.mdx +translationBlockHashes: + "_intro": 325742dd + "Quick start": 834ddc5c + "Schema": 44320e46 + "Examples": a3177476 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/fal/patina.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`fal/patina` 的 API 参考,由 Comfy Router 从 fal 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `fal/patina` + +**端点:** `POST https://api.comfy.org/v2/models/fal/patina` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "fal/patina", + { + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("fal/patina", { + image_url: "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/fal/patina \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png\"}" +``` + + +## 模式 + +### 输入 + + + 为图像启用安全检查器。 + + + + 输入图像的 URL(照片或渲染图)。 + + + + 要预测哪些 PBR 贴图。默认为全部五种。 + + + + 输出图像格式:jpeg、png 或 webp。 + + + + 用于可复现降噪的随机种子。 + + + + 如果为 true,则以 data URI 形式返回图像,而不是 CDN URL。 + + +该模式由 Router 在 `GET /v2/models/fal/patina/openapi.json` 提供,也是在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 已生成的可平铺纹理图像,以及预测得到的 PBR 材质贴图。基础纹理只有 url;每个贴图条目还带有 map_type。 + + + + PBR 贴图类型(basecolor、normal、roughness、metalness、height)。基础纹理图像没有此项。 + + + + 已生成图像的 URL。 + + + + 用于纹理生成的提示词(可能经过扩展)。 + + + + 用于纹理生成的种子。 + + + + 端到端耗时明细(秒)。 + + +## 示例 + +### 输入 + +```json +{ + "image_url": "https://storage.googleapis.com/falserverless/gallery/patina-blog-hero-render.png" +} +``` + +### 输出 + +```json +{ + "images": [ + { + "map_type": "basecolor", + "url": "https://example.invalid/fal/patina/basecolor.png" + }, + { + "map_type": "normal", + "url": "https://example.invalid/fal/patina/normal.png" + }, + { + "map_type": "roughness", + "url": "https://example.invalid/fal/patina/roughness.png" + } + ], + "prompt": "weathered copper roof tiles", + "seed": 1234567, + "timings": { + "inference": 6.25 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx b/zh/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx new file mode 100644 index 000000000..e49bfed4b --- /dev/null +++ b/zh/development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx @@ -0,0 +1,162 @@ +--- +title: "将 AI Image Upscaler Precision V2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 freepik/ai-image-upscaler-precision-v2:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "AI Image Upscaler Precision V2" +translationSourceHash: f85f4df6 +translationFrom: development/comfy-router/models/freepik/ai-image-upscaler-precision-v2/code.mdx +translationBlockHashes: + "_intro": 6951b8f3 + "Quick start": 6df99e76 + "Schema": 88d38911 + "Examples": a5cb63c4 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-image-upscaler-precision-v2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 Freepik 提供的 `freepik/ai-image-upscaler-precision-v2` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `freepik/ai-image-upscaler-precision-v2` + +**端点:** `POST https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-image-upscaler-precision-v2", + { + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-image-upscaler-precision-v2", { + image: "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + scale_factor: 8, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-image-upscaler-precision-v2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80\", \"scale_factor\": 8}" +``` + + +## Schema + +### 输入 + + + 图像处理风格: +- sublime:针对艺术与插画类图像优化 +- photo:针对摄影类图像优化 +- photo_denoiser:专为带噪波的照片设计,具备降噪能力 + + 可选值:`sublime`、`photo`、`photo_denoiser` + + + + 待放大的来源图像。支持以下两种形式: +- 指向该图像的公开可访问 HTTPS URL +- base64 编码的图像字符串 + + + + 图像缩放倍数。决定输出图像相比输入图像放大的程度。 + + 范围:`2` 至 `16` + + + + 图像锐度强度控制。数值越高,边缘轮廓与清晰度越强。 + + 范围:`0` 至 `100` + + + + 智能颗粒/纹理增强。数值越高,添加的细腻纹理越多。 + + 范围:`0` 至 `100` + + + + 超精细细节增强级别。数值越高,生成的细节越繁复。 + + 范围:`0` 至 `100` + + + + 可选的回调 URL,用于在图像放大任务完成时接收异步通知。 + + 格式:`uri` + + +本文档由 Router 在 `GET /v2/models/freepik/ai-image-upscaler-precision-v2/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 用于校验调用的文档为同一份。 + +### 输出 + + + + + + + 已完成生成的图像 URL 列表。在 Router 返回的文档中该字段必定存在且非空;这个列表就是结果本身。这些链接由 Freepik 提供,并且会过期。 + + + + 可选值:`COMPLETED` + + + + 格式:`uuid` + + +## 示例 + +### 输入 + +```json +{ + "image": "https://img.magnific.com/free-photo/light-through-mountains_395237-33.jpg?semt=ais_hybrid&w=740&q=80", + "scale_factor": 8 +} +``` + +### 输出 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-image-upscaler-precision-v2/upscaled.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx new file mode 100644 index 000000000..d5e85900e --- /dev/null +++ b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx @@ -0,0 +1,136 @@ +--- +title: "将 AI Skin Enhancer Creative 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 freepik/ai-skin-enhancer-creative:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "AI Skin Enhancer Creative" +translationSourceHash: d3af36a1 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-creative/code.mdx +translationBlockHashes: + "_intro": e723a5f3 + "Quick start": c26388b9 + "Schema": 914d2ba2 + "Examples": f51546bd +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/freepik/ai-skin-enhancer-creative.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-creative` 的 API 参考,由 Comfy Router 从 Freepik 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `freepik/ai-skin-enhancer-creative` + +**端点:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-creative", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-creative", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-creative \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## Schema + +### 输入 + + + 输入图像。支持 Base64 编码或 HTTPS URL(必须可公开访问)。 + + + + 锐化强度 + + 范围:`0` 到 `100` + + + + 智能颗粒强度 + + 范围:`0` 到 `100` + + + + 用于异步通知的可选回调 URL。 + + 格式:`uri` + + +本文档由 Router 在 `GET /v2/models/freepik/ai-skin-enhancer-creative/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 用于校验调用的文档为同一份。 + +### 输出 + + + + + + + 已完成生成的图像 URL。在 Router 返回的文档中该字段存在且非空;这个列表就是结果本身。这些链接由 Freepik 提供,并且会过期。 + + + + 可能的值:`COMPLETED` + + + + 格式:`uuid` + + +## 示例 + +### 输入 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 输出 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-creative/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx new file mode 100644 index 000000000..0e3c42707 --- /dev/null +++ b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx @@ -0,0 +1,141 @@ +--- +title: "将 AI Skin Enhancer Faithful 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 freepik/ai-skin-enhancer-faithful:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "AI Skin Enhancer Faithful" +translationSourceHash: 676f6483 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-faithful/code.mdx +translationBlockHashes: + "_intro": 79e82606 + "Quick start": 42aab383 + "Schema": dd345c18 + "Examples": b81e3b45 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-faithful.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-faithful` 的 API 参考,由 Freepik 通过 Comfy Router 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `freepik/ai-skin-enhancer-faithful` + +**端点:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-faithful", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-faithful", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-faithful \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## 模式 + +### 输入 + + + 输入图像。支持 Base64 编码或 HTTPS URL(必须可公开访问)。 + + + + 锐化强度 + + 范围:`0` 到 `100` + + + + 皮肤细节增强程度 + + 范围:`0` 到 `100` + + + + 智能颗粒强度 + + 范围:`0` 到 `100` + + + + 可选的回调 URL,用于异步通知。 + + 格式:`uri` + + +由 Router 在 `GET /v2/models/freepik/ai-skin-enhancer-faithful/openapi.json` 提供的模式生成,Router 在请求到达提供商之前,正是依据同一份文档来校验调用。 + +### 输出 + + + + + + + 已完成的生成结果的图像 URL。在 Router 返回的文档中存在且非空;这个列表就是结果本身。这些链接由 Freepik 提供,并且会过期。 + + + + 可能的值:`COMPLETED` + + + + 格式:`uuid` + + +## 示例 + +### 输入 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 输出 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-faithful/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + diff --git a/zh/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx new file mode 100644 index 000000000..09b29098d --- /dev/null +++ b/zh/development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx @@ -0,0 +1,142 @@ +--- +title: "搭配 Comfy Router 使用 AI Skin Enhancer Flexible" +description: "通过 Comfy Router 调用 freepik/ai-skin-enhancer-flexible:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "AI Skin Enhancer Flexible" +translationSourceHash: b75efd69 +translationFrom: development/comfy-router/models/freepik/ai-skin-enhancer-flexible/code.mdx +translationBlockHashes: + "_intro": d6c2cb7e + "Quick start": 394b124a + "Schema": 70d4c10f + "Examples": 4255df63 +--- +{/* GENERATED FILE. Generated from router-schemas/freepik/ai-skin-enhancer-flexible.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`freepik/ai-skin-enhancer-flexible` 的 API 参考文档,由 Comfy Router 提供,来源于 Freepik。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的相同调用。 + +**模型 ID:** `freepik/ai-skin-enhancer-flexible` + +**端点:** `POST https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "freepik/ai-skin-enhancer-flexible", + { + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("freepik/ai-skin-enhancer-flexible", { + image: "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/freepik/ai-skin-enhancer-flexible \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80\"}" +``` + + +## Schema + +### 输入 + + + 输入图像。支持 Base64 编码或 HTTPS URL(必须可公开访问)。 + + + + 灵活皮肤增强器的优化目标 + + 可选值:`enhance_skin`、`improve_lighting`、`enhance_everything`、`transform_to_real`、`no_make_up` + + + + 锐化强度 + + 范围:`0` 到 `100` + + + + 智能颗粒强度 + + 范围:`0` 到 `100` + + + + 可选的异步通知回调 URL。 + + 格式:`uri` + + +该文档由 Router 在 `GET /v2/models/freepik/ai-skin-enhancer-flexible/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 用于校验调用的文档完全相同。 + +### 输出 + + + + + + + 已完成生成的图像 URL。在 Router 返回的文档中始终存在且非空;该列表本身就是结果。这些链接由 Freepik 提供,并且会过期。 + + + + 可选值:`COMPLETED` + + + + 格式:`uuid` + + +## 示例 + +### 输入 + +```json +{ + "image": "https://img.magnific.com/free-photo/portrait-woman_395237-33.jpg?w=740&q=80" +} +``` + +### 输出 + +```json +{ + "data": { + "generated": [ + "https://example.invalid/freepik/ai-skin-enhancer-flexible/enhanced.png" + ], + "status": "COMPLETED", + "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx b/zh/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx new file mode 100644 index 000000000..11f04b031 --- /dev/null +++ b/zh/development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx @@ -0,0 +1,237 @@ +--- +title: "搭配 Comfy Router 使用 Gemini Omni 1.1 Flash" +description: "通过 Comfy Router 调用 gemini-interactions/gemini-omni-1.1-flash:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Gemini Omni 1.1 Flash" +translationSourceHash: 511d9d6a +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-1-1-flash/code.mdx +translationBlockHashes: + "_intro": 491ed41c + "Quick start": 5b337d94 + "Schema": 3db003f3 + "Examples": 02c0f0cf +--- +{/* GENERATED FILE. Generated from router-schemas/gemini-interactions/gemini-omni-1.1-flash.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-1.1-flash` 的 API 参考文档,由 Comfy Router 从 Gemini Interactions 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `gemini-interactions/gemini-omni-1.1-flash` + +**端点:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-1.1-flash", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-1.1-flash", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-1.1-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## Schema + +### 输入 + + + 可以是提示词字符串,也可以是类型化内容部分的数组(文本、图像、音频、视频、文档)。 + + + + Gemini 模型标识符(例如 `gemini-omni-flash-preview`)。在 Comfy Router 路由 `POST /v2/models/gemini-interactions/{model}` 上,它由路径提供,可以省略。此操作所支持的拼写,也就是 Comfy Router 以 `gemini-interactions/` 寻址的集合,为 gemini-omni-flash-preview 和 gemini-omni-1.1-flash(supportedGeminiInteractionModels);此处将它们直接列出,而不是限制为 enum,因为代理会自行校验模型,并对它不支持的拼写返回自身的 400。 + + + + 先前存储的交互的 ID,可实现有状态的多轮视频编辑。 + + +由 Router 在 `GET /v2/models/gemini-interactions/gemini-omni-1.1-flash/openapi.json` 提供的 schema 生成,与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + + + + + + + + + + + + + 在 Router 响应中始终为 `completed`。提供商的其他状态(`in_progress`、`requires_action`、`failed`、`cancelled`、`incomplete`、`budget_exceeded`)不会以 200 的形式经由 Router 到达调用方;它们会作为携带提供商响应体的 Comfy Router 错误返回。 + + 可能的值:`completed` + + + + 按顺序排列的交互时间线。此处从 `GeminiInteraction` 上无类型的 `steps` 收窄而来,以便输出叶子节点可寻址;提供商会不断添加步骤类型,因此每一项都是 `additionalProperties: true`,只声明 Router 调用方会读取的字段。 + + + + 此步骤的类型化内容块。 + + + + Base64 编码的内联媒体,出现在以内联方式传递的媒体块上。Google 将内联媒体限制为 4 MB,超过该大小则要求使用 `delivery: uri`。 + + + + 媒体块上 `data` 或 `uri` 的媒体类型。 + + + + 已生成的文本。出现在 `text` 块上,这也正是每夜 Router SDK 用例所断言的叶子节点,具体是在 `model_output` 步骤上(`steps[type=model_output].content[].text`)。 + + + + 块类型:`text`、`image`、`audio`、`video` 或 `document`。 + + + + 对带外传递的媒体的引用,由调用方从其所指定的 URI 获取。 + + + + 步骤类型。`model_output` 是已生成的回答;`user_input` 是检索路由回显的调用方自身轮次;`thought` 是内部推理。工具步骤(`function_call`、`function_result`、`code_execution_call`、`google_search_call` 等)是开放式的,Google 会不断添加。 + + + + 一次 Gemini 交互的 token 用量。 + + + + 单一模态的 token 数量。 + + + + `text`、`image`、`audio`、`video`、`document` 之一。 + + + + + + + + 单一模态的 token 数量。 + + + + `text`、`image`、`audio`、`video`、`document` 之一。 + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 输出 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx b/zh/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx new file mode 100644 index 000000000..0e3d487cf --- /dev/null +++ b/zh/development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx @@ -0,0 +1,237 @@ +--- +title: "使用 Comfy Router 调用 Gemini Omni Flash Preview" +description: "通过 Comfy Router 调用 gemini-interactions/gemini-omni-flash-preview:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gemini Omni Flash Preview" +translationSourceHash: fa5114f1 +translationFrom: development/comfy-router/models/gemini-interactions/gemini-omni-flash-preview/code.mdx +translationBlockHashes: + "_intro": 57398175 + "Quick start": bc6cb831 + "Schema": 32f6dbfb + "Examples": 02c0f0cf +--- +{/* GENERATED FILE. Generated from router-schemas/gemini-interactions/gemini-omni-flash-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`gemini-interactions/gemini-omni-flash-preview` 的 API 参考文档,由 Comfy Router 从 Gemini Interactions 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `gemini-interactions/gemini-omni-flash-preview` + +**端点:** `POST https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "gemini-interactions/gemini-omni-flash-preview", + { + "input": "Reply with the single word: ok", + "stream": False, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("gemini-interactions/gemini-omni-flash-preview", { + input: "Reply with the single word: ok", + stream: false, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/gemini-interactions/gemini-omni-flash-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"stream\": false}" +``` + + +## 结构 + +### 输入 + + + 可以是提示词字符串,也可以是类型化内容部分的数组(文本、图像、音频、视频、文档)。 + + + + Gemini 模型标识符(例如 `gemini-omni-flash-preview`)。在 Comfy Router 路由 `POST /v2/models/gemini-interactions/{model}` 上,它由路径提供,可以省略。此操作所服务的拼写(即 Comfy Router 以 `gemini-interactions/` 寻址的集合)为 gemini-omni-flash-preview 和 gemini-omni-1.1-flash(supportedGeminiInteractionModels);这里将它们逐一写出,而不是限制为枚举,因为代理会自行校验模型,并对它不服务的拼写返回自己的 400。 + + + + 先前存储的交互 ID,可实现有状态的多轮视频编辑。 + + +由 Router 在 `GET /v2/models/gemini-interactions/gemini-omni-flash-preview/openapi.json` 提供的 schema 生成,也就是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + 在 Router 响应中始终为 `completed`。提供商的其他状态(`in_progress`、`requires_action`、`failed`、`cancelled`、`incomplete`、`budget_exceeded`)不会以 200 的形式通过 Router 到达调用方;它们会作为携带提供商响应体的 Comfy Router 错误返回。 + + 可能的值:`completed` + + + + 交互时间线,按顺序排列。这里从 `GeminiInteraction` 上无类型的 `steps` 收窄而来,以便输出叶子可寻址;提供商会不断添加步骤类型,因此条目为 `additionalProperties: true`,只声明 Router 调用方会读取的字段。 + + + + 此步骤的类型化内容块。 + + + + 内联交付的媒体块上,以 Base64 编码的内联媒体。Google 将内联媒体上限设为 4 MB,超过则要求使用 `delivery: uri`。 + + + + 媒体块上 `data` 或 `uri` 的媒体类型。 + + + + 已生成的文本。出现在 `text` 块上,这正是每夜 Router SDK 用例所断言的叶子:具体是在 `model_output` 步骤上(`steps[type=model_output].content[].text`)。 + + + + 块类型:`text`、`image`、`audio`、`video` 或 `document`。 + + + + 对带外交付的媒体的引用,由调用方从其所指明的 URI 获取。 + + + + 步骤类型。`model_output` 是已生成的回答;`user_input` 是检索路由回显的调用方自身轮次;`thought` 是内部推理。工具步骤(`function_call`、`function_result`、`code_execution_call`、`google_search_call` 等)是开放式的,Google 会不断添加。 + + + + Gemini 交互的 token 用量。 + + + + 单一模态的 token 计数。 + + + + `text`、`image`、`audio`、`video`、`document` 之一。 + + + + + + + + 单一模态的 token 计数。 + + + + `text`、`image`、`audio`、`video`、`document` 之一。 + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "stream": false +} +``` + +### 输出 + +```json +{ + "id": "interactions/3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "object": "interaction", + "status": "completed", + "steps": [ + { + "content": [ + { + "text": "ok", + "type": "text" + } + ], + "type": "model_output" + } + ], + "usage": { + "input_tokens_by_modality": [ + { + "modality": "text", + "tokens": 9 + } + ], + "output_tokens_by_modality": [ + { + "modality": "text", + "tokens": 2 + } + ], + "total_cached_tokens": 0, + "total_input_tokens": 9, + "total_output_tokens": 2, + "total_thought_tokens": 0, + "total_tokens": 11 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx b/zh/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx new file mode 100644 index 000000000..826921cf0 --- /dev/null +++ b/zh/development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx @@ -0,0 +1,570 @@ +--- +title: "使用 Gemini 2.5 Flash Image 与 Comfy Router" +description: "通过 Comfy Router 调用 vertexai/gemini-2.5-flash-image:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gemini 2.5 Flash Image" +translationSourceHash: 6835dcc5 +translationFrom: development/comfy-router/models/google/gemini-2-5-flash-image/code.mdx +translationBlockHashes: + "_intro": 825f99d2 + "Quick start": d08e1cfe + "Schema": cbd6697c + "Examples": 19258aaa +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-2.5-flash-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-2.5-flash-image` 的 API 参考,由 Comfy Router 从 Google 提供。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `vertexai/gemini-2.5-flash-image` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash-image", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash-image", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## 架构 + +### 输入 + + + 与模型当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中所指定文件的媒体类型。可接受的值包括以下几种。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以原始字节形式提供的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可指定 3000 张图像。 + + + + 要内联包含在提示词中的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小上限:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中所指定文件的媒体类型。可接受的值包括以下几种。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示词或代码片段。 + + + + 表示该部分是模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 生成的采样、长度和输出设置。每个字段都是可选的:下面声明了 `default` 的字段在省略时会使用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成配置 + + + + 已生成图像的宽高比 + + + + 可选。已生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定已生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可以生成的最大 token 数。一个 token 大约相当于 4 个字符。100 个 token 大约对应 60-80 个单词。 + + 范围:`16` 到 `65536` + + + + + + + + 当种子固定为特定值时,模型会尽力为重复请求提供相同的响应。无法保证输出具有确定性。此外,即使使用相同的种子值,更改模型或参数设置(例如 temperature)也可能导致响应发生变化。默认情况下,会使用随机种子值。适用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + + + +temperature 用于在生成响应期间进行采样,采样在应用 topP 和 topK 时发生。temperature 控制 token 选择中的随机程度。较低的温度适合需要不那么开放或富有创意的响应的提示,而较高的温度可以带来更多样化或更具创意的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,给定提示的响应大多是确定性的,但仍可能有少量变化。如果模型返回的响应过于笼统、过短,或者模型给出回退响应,请尝试提高温度 + + 范围:`0` 至 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是模型将复杂任务分解为更小步骤以生成更高质量响应的过程。 + + + + 可选。如果为是,模型将在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型将尽力保持在该预算范围内。 + + + + 可选。模型的思考级别。 + + 可能的值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 改变模型为输出选择 token 的方式。Top-K 为 1 表示下一个被选择的 token 是模型词表中所有 token 里概率最高的那个。Top-K 为 3 表示下一个 token 会通过温度从概率最高的 3 个 token 中选出。 + + 范围:`1` 至 `…` + + + + 如果指定,则使用 nucleus 采样。 +Top-P 改变模型为输出选择 token 的方式。token 会从概率最高(参见 top-K)到最低依次选取,直到它们的概率之和等于 top-P 值。例如,如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,且 top-P 值为 0.5,那么模型会通过温度选择 A 或 B 作为下一个 token,并将 C 排除在候选之外。 +指定较低的值可获得随机性更低的响应,较高的值可获得随机性更高的响应。 + + 范围:`0` 至 `1` + + 格式:`float` + + + + 按请求设置,用于拦截不安全内容。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可能的值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型以获得更好表现的指令。例如,“尽可能简洁地回答”或“在你的回答中不要使用技术术语”。文本字符串会计入 token 限制。systemInstruction 的角色字段会被忽略,不会影响模型的表现。注意:parts 中应仅使用文本,且每个 part 中的内容应放在单独的段落中。 + + + + 组成单条消息的有序 parts 列表。不同的 part 可以有不同的 IANA MIME 类型。关于输入的限制,例如最大 token 数量或图像数量,请参阅 Google 模型页面上的模型规格。 + + + + 文本提示或代码片段。 + + + + 创建该消息的实体的身份。支持以下值:user:表示消息由真实的人发送,通常是用户生成的消息。model:表示消息由模型生成。在多轮对话中,model 值用于将来自模型的消息插入对话。对于非多轮对话,此字段可以留空或不设置。 + + 可能的值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行模型知识和范围之外的一个或多个操作。请参阅函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为是,生成的图像将上传到云端存储,并以签名 URL 的形式返回,而不是内联 base64 数据。这些 URL 将在 24 小时后过期。 + + + + 对于视频输入,视频的起始和结束偏移量,采用时长格式。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。仅当视频数据以 inlineData 或 fileData 形式提供时,才应指定该元数据。 + + 表示视频时间轴位置的时长偏移。 + + + + 以纳秒为精度的带符号秒数小数部分。带小数的负秒值其 nanos 值仍必须为非负数。 + + 范围:`0` 到 `999999999` + + + + 时间段内带符号的秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界值)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间轴位置的时长偏移。 + + + + 以纳秒为精度的带符号秒数小数部分。带小数的负秒值其 nanos 值仍必须为非负数。 + + 范围:`0` 到 `999999999` + + + + 时间段内带符号的秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界值)。 + + 范围:`-315576000000` 到 `315576000000` + + +由 Router 在 `GET /v2/models/vertexai/gemini-2.5-flash-image/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型当前对话的内容。对于单轮查询,这是一个单独的实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以原始字节表示的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示中内联包含的图像、PDF 或视频的 base64 编码。内联包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分是模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率可选值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分(缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选项 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可选值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 请求中的 token 数量。设置 cachedContent 后,这仍然是有效的提示词总大小,也就是说它包含缓存内容中的 token 数量。 + + + + 按模态划分的提示词 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可选值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 思维输出中存在的 token 数量。 + + + + 工具使用提示词中存在的 token 数量。 + + + + token 总数(提示词 + 候选项)。 + + + + 用于该请求的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "inlineData": { + "data": "PGJhc2U2ND4=", + "mimeType": "image/png" + } + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-2.5-flash-image", + "responseId": "7c6b5a49-3827-1605-f4e3-d2c1b0a99887", + "usageMetadata": { + "candidatesTokenCount": 1290, + "promptTokenCount": 11, + "totalTokenCount": 1301 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx b/zh/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx new file mode 100644 index 000000000..7aeb982ee --- /dev/null +++ b/zh/development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx @@ -0,0 +1,564 @@ +--- +title: "使用 Gemini 3.1 Flash Lite 与 Comfy Router" +description: "通过 Comfy Router 调用 vertexai/gemini-3.1-flash-lite:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gemini 3.1 Flash Lite" +translationSourceHash: 442db7a1 +translationFrom: development/comfy-router/models/google/gemini-3-1-flash-lite/code.mdx +translationBlockHashes: + "_intro": 063db100 + "Quick start": 963c53e7 + "Schema": c1f3ccb6 + "Examples": 2ebce337 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/vertexai/gemini-3.1-flash-lite.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-3.1-flash-lite` 的 API 参考,由 Comfy Router 提供,来源为 Google。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的相同调用。 + +**模型 ID:** `vertexai/gemini-3.1-flash-lite` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## 架构 + +### 输入 + + + 与模型进行当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 原始字节形式的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,通过 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示词中以内联方式包含的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示词或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 生成的采样、长度和输出设置。每个字段都是可选的:下面声明了 `default` 的字段在省略时应用默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成的配置 + + + + 已生成图像的宽高比 + + + + 可选。已生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定已生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可以生成的最大 token 数。一个 token 大约相当于 4 个字符。100 个 token 大约对应 60-80 个单词。 + + 范围:`16` 至 `65536` + + + + + + + + 当 seed 固定为特定值时,模型会尽最大努力为重复请求提供相同的响应。不保证输出是确定性的。此外,即使使用相同的 seed 值,更改模型或参数设置(例如 temperature)也可能导致响应发生变化。默认情况下,使用随机 seed 值。适用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +温度用于在响应生成过程中进行采样,采样在应用 topP 和 topK 时发生。温度控制 token 选择的随机程度。较低的温度适合需要较少开放性、较少创造性响应的提示词,而较高的温度则可能带来更多样化或更具创造性的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,给定提示词对应的响应基本上是确定性的,但仍可能出现少量变化。如果模型返回的响应过于笼统、过于简短,或者模型给出了回退响应,请尝试提高温度 + + 范围:`0` 到 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是指模型将复杂任务分解为更小的步骤,以生成更高质量响应的过程。 + + + + 可选。如果为 true,模型会在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型将尽力控制在该预算范围内。 + + + + 可选。模型的思考级别。 + + 可选值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 会改变模型为输出选择 token 的方式。top-K 为 1 表示下一个被选中的 token 是模型词表中所有 token 里概率最高的那一个。top-K 为 3 表示使用温度从概率最高的 3 个 token 中选择下一个 token。 + + 范围:`1` 到 `…` + + + + 如果指定,则使用核采样。 +Top-P 会改变模型为输出选择 token 的方式。Token 会从概率最高(参见 top-K)到最低依次选择,直到它们的概率之和等于 top-P 值。例如,如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,而 top-P 值为 0.5,那么模型将使用温度选择 A 或 B 作为下一个 token,并排除 C 作为候选。 +指定较低的值可获得随机性更低的响应,指定较高的值可获得随机性更高的响应。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 用于阻止不安全内容的按请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可选值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可选值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型获得更佳表现的指令。例如,"尽可能简洁地回答"或"回复中不要使用专业术语"。文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,不影响模型的表现。注意:parts 中应仅使用文本,并且每个 part 中的内容应放在单独的段落中。 + + + + 构成单条消息的有序 parts 列表。不同的 parts 可能具有不同的 IANA MIME 类型。有关输入限制(例如最大 token 数或图像数量),请参阅 Google 模型页面上的模型规格。 + + + + 文本提示词或代码片段。 + + + + 创建该消息的实体的身份。支持以下值:user:表示消息由真实的人发送,通常是用户生成的消息。model:表示消息由模型生成。model 值用于在多轮对话期间将来自模型的消息插入对话。对于非多轮对话,此字段可以留空或不设置。 + + 可选值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行模型知识和范围之外的一个操作或一组操作。请参阅函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为 true,生成的图像将上传到云端存储,并以签名 URL 的形式返回,而不是内联 base64 数据。这些 URL 将在 24 小时后过期。 + + + + 对于视频输入,视频的起始和结束偏移量,采用时长格式。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。仅当视频数据以 inlineData 或 fileData 形式提供时,才应指定该元数据。 + + 表示视频时间线位置的时长偏移。 + + + + 以纳秒精度表示的有符号秒的小数部分。带有小数部分的负秒值仍然必须使用非负的 nanos 值。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间线位置的时长偏移。 + + + + 以纳秒精度表示的有符号秒的小数部分。带有小数部分的负秒值仍然必须使用非负的 nanos 值。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + +由 Router 在 `GET /v2/models/vertexai/gemini-3.1-flash-lite/openapi.json` 提供的 schema 生成,这正是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型进行的当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中指定文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以原始字节形式提供的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示中内联包含的图像、PDF 或视频的 base64 编码。内联包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中指定文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分(缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 请求中的 token 数量。设置 cachedContent 后,这仍然是有效的提示总大小,也就是说它包含缓存内容中的 token 数量。 + + + + 按模态划分的提示 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + thoughts 输出中包含的 token 数量。 + + + + 工具使用提示中包含的 token 数量。 + + + + token 总数(提示 + 候选)。 + + + + 请求所使用的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 {#examples} + +### 输入 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.1-flash-lite", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + diff --git a/zh/development/comfy-router/models/google/gemini-3-7-flash/code.mdx b/zh/development/comfy-router/models/google/gemini-3-7-flash/code.mdx new file mode 100644 index 000000000..55b3976ed --- /dev/null +++ b/zh/development/comfy-router/models/google/gemini-3-7-flash/code.mdx @@ -0,0 +1,566 @@ +--- +title: "使用 Gemini 3.7 Flash 搭配 Comfy Router" +description: "通过 Comfy Router 调用 vertexai/gemini-3.7-flash:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gemini 3.7 Flash" +translationSourceHash: 34f567fc +translationFrom: development/comfy-router/models/google/gemini-3-7-flash/code.mdx +translationBlockHashes: + "_intro": bb1d4fb3 + "Quick start": 99a8441f + "Schema": 5b123ea5 + "Examples": 1da8dd0c +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/vertexai/gemini-3.7-flash.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-3.7-flash` 的 API 参考文档,由 Comfy Router 提供服务,来自 Google。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `vertexai/gemini-3.7-flash` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.7-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.7-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.7-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## Schema + +### 输入 + + + 与模型进行的当前对话的内容。对于单轮查询,这是一个单一实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下几种。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为 1 小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以内联原始字节表示的数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要以内联方式包含在提示中的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定该数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下几种。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为 1 小时。更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 生成的采样、长度和输出设置。每个字段都是可选的:下方声明了 `default` 的字段在省略时应用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成的配置 + + + + 生成图像的宽高比 + + + + 可选。生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可生成的最大 token 数。一个 token 大约相当于 4 个字符。100 个 token 大致对应 60-80 个单词。 + + 范围:`16` 到 `65536` + + + + + + + + 当 seed 固定为某个特定值时,模型会尽力对重复请求提供相同的响应。但无法保证输出是确定性的。此外,更改模型或参数设置(例如 temperature)时,即使使用相同的 seed 值,响应也可能发生变化。默认情况下使用随机 seed 值。适用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + + +温度用于在生成响应期间进行采样,当应用 topP 和 topK 时即会发生采样。温度控制 token 选择过程中的随机程度。较低的温度适合需要较为封闭或不太具有创造性的响应,而较高的温度则可能带来更多样或更具创造性的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,给定提示词的响应大多是确定性的,但仍可能存在少量变化。如果模型返回的响应过于笼统、过短,或模型给出了兜底响应,请尝试提高温度 + + 范围:`0` 到 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是指模型将复杂任务分解为更小步骤,以生成更高质量响应的过程。 + + + + 可选。如果为是,模型会在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型会尽力保持在此预算范围内。 + + + + 可选。模型的思考级别。 + + 可能的值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 会改变模型为输出选择 token 的方式。Top-K 为 1 表示下一个被选择的 token 是模型词汇表中所有 token 里概率最高的那个。Top-K 为 3 表示下一个 token 会借助温度从概率最高的 3 个 token 中选出。 + + 范围:`1` 到 `…` + + + + 如果指定,将使用核采样。 +Top-P 会改变模型为输出选择 token 的方式。token 会从概率最高(参见 top-K)到最低依次选取,直到它们的概率之和等于 top-P 值。例如,如果 token A、B、C 的概率分别为 0.3、0.2 和 0.1,且 top-P 值为 0.5,那么模型会借助温度选择 A 或 B 作为下一个 token,并排除 C 作为候选。 +指定较低的值可获得随机性更低的响应,指定较高的值则可获得随机性更高的响应。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 用于阻止不安全内容的逐请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可能的值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型获得更佳表现的指令。例如,“尽可能简洁地回答”或“回答中不要使用技术术语”。文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,且不影响模型的表现。注意:parts 中只应使用文本,且每个 part 中的内容应位于单独的段落中。 + + + + 构成单条消息的有序 parts 列表。不同的 parts 可能具有不同的 IANA MIME 类型。有关输入的限制,例如最大 token 数或图像数量,请参阅 Google 模型页面上的模型规格。 + + + + 文本提示词或代码片段。 + + + + 创建该消息的实体的身份。支持以下值:user:表示该消息由真实的人发送,通常是用户生成的消息。model:表示该消息由模型生成。在多轮对话中,model 值用于将模型的消息插入到对话中。对于非多轮对话,此字段可以留空或不予设置。 + + 可能的值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行模型知识范围之外的某个操作或一组操作。参见函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为是,已生成的图像将上传到云端存储,并以签名 URL 的形式返回,而不是内联的 base64 数据。这些 URL 会在 24 小时后过期。 + + + + 对于视频输入,指视频起始和结束偏移量的时长格式。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。仅在视频数据以 inlineData 或 fileData 形式呈现时,才应指定该元数据。 + + 表示视频时间轴位置的时长偏移量。 + + + + 以纳秒为分辨率的有符号秒数小数部分。带有小数部分的负秒数值,其 nanos 值仍必须为非负数。 + + 范围:`0` 到 `999999999` + + + + 时间段的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间轴位置的时长偏移量。 + + + + 以纳秒为分辨率的有符号秒数小数部分。带有小数部分的负秒数值,其 nanos 值仍必须为非负数。 + + 范围:`0` 到 `999999999` + + + + 时间段的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + +该内容由 Router 在 `GET /v2/models/vertexai/gemini-3.7-flash/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型进行当前对话的内容。对于单轮查询,这是一个单独的实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为 1 小时。有关详细信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 原始字节形式的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示中内联包含的图像、PDF 或视频的 base64 编码。内联包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为 1 小时。有关详细信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分(即缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选项 token 明细。 + + + + 输入或输出内容的模态类型。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定模态的 token 数量。 + + + + 请求中的 token 数量。设置 cachedContent 时,这仍然是有效的提示总大小,也就是说其中包含缓存内容中的 token 数量。 + + + + 按模态划分的提示 token 明细。 + + + + 输入或输出内容的模态类型。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 指定模态的 token 数量。 + + + + 思维链输出中存在的 token 数量。 + + + + 工具使用提示中存在的 token 数量。 + + + + token 总数(提示 + 候选项)。 + + + + 请求所使用的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.7-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/google/gemini-3-8-flash/code.mdx b/zh/development/comfy-router/models/google/gemini-3-8-flash/code.mdx new file mode 100644 index 000000000..9e23acd19 --- /dev/null +++ b/zh/development/comfy-router/models/google/gemini-3-8-flash/code.mdx @@ -0,0 +1,565 @@ +--- +title: "搭配 Comfy Router 使用 Gemini 3.8 Flash" +description: "通过 Comfy Router 调用 vertexai/gemini-3.8-flash:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gemini 3.8 Flash" +translationSourceHash: 7422d325 +translationFrom: development/comfy-router/models/google/gemini-3-8-flash/code.mdx +translationBlockHashes: + "_intro": 9675ac82 + "Quick start": 2223913a + "Schema": ddb5baa0 + "Examples": 48b9d5db +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/gemini-3.8-flash.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/gemini-3.8-flash` 的 API 参考文档,该模型由 Comfy Router 从 Google 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起同样的调用。 + +**模型 ID:** `vertexai/gemini-3.8-flash` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.8-flash", + { + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences.", + }, + ], + "role": "user", + }, + ], + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/gemini-3.8-flash", { + contents: [ + { + parts: [ + { + text: "Describe a robot learning to paint, in two sentences.", + }, + ], + role: "user", + }, + ], +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.8-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"parts\":[{\"text\":\"Describe a robot learning to paint, in two sentences.\"}],\"role\":\"user\"}]}" +``` + + +## Schema {#schema} + +### 输入 {#input} + + + 与模型进行当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中所指定文件的媒体类型。可接受的取值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息请参阅 Gemini 音频和视频要求。文本文件必须为 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以内联原始字节表示的数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,你可以使用 inlineData 指定最多 3000 张图像。 + + + + 以内联方式包含在提示中的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定该数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中所指定文件的媒体类型。可接受的取值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息请参阅 Gemini 音频和视频要求。文本文件必须为 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示该部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 生成的采样、长度和输出设置。所有字段均为可选:下文声明了 `default` 的字段在省略时会采用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成的配置 + + + + 生成图像的宽高比 + + + + 可选。生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可生成的最大 token 数。一个 token 约等于 4 个字符。100 个 token 大约对应 60 到 80 个单词。 + + 范围:`16` 到 `65536` + + + + + + + + 当种子固定为特定值时,模型会尽最大努力为重复请求提供相同的响应。但不保证输出是确定性的。此外,即使使用相同的种子值,更改模型或参数设置(例如温度)也可能导致响应发生变化。默认情况下使用随机种子值。可用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +温度用于在响应生成期间进行采样,采样在应用 topP 和 topK 时进行。温度控制 token 选择中的随机程度。较低的温度适合需要不太开放或不太有创造性的响应的提示词,而较高的温度可以带来更多样或更有创造性的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,给定提示词的响应大多是确定性的,但仍可能出现少量变化。如果模型返回的响应过于笼统、过于简短,或者给出的是后备响应,请尝试提高温度 + + 范围:`0` 到 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是模型将复杂任务拆解为更小步骤、从而生成更高质量响应的过程。 + + + + 可选。如果为 true,模型将在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型将尽力保持在该预算范围内。 + + + + 可选。模型的思考级别。 + + 可选值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 会改变模型为输出选择 token 的方式。top-K 为 1 表示下一个被选择的 token 是模型词表中所有 token 里概率最高的那个。top-K 为 3 表示通过温度从概率最高的 3 个 token 中选择下一个 token。 + + 范围:`1` 到 `…` + + + + 如果指定,则使用核采样。 +Top-P 会改变模型为输出选择 token 的方式。token 会从概率最高(参见 top-K)到最低依次选择,直到其概率之和等于 top-P 值。例如,如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,而 top-P 值为 0.5,那么模型会使用温度从 A 或 B 中选择下一个 token,并将 C 排除在候选之外。 +指定较低的值可获得随机性更低的响应,指定较高的值可获得随机性更高的响应。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 用于阻止不安全内容的每次请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可选值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可选值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型获得更好表现的指令。例如:"尽可能简洁地回答"或"回复中不要使用技术术语"。文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,不会影响模型的表现。注意:parts 中只应使用文本,且每个 part 中的内容应单独成段。 + + + + 构成单条消息的有序 parts 列表。不同的 part 可以具有不同的 IANA MIME 类型。有关输入的限制(例如最大 token 数量或图像数量),请参阅 Google 模型页面上的模型规格。 + + + + 文本提示词或代码片段。 + + + + 创建该消息的实体身份。支持以下值:user:表示该消息由真实的人发送,通常是用户生成的消息。model:表示该消息由模型生成。在多轮对话中,使用 model 值可将模型的消息插入对话中。对于非多轮对话,此字段可以留空或不设置。 + + 可选值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行超出模型知识和范围的一个或多个操作。参见 Function calling。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为 true,生成的图像将上传到云端存储,并以签名 URL 的形式返回,而不是内联 base64 数据。这些 URL 将在 24 小时后过期。 + + + + 对于视频输入,以 Duration 格式表示视频的起始和结束偏移量。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。仅当视频数据以 inlineData 或 fileData 形式提供时,才应指定该元数据。 + + 表示视频时间轴位置的时长偏移。 + + + + 以纳秒分辨率表示的有符号秒的小数部分。带小数的负秒值,其 nanos 值仍必须为非负。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含两端)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间轴位置的时长偏移。 + + + + 以纳秒分辨率表示的有符号秒的小数部分。带小数的负秒值,其 nanos 值仍必须为非负。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含两端)。 + + 范围:`-315576000000` 到 `315576000000` + + +该文件由 Router 在 `GET /v2/models/vertexai/gemini-3.8-flash/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型当前对话的内容。对于单轮查询,这是一个单独的实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件媒体类型。可接受的取值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 原始字节形式的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要以内联方式包含在提示中的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件媒体类型。可接受的取值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。更多信息请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示该部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分(缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选 token 明细。 + + + + 输入或输出内容的模态类型。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 请求中的 token 数量。当设置了 cachedContent 时,这仍然是有效的提示总大小,也就是说其中包含缓存内容中的 token 数量。 + + + + 按模态划分的提示 token 明细。 + + + + 输入或输出内容的模态类型。 + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 思考输出中出现的 token 数量。 + + + + 工具使用提示中出现的 token 数量。 + + + + token 总数(提示 + 候选)。 + + + + 请求使用的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "parts": [ + { + "text": "Describe a robot learning to paint, in two sentences." + } + ], + "role": "user" + } + ] +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "A lighthouse stands at the edge of the harbour, its lamp still turning as the sun comes up." + } + ], + "role": "model" + }, + "finishReason": "STOP" + } + ], + "modelVersion": "gemini-3.8-flash", + "responseId": "0d1f2a3b-4c5d-6e7f-8a9b-0c1d2e3f4a5b", + "usageMetadata": { + "candidatesTokenCount": 21, + "promptTokenCount": 12, + "totalTokenCount": 33 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/google/gemini/code.mdx b/zh/development/comfy-router/models/google/gemini/code.mdx new file mode 100644 index 000000000..1cdefccf9 --- /dev/null +++ b/zh/development/comfy-router/models/google/gemini/code.mdx @@ -0,0 +1,794 @@ +--- +title: "通过 Comfy Router 使用 Google Gemini" +description: "通过 Comfy Router 以 HTTP 方式调用 Google Gemini 文本模型的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果的结构" +sidebarTitle: "Google Gemini" +translationSourceHash: 9ed5f7bd +translationFrom: development/comfy-router/models/google/gemini/code.mdx +translationBlockHashes: + "_intro": 9975ebcd + "Quick start": 96c7cde8 + "Schema": 226eecab + "Examples": 4bb73c12 +--- +{/* 已生成文件。请编辑本目录中的 code.yaml 并运行 `pnpm code-pages:gen`。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Google Gemini 的 API 参考。Google Gemini 是 Google 的多模态文本模型系列,在 Flash 和 Pro 各层级中覆盖从快速起草到深度推理的各类场景。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +选择你想要调用的模型。这些模型共用同一套请求和响应结构,下文会统一说明一次。 + + +**模型 ID:** `vertexai/gemini-3.1-pro-preview` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-pro-preview", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-pro-preview", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-pro-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**模型 ID:** `vertexai/gemini-3.5-flash` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**模型 ID:** `vertexai/gemini-2.5-pro` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-pro", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-pro", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + +**模型 ID:** `vertexai/gemini-2.5-flash` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-2.5-flash", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256, + }, + }, + ) + +print("text:", result["candidates"][0]["content"]["parts"][0]["text"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { text: string }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-2.5-flash", { + contents: [ + { + role: "user", + parts: [ + { + text: "Describe a single red maple leaf on a white background in one sentence.", + }, + ], + }, + ], + generationConfig: { + temperature: 0.7, + maxOutputTokens: 256, + }, +}); + +console.log("text:", data.candidates[0].content.parts[0].text); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-2.5-flash \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"Describe a single red maple leaf on a white background in one sentence.\"}]}], \"generationConfig\": {\"temperature\":0.7,\"maxOutputTokens\":256}}" +``` + + + + +## 架构 + +### 输入 + + + 与模型进行当前对话的内容。对于单轮查询,这是一个单一实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率没有限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 原始字节形式的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,通过使用 inlineData,最多可以指定 3000 个图像。 + + + + 要以内联方式包含在提示中的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型 (mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容会计入 token 限制。图像分辨率没有限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 生成的采样、长度和输出设置。每个字段都是可选的:下面声明了 `default` 的字段在省略时会应用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成的配置 + + + + 已生成图像的宽高比 + + + + 可选。已生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定已生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可以生成的最大 token 数。一个 token 大约为 4 个字符。100 个 token 大约对应 60-80 个词。 + + 范围:`16` 到 `65536` + + + + + + + + 当种子固定为特定值时,模型会尽最大努力对重复请求提供相同的响应。不保证确定性输出。此外,更改模型或参数设置(例如温度)可能会导致响应发生变化,即使使用相同的种子值也是如此。默认情况下,使用随机种子值。适用于以下模型:, gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + +温度用于在生成回答时进行采样,而采样发生在应用 topP 和 topK 时。温度控制 token 选择中的随机程度。较低的温度适合那些不需要太开放或太有创意回答的提示词,而较高的温度则可能带来更多样或更有创意的结果。温度为 0 意味着始终选择概率最高的 token。在这种情况下,针对给定提示词的回答基本上是确定性的,但仍可能出现少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出了回退回答,请尝试提高温度 + + 范围:`0` 到 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是指模型将复杂任务拆解为更小的步骤,以生成更高质量回答的过程。 + + + + 可选。如果为 true,模型会在回答中包含其思考过程。 + + + + 可选。模型思考过程的 token 预算。模型会尽最大努力保持在该预算范围内。 + + + + 可选。模型的思考级别。 + + 可能的值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 会改变模型为输出选择 token 的方式。top-K 为 1 表示下一个被选择的 token 是模型词汇表中所有 token 里概率最高的那个。top-K 为 3 表示下一个 token 会通过温度从概率最高的 3 个 token 中选出。 + + 范围:`1` 到 `…` + + + + 如果指定,则使用核采样。 +Top-P 会改变模型为输出选择 token 的方式。token 会从概率最高(参见 top-K)到最低依次选择,直到它们的概率之和等于 top-P 值。例如,如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,而 top-P 值为 0.5,那么模型会通过温度选择 A 或 B 作为下一个 token,并将 C 排除在候选之外。 +指定较低的值可获得随机性更低的回答,指定较高的值可获得随机性更高的回答。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 用于阻止不安全内容的单次请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可能的值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型提升表现的指令。例如,“尽可能简洁地回答”或“回答中不要使用技术术语”。文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,不影响模型的表现。注意:parts 中应仅使用文本,且每个 part 中的内容应放在单独的段落中。 + + + + 组成单条消息的有序 parts 列表。不同的 part 可以有不同的 IANA MIME 类型。有关输入限制(例如最大 token 数量或图像数量),请参阅 Google 模型页面上的模型规格。 + + + + 文本提示词或代码片段。 + + + + 创建该消息的实体身份。支持以下值:user:表示该消息由真人发送,通常是用户生成的消息。model:表示该消息由模型生成。在多轮对话中,使用 model 值可将模型的消息插入到对话中。对于非多轮对话,此字段可以留空或不设置。 + + 可能的值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行超出模型知识和范围之外的一个或多个操作。请参阅函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为 true,生成的图像将上传到云端存储,并以签名 URL 而非内联 base64 数据的形式返回。这些 URL 会在 24 小时后过期。 + + + + 对于视频输入,视频的开始和结束偏移量,使用 Duration 格式。例如,要指定一段从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。该元数据只应在视频数据以 inlineData 或 fileData 形式提供时指定。 + + 表示视频时间线位置的时长偏移。 + + + + 以纳秒分辨率表示的带符号秒的小数部分。带小数的负秒值仍必须使用非负的 nanos 值。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的带符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间线位置的时长偏移。 + + + + 以纳秒分辨率表示的带符号秒的小数部分。带小数的负秒值仍必须使用非负的 nanos 值。 + + 范围:`0` 到 `999999999` + + + + 时间跨度的带符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + +该内容由 Router 在 `GET /v2/models/vertexai/gemini-3.1-pro-preview/openapi.json` 上提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型进行当前对话的内容。对于单轮查询,这是一个单独实例。对于多轮查询,这是一个重复字段,包含对话历史记录和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中指定的文件媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 原始字节形式的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,你最多可以通过 inlineData 指定 3000 张图像。 + + + + 要在提示词中以内联方式包含的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中指定的文件媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示词或代码片段。 + + + + 表示此部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成该响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + +Wait, I need to be careful — the English source begins with the tail of a previous ResponseField's possible-values line. Let me output exactly the source content translated: + + Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分的 token 数量(即缓存内容)。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 请求中的 token 数量。设置 cachedContent 后,这仍然是有效的提示总大小,也就是说其中包含缓存内容中的 token 数量。 + + + + 按模态划分的提示 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + thoughts 输出中包含的 token 数量。 + + + + 工具使用提示中包含的 token 数量。 + + + + token 总数(提示 + 候选)。 + + + + 请求使用的流量类型(例如 `PROVISIONED_THROUGHPUT`)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "Describe a single red maple leaf on a white background in one sentence." + } + ] + } + ], + "generationConfig": { + "temperature": 0.7, + "maxOutputTokens": 256 + } +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "text": "A single red maple leaf rests on a plain white background, its edges sharp and its color deep." + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 18, + "candidatesTokenCount": 24 + } +} +``` + + diff --git a/zh/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx b/zh/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..42b9b231d --- /dev/null +++ b/zh/development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx @@ -0,0 +1,201 @@ +--- +title: "使用 Comfy Router 调用 Imagen 3.0 Fast Generate 001" +description: "通过 Comfy Router 调用 vertexai/imagen-3.0-fast-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Imagen 3.0 Fast Generate 001" +translationSourceHash: e525f52a +translationFrom: development/comfy-router/models/google/imagen-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 7d487c80 + "Quick start": 00063379 + "Schema": 60702cd0 + "Examples": eb746872 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/vertexai/imagen-3.0-fast-generate-001.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/imagen-3.0-fast-generate-001` 的 API 参考文档,由 Comfy Router 提供服务,模型来自 Google。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `vertexai/imagen-3.0-fast-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-fast-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 用于生成图像的文本提示词 + + + + + + + + + + + + 可选值:`1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 范围:`0` 到 `100` + + + + 可选值:`image/png`、`image/jpeg` + + + + 可选值:`dont_allow`、`allow_adult`、`allow_all` + + + + 可选值:`block_most`、`block_some`、`block_few`、`block_fewest` + + + + 范围:`1` 到 `4` + + + + 格式:`uint32` + + + + + + +本文档依据 Router 在 `GET /v2/models/vertexai/imagen-3.0-fast-generate-001/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,正是依据同一份文档来校验调用。 + +### 输出 + + + + + + + Base64 编码的图像内容 + + 格式:`byte` + + + + 已生成图像的 MIME 类型 + + + + 用于生成此图像的增强或重写后的提示词 + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx b/zh/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx new file mode 100644 index 000000000..f87c0ee6a --- /dev/null +++ b/zh/development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx @@ -0,0 +1,201 @@ +--- +title: "通过 Comfy Router 使用 Imagen 3.0 Generate 001" +description: "通过 Comfy Router 调用 vertexai/imagen-3.0-generate-001:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Imagen 3.0 Generate 001" +translationSourceHash: 43b01e2e +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 71b466b2 + "Quick start": 1c03feb4 + "Schema": c1d82edb + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/imagen-3.0-generate-001` 的 API 参考文档,由 Comfy Router 从 Google 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `vertexai/imagen-3.0-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-001", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-001", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 用于生成图像的文本提示词 + + + + + + + + + + + + 可选值:`1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 范围:`0` 至 `100` + + + + 可选值:`image/png`、`image/jpeg` + + + + 可选值:`dont_allow`、`allow_adult`、`allow_all` + + + + 可选值:`block_most`、`block_some`、`block_few`、`block_fewest` + + + + 范围:`1` 至 `4` + + + + 格式:`uint32` + + + + + + +根据 Router 在 `GET /v2/models/vertexai/imagen-3.0-generate-001/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + + + + + Base64 编码的图像内容 + + 格式:`byte` + + + + 已生成图像的 MIME 类型 + + + + 用于生成此图像的增强或重写后的提示词 + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx b/zh/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx new file mode 100644 index 000000000..5ef603fc6 --- /dev/null +++ b/zh/development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx @@ -0,0 +1,201 @@ +--- +title: "使用 Comfy Router 调用 Imagen 3.0 Generate 002" +description: "通过 Comfy Router 调用 vertexai/imagen-3.0-generate-002:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Imagen 3.0 Generate 002" +translationSourceHash: 63ccef44 +translationFrom: development/comfy-router/models/google/imagen-3-0-generate-002/code.mdx +translationBlockHashes: + "_intro": 0286732d + "Quick start": d6972ab3 + "Schema": 187e4020 + "Examples": eb746872 +--- +{/* GENERATED FILE. Generated from router-schemas/vertexai/imagen-3.0-generate-002.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`vertexai/imagen-3.0-generate-002` 的 API 参考文档,由 Comfy Router 从 Google 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `vertexai/imagen-3.0-generate-002` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/imagen-3.0-generate-002", + { + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background.", + }, + ], + "parameters": { + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("vertexai/imagen-3.0-generate-002", { + instances: [ + { + prompt: "A single red maple leaf on a plain white background.", + }, + ], + parameters: { + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/imagen-3.0-generate-002 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"A single red maple leaf on a plain white background.\"}], \"parameters\": {\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 用于图像生成的文本提示词 + + + + + + + + + + + + 可选值:`1:1`、`9:16`、`16:9`、`3:4`、`4:3` + + + + + + + + + + + + + + + + + + + + 范围:`0` 到 `100` + + + + 可选值:`image/png`、`image/jpeg` + + + + 可选值:`dont_allow`、`allow_adult`、`allow_all` + + + + 可选值:`block_most`、`block_some`、`block_few`、`block_fewest` + + + + 范围:`1` 到 `4` + + + + 格式:`uint32` + + + + + + +根据 Router 在 `GET /v2/models/vertexai/imagen-3.0-generate-002/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前 Router 用于校验调用的是同一份文档。 + +### 输出 + + + + + + + Base64 编码的图像内容 + + 格式:`byte` + + + + 已生成图像的 MIME 类型 + + + + 用于生成此图像的增强或改写后的提示词 + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "A single red maple leaf on a plain white background." + } + ], + "parameters": { + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "predictions": [ + { + "bytesBase64Encoded": "PGJhc2U2ND4=", + "mimeType": "image/png", + "prompt": "A lighthouse at the edge of the harbour at dawn, warm low sun" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/google/nano-banana-2-lite/code.mdx b/zh/development/comfy-router/models/google/nano-banana-2-lite/code.mdx new file mode 100644 index 000000000..7525de144 --- /dev/null +++ b/zh/development/comfy-router/models/google/nano-banana-2-lite/code.mdx @@ -0,0 +1,587 @@ +--- +title: "将 Nano Banana 2 Lite 与 Comfy Router 配合使用" +description: "通过 Comfy Router 以 HTTP 方式调用 Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)生成图像的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果的结构" +sidebarTitle: "Nano Banana 2 Lite" +translationSourceHash: 18fa4c40 +translationFrom: development/comfy-router/models/google/nano-banana-2-lite/code.mdx +translationBlockHashes: + "_intro": a8ccbe06 + "Quick start": 882b3026 + "Schema": bc5fa507 + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/zh/snippets/comfy-router/model-code-footer.mdx"; + +Nano Banana 2 Lite 的 API 参考。Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)是 Google Nano Banana 图像生成系列中的 Flash-Lite 层级,针对更低的延迟和成本进行了优化。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `vertexai/gemini-3.1-flash-lite-image` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-lite-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-lite-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-lite-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## Schema + +### Input + + + 与模型进行的当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以内联原始字节形式提供的数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示中内联包含的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示词或代码片段。 + + + + 表示此部分为模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 用于生成的采样、长度和输出设置。每个字段都是可选的:下面声明了 `default` 的字段在省略时会应用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成配置 + + + + 生成图像的宽高比 + + + + 可选。生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出图像应保存为的图像格式。 + + + + 可选。指定生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可以生成的最大 token 数。一个 token 大约相当于 4 个字符。100 个 token 大约对应 60-80 个单词。 + + 范围:`16` 到 `65536` + + + + + + + + 当种子固定为某个特定值时,模型会尽力为重复的请求提供相同的响应。不保证输出具有确定性。此外,更改模型或参数设置(例如 temperature)可能会导致响应发生变化,即使使用相同的种子值也是如此。默认情况下使用随机种子值。适用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +温度用于在响应生成期间进行采样,采样在应用 topP 和 topK 时发生。温度控制 token 选择过程中的随机程度。较低的温度适合需要较为收敛或不太发散的响应的提示,而较高的温度则可能带来更多样或更有创意的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,对于给定提示的响应基本是确定性的,但仍可能出现少量变化。如果模型返回的响应过于泛泛、过短,或者模型给出了兜底响应,请尝试提高温度 + + 范围:`0` 至 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是指模型将复杂任务拆解为更小的步骤,以生成更高质量响应的过程。 + + + + 可选。如果为 true,模型将在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型将尽力控制在该预算之内。 + + + + 可选。模型的思考级别。 + + 可能的取值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 改变模型为输出选择 token 的方式。top-K 为 1 表示下一个被选择的 token 是模型词表中所有 token 里概率最高的一个。top-K 为 3 表示下一个 token 将通过温度从概率最高的 3 个 token 中选出。 + + 范围:`1` 至 `…` + + + + 如果指定,将使用核采样。 +Top-P 改变模型为输出选择 token 的方式。token 会从概率最高(见 top-K)到最低依次选择,直到它们的概率之和等于 top-P 值。例如,如果 token A、B、C 的概率分别为 0.3、0.2 和 0.1,且 top-P 值为 0.5,那么模型将通过温度从 A 或 B 中选择下一个 token,并将 C 排除在候选之外。 +指定较低的值可获得随机性更低的响应,指定较高的值可获得随机性更高的响应。 + + 范围:`0` 至 `1` + + 格式:`float` + + + + 用于阻止不安全内容的单次请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可能的取值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可能的取值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型以获得更好表现的指令。例如,"尽可能简洁地回答"或"不要在响应中使用技术术语"。这些文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,不影响模型的表现。注意:parts 中只应使用文本,且每个 part 中的内容应放在单独的段落中。 + + + + 构成单条消息的有序 parts 列表。不同的 part 可能具有不同的 IANA MIME 类型。有关输入的限制,例如最大 token 数或图像数量,请参阅 Google 模型页面上的模型规格。 + + + + 文本提示或代码片段。 + + + + 创建该消息的实体的身份。支持以下取值:user:表示该消息由真实的人发送,通常是用户生成的消息。model:表示该消息由模型生成。在多轮对话中,使用 model 值将来自模型的消息插入对话。对于非多轮对话,该字段可以留空或不设置。 + + 可能的取值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以执行超出模型知识和范围之外的一个或多个操作。请参阅函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为 true,已生成的图像将上传到云端存储,并作为签名 URL 返回,而不是内联 base64 数据。这些 URL 将在 24 小时后过期。 + + + + 对于视频输入,指视频在 Duration 格式下的起始和结束偏移量。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。该元数据只应在视频数据以 inlineData 或 fileData 呈现时指定。 + + 表示视频时间轴位置的时长偏移量。 + + + + 以纳秒精度表示的有符号秒数的小数部分。带小数部分的负秒值,其纳秒值仍必须为非负值。 + + 范围:`0` 到 `999999999` + + + + 时间段的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + + + 表示视频时间轴位置的时长偏移量。 + + + + 以纳秒精度表示的有符号秒数的小数部分。带小数部分的负秒值,其纳秒值仍必须为非负值。 + + 范围:`0` 到 `999999999` + + + + 时间段的有符号秒数。必须在 -315,576,000,000 到 +315,576,000,000 之间(含边界)。 + + 范围:`-315576000000` 到 `315576000000` + + +本内容生成自 Router 在 `GET /v2/models/vertexai/gemini-3.1-flash-lite-image/openapi.json` 提供的 schema,该文档也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型当前对话的内容。对于单轮查询,这是一个单一实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关详细信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以原始字节形式提供的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,使用 inlineData 最多可以指定 3000 个图像。 + + + + 要在提示中内联包含的图像、PDF 或视频的 base64 编码。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关详细信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示或代码片段。 + + + + 表示此部分是来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅限输出。输入中缓存部分(缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定模态的 token 数量。 + + + + 请求中的 token 数量。当设置了 cachedContent 时,这仍是有效的提示词总大小,也就是说其中包含缓存内容中的 token 数量。 + + + + 按模态划分的提示词 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 指定模态的 token 数量。 + + + + 思考输出中存在的 token 数量。 + + + + 工具使用提示词中存在的 token 数量。 + + + + token 总数(提示词 + 候选)。 + + + + 用于请求的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +默认情况下,已生成图像的各部分会在 `inlineData.data` 中包含 base64 字节,并在 `inlineData.mimeType` 中包含媒体类型。解码这些字节并将其保存到文件。使用 `uploadImagesToStorage: true` 时,上传的图像则通过 `fileData.fileUri` 提供签名 URL,并通过 `fileData.mimeType` 提供媒体类型。请在 URL 过期之前下载这些图像,即在创建后 24 小时内。上传失败会使该图像保持内联形式,因此需检查每个部分是 `inlineData` 还是 `fileData`;文本部分也可能出现,并且图像不保证是第一个部分。 + + diff --git a/zh/development/comfy-router/models/google/nano-banana-2/code.mdx b/zh/development/comfy-router/models/google/nano-banana-2/code.mdx new file mode 100644 index 000000000..a22044ccb --- /dev/null +++ b/zh/development/comfy-router/models/google/nano-banana-2/code.mdx @@ -0,0 +1,589 @@ +--- +title: "将 Nano Banana 2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 以 HTTP 方式调用 Nano Banana 2(Gemini 3.1 Flash Image)生成图像的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果结构" +sidebarTitle: "Nano Banana 2" +translationSourceHash: 56517d1b +translationFrom: development/comfy-router/models/google/nano-banana-2/code.mdx +translationBlockHashes: + "_intro": 8a65bc55 + "Quick start": 8373c3fb + "Schema": 5391bdc4 + "Examples": a15177bb +--- +{/* 生成文件。请编辑此目录中的 code.yaml 并运行 `pnpm code-pages:gen`。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Nano Banana 2 的 API 参考。Nano Banana 2(Gemini 3.1 Flash Image)可根据文本生成图像,并在提供输入图像时对其进行编辑。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `vertexai/gemini-3.1-flash-image` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3.1-flash-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3.1-flash-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## Schema + +### 输入 + + + 与模型进行当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询,这是一个重复字段,包含对话历史和最新请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + data 或 fileUri 字段中指定的文件媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须为 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 以原始字节表示的内联数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,通过 inlineData 最多可以指定 3000 张图像。 + + + + 要在提示词中内联包含的图像、PDF 或视频的 base64 编码。内联包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + data 或 fileUri 字段中指定的文件媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(无音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须为 UTF-8 编码。文本文件的内容计入 token 限制。图像分辨率无限制。 + + 可能的值:`application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + 文本提示词或代码片段。 + + + + 表示该部分是模型产生的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + 用于生成的采样、长度和输出设置。每个字段都是可选的:下面声明了 `default` 的字段在省略时会使用该默认值,其余字段则回退到模型自身的行为。 + + + + 图像生成配置 + + + + 已生成图像的宽高比 + + + + 可选。已生成图像的图像输出格式。 + + + + 可选。输出图像的压缩质量。 + + + + 可选。输出应保存为的图像格式。 + + + + 可选。指定已生成图像的尺寸。支持的值为 1K、2K、4K。如果未指定,模型将使用默认值 1K。 + + + + 响应中可以生成的最大 token 数。一个 token 约等于 4 个字符。100 个 token 大致对应 60-80 个单词。 + + 范围:`16` 到 `65536` + + + + + + + + 当种子固定为特定值时,模型会尽力为重复请求提供相同的响应。无法保证输出是确定性的。此外,更改模型或参数设置(例如温度)可能导致响应发生变化,即使使用相同的种子值也是如此。默认情况下,会使用随机种子值。适用于以下模型:gemini-2.5-flash、gemini-2.5-pro、gemini-2.5-flash-preview-04-1、gemini-2.5-pro-preview-05-0、gemini-2.0-flash-lite-00、gemini-2.0-flash-001 + + + + + + +温度用于响应生成期间的采样,采样发生在应用 topP 和 topK 时。温度控制 token 选择中的随机程度。较低的温度适合需要更收敛或更少创造性响应的提示词,而较高的温度则可能带来更多样化或更具创造性的结果。温度为 0 表示始终选择概率最高的 token。在这种情况下,给定提示词的响应大多是确定性的,但仍可能存在少量变化。如果模型返回的响应过于笼统、过于简短,或者模型给出了兜底响应,请尝试提高温度 + + 范围:`0` 到 `2` + + 格式:`float` + + + + 可选。思考功能的配置。思考是模型将复杂任务拆解为更小步骤以生成更高质量响应的过程。 + + + + 可选。如果为是,模型将在响应中包含其思考内容。 + + + + 可选。模型思考过程的 token 预算。模型将尽力保持在此预算范围内。 + + + + 可选。模型的思考级别。 + + 可选值:`THINKING_LEVEL_UNSPECIFIED`、`LOW`、`MEDIUM`、`HIGH`、`MINIMAL` + + + + Top-K 会改变模型选择输出 token 的方式。Top-K 为 1 表示下一个被选择的 token 是模型词表中所有 token 里概率最高的。Top-K 为 3 表示下一个 token 通过温度从概率最高的 3 个 token 中选出。 + + 范围:`1` 到 `…` + + + + 如果指定,将使用核采样。 +Top-P 会改变模型选择输出 token 的方式。token 按概率从最高(参见 top-K)到最低进行选择,直到它们的概率之和等于 top-P 值。例如,如果 token A、B 和 C 的概率分别为 0.3、0.2 和 0.1,且 top-P 值为 0.5,那么模型将使用温度从 A 或 B 中选择下一个 token,并排除 C 作为候选项。 +指定较低的值可获得随机性更低的响应,指定较高的值可获得随机性更高的响应。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 用于拦截不安全内容的按请求设置。在 GenerateContentResponse.candidates 上强制执行。 + + + + 可选值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 可选值:`OFF`、`BLOCK_NONE`、`BLOCK_LOW_AND_ABOVE`、`BLOCK_MEDIUM_AND_ABOVE`、`BLOCK_ONLY_HIGH` + + + + 用于引导模型获得更佳表现的指令。例如,"尽可能简洁地回答"或"不要在响应中使用技术术语"。文本字符串会计入 token 限制。systemInstruction 的 role 字段会被忽略,不会影响模型的表现。注意:parts 中只应使用文本,且每个 part 的内容应位于单独的段落中。 + + + + 组成单条消息的有序 parts 列表。不同 part 可以有不同的 IANA MIME 类型。有关输入的限制,例如最大 token 数量或图像数量,请参阅 Google 模型页面上的模型规格。 + + + + 文本提示词或代码片段。 + + + + 创建该消息的实体的身份。支持以下值:user:表示消息由真实的人发送,通常是用户生成的消息。model:表示消息由模型生成。在多轮对话中,使用 model 值将模型的消息插入到对话中。对于非多轮对话,此字段可以留空或不设置。 + + 可选值:`user`、`model` + + + + 一段代码,使系统能够与外部系统交互,以在模型的知识和范围之外执行某项操作或一组操作。参见函数调用。 + + + + + + + + + + + + + + + + 函数参数的 JSON schema + + + + 如果为是,生成的图像将上传到云端存储,并以签名 URL 的形式返回,而不是内联 base64 数据。这些 URL 会在 24 小时后过期。 + + + + 对于视频输入,指视频以 Duration 格式表示的起始和结束偏移量。例如,要指定从 1:00 开始的 10 秒片段,请设置 "startOffset": \{ "seconds": 60 } 和 "endOffset": \{ "seconds": 70 }。仅当视频数据以 inlineData 或 fileData 呈现时,才应指定该元数据。 + + 表示视频时间轴位置的时间时长偏移量。 + + + + 以纳秒为单位的带符号秒数小数部分。带有小数部分的负秒值,其 nanos 值仍必须为非负数。 + + 范围:`0` 至 `999999999` + + + + 时间段内带符号的秒数。必须介于 -315,576,000,000 至 +315,576,000,000(含边界值)之间。 + + 范围:`-315576000000` 至 `315576000000` + + + + 表示视频时间轴位置的时间时长偏移量。 + + + + 以纳秒为单位的带符号秒数小数部分。带有小数部分的负秒值,其 nanos 值仍必须为非负数。 + + 范围:`0` 至 `999999999` + + + + 时间段内带符号的秒数。必须介于 -315,576,000,000 至 +315,576,000,000(含边界值)之间。 + + 范围:`-315576000000` 至 `315576000000` + + +由 Router 在 `GET /v2/models/vertexai/gemini-3.1-flash-image/openapi.json` 提供的 schema 生成,该文档与其在请求到达提供商之前用于验证调用的文档相同。### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 格式:`date` + + + + + + + + + + + + + + + + 与模型进行的当前对话内容。对于单轮查询,这是一个单独的实例。对于多轮查询,这是一个重复字段,包含对话历史和最新的请求。 + + + + + + + + 基于 URI 的数据。 + + + + URI + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 以原始字节形式内联的数据。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,你最多可以通过 inlineData 指定 3000 张图像。 + + + + 图像、PDF 或视频的 base64 编码,以内联方式包含在提示词中。以内联方式包含媒体时,还必须指定数据的媒体类型(mimeType)。大小限制:20MB + + 格式:`byte` + + + + 在 data 或 fileUri 字段中指定的文件的媒体类型。可接受的值包括以下内容。对于 gemini-2.0-flash-lite 和 gemini-2.0-flash,音频文件的最大长度为 8.4 小时,视频文件(不含音频)的最大长度为一小时。有关更多信息,请参阅 Gemini 音频和视频要求。文本文件必须采用 UTF-8 编码。文本文件的内容计入 token 上限。图像分辨率无限制。 + + 可能的值:`application/pdf`、`audio/mpeg`、`audio/mp3`、`audio/wav`、`image/png`、`image/jpeg`、`image/webp`、`text/plain`、`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/flv`、`image/heic`、`image/heif`、`audio/flac`、`video/webm` + + + + 文本提示词或代码片段。 + + + + 表示该部分来自模型的思考/推理步骤。 + + + + 可能的值:`user`、`model` + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + + 可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应创建时的时间戳。 + + + + 用于生成响应的模型版本。 + + + + + + + + + + + + + + + + + + + + 可能的值:`HARM_CATEGORY_SEXUALLY_EXPLICIT`、`HARM_CATEGORY_HATE_SPEECH`、`HARM_CATEGORY_HARASSMENT`、`HARM_CATEGORY_DANGEROUS_CONTENT` + + + + 内容违反指定安全类别的概率 + +可能的值:`NEGLIGIBLE`、`LOW`、`MEDIUM`、`HIGH`、`UNKNOWN` + + + + 响应的唯一标识符。 + + + + + + + + 仅输出。输入中缓存部分(缓存内容)的 token 数量。 + + + + 响应中的 token 数量。 + + + + 按模态划分的候选 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 请求中的 token 数量。当设置了 cachedContent 时,这仍然是有效的提示词总大小,也就是说它包含缓存内容中的 token 数量。 + + + + 按模态划分的提示词 token 明细。 + + + + 输入或输出内容的模态类型。 + + 可能的值:`MODALITY_UNSPECIFIED`、`TEXT`、`IMAGE`、`VIDEO`、`AUDIO`、`DOCUMENT` + + + + 给定模态的 token 数量。 + + + + 思考输出中存在的 token 数量。 + + + + 工具使用提示词中存在的 token 数量。 + + + + token 总数(提示词 + 候选)。 + + + + 用于请求的流量类型(例如 PROVISIONED_THROUGHPUT)。 + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +默认情况下,已生成的图像部分在 `inlineData.data` 中包含 base64 字节,并在 `inlineData.mimeType` 中包含媒体类型。请解码这些字节并将其保存到文件中。当 `uploadImagesToStorage: true` 时,上传的图像则使用 `fileData.fileUri` 提供签名 URL,并使用 `fileData.mimeType` 表示媒体类型。请在 URL 过期之前下载这些图像,即创建后 24 小时内。上传失败会使该图像保持内联形式,因此请检查每个部分中的 `inlineData` 或 `fileData`;文本部分也可能出现,并且图像不保证是第一个部分。 + + diff --git a/zh/development/comfy-router/models/google/nano-banana-pro/code.mdx b/zh/development/comfy-router/models/google/nano-banana-pro/code.mdx new file mode 100644 index 000000000..512ea2f01 --- /dev/null +++ b/zh/development/comfy-router/models/google/nano-banana-pro/code.mdx @@ -0,0 +1,593 @@ +--- +title: "搭配 Comfy Router 使用 Nano Banana Pro" +description: "通过 Comfy Router 以 HTTP 方式使用 Nano Banana Pro(Gemini 3 Pro Image)生成图像的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果结构" +sidebarTitle: "Nano Banana Pro" +translationSourceHash: 7b874168 +translationFrom: development/comfy-router/models/google/nano-banana-pro/code.mdx +translationBlockHashes: + "_intro": a2c404c6 + "Quick start": bf1dcb2a + "Examples": a15177bb +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Nano Banana Pro 的 API 参考。Nano Banana Pro(Gemini 3 Pro Image)是 Google Nano Banana 图像生成家族的 Pro 层级,面向复杂场景和清晰可读的文字。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `vertexai/gemini-3-pro-image` + +**端点:** `POST https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "vertexai/gemini-3-pro-image", + { + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + "generationConfig": { + "responseModalities": ["IMAGE"], + "imageConfig": { + "aspectRatio": "1:1", + }, + }, + }, + ) + +print("image (base64):", result["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { candidates: { content: { parts: { inlineData: { data: string } }[] } }[] }; +const { data } = await comfy.models.run("vertexai/gemini-3-pro-image", { + contents: [ + { + role: "user", + parts: [ + { + text: "a single red maple leaf on a plain white background, studio lighting", + }, + ], + }, + ], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "1:1", + }, + }, +}); + +console.log("image (base64):", data.candidates[0].content.parts[0].inlineData.data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/vertexai/gemini-3-pro-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"contents\": [{\"role\":\"user\",\"parts\":[{\"text\":\"a single red maple leaf on a plain white background, studio lighting\"}]}], \"generationConfig\": {\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" +``` + + +## Schema + +### Input + + + The content of the current conversation with the model. For single-turn queries, this is a single instance. For multi-turn queries, this is a repeated field that contains conversation history and the latest request. + + + + + + + + URI based data. + + + + URI + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + Inline data in raw bytes. For gemini-2.0-flash-lite and gemini-2.0-flash, you can specify up to 3000 images by using inlineData. + + + + The base64 encoding of the image, PDF, or video to include inline in the prompt. When including media inline, you must also specify the media type (mimeType) of the data. Size limit: 20MB + + Format: `byte` + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + A text prompt or code snippet. + + + + Indicates this part is a thinking/reasoning step from the model. + + + + Possible values: `user`, `model` + + + + Sampling, length and output settings for the generation. Every field is optional: the fields below that declare a `default` apply it when omitted, and the rest fall back to the model's own behaviour. + + + + Configuration for image generation + + + + Aspect ratio for generated images + + + + Optional. The image output format for generated images. + + + + Optional. The compression quality of the output image. + + + + Optional. The image format that the output should be saved as. + + + + Optional. Specifies the size of generated images. Supported values are 1K, 2K, 4K. If not specified, the model will use default value 1K. + + + + Maximum number of tokens that can be generated in the response. A token is approximately 4 characters. 100 tokens correspond to roughly 60-80 words. + + Range: `16` to `65536` + + + + + + + + When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. Deterministic output isn't guaranteed. Also, changing the model or parameter settings, such as the temperature, can cause variations in the response even when you use the same seed value. By default, a random seed value is used. Available for the following models:, gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001 + + + + + + + + The temperature is used for sampling during response generation, which occurs when topP and topK are applied. Temperature controls the degree of randomness in token selection. Lower temperatures are good for prompts that require a less open-ended or creative response, while higher temperatures can lead to more diverse or creative results. A temperature of 0 means that the highest probability tokens are always selected. In this case, responses for a given prompt are mostly deterministic, but a small amount of variation is still possible. If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature + + Range: `0` to `2` + + Format: `float` + + + + Optional. Configuration for thinking features. Thinking is a process where the model breaks down a complex task into smaller steps to generate a higher-quality response. + + + + Optional. If true, the model will include its thoughts in the response. + + + + Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. + + + + Optional. The thinking level for the model. + + Possible values: `THINKING_LEVEL_UNSPECIFIED`, `LOW`, `MEDIUM`, `HIGH`, `MINIMAL` + + + + Top-K changes how the model selects tokens for output. A top-K of 1 means the next selected token is the most probable among all tokens in the model's vocabulary. A top-K of 3 means that the next token is selected from among the 3 most probable tokens by using temperature. + + Range: `1` to `…` + + + + If specified, nucleus sampling is used. +Top-P changes how the model selects tokens for output. Tokens are selected from the most (see top-K) to least probable until the sum of their probabilities equals the top-P value. For example, if tokens A, B, and C have a probability of 0.3, 0.2, and 0.1 and the top-P value is 0.5, then the model will select either A or B as the next token by using temperature and excludes C as a candidate. +Specify a lower value for less random responses and a higher value for more random responses. + + Range: `0` to `1` + + Format: `float` + + + + Per request settings for blocking unsafe content. Enforced on GenerateContentResponse.candidates. + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + Possible values: `OFF`, `BLOCK_NONE`, `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH` + + + + Instructions for the model to steer it toward better performance. For example, "Answer as concisely as possible" or "Don't use technical terms in your response". The text strings count toward the token limit. The role field of systemInstruction is ignored and doesn't affect the performance of the model. Note: Only text should be used in parts and content in each part should be in a separate paragraph. + + + + A list of ordered parts that make up a single message. Different parts may have different IANA MIME types. For limits on the inputs, such as the maximum number of tokens or the number of images, see the model specifications on the Google models page. + + + + A text prompt or code snippet. + + + + The identity of the entity that creates the message. The following values are supported: user: This indicates that the message is sent by a real person, typically a user-generated message. model: This indicates that the message is generated by the model. The model value is used to insert messages from the model into the conversation during multi-turn conversations. For non-multi-turn conversations, this field can be left blank or unset. + + Possible values: `user`, `model` + + + + A piece of code that enables the system to interact with external systems to perform an action, or set of actions, outside of knowledge and scope of the model. See Function calling. + + + + + + + + + + + + + + + + JSON schema for the function parameters + + + + If true, generated images will be uploaded to cloud storage and returned as signed URLs instead of inline base64 data. The URLs expire after 24 hours. + + + + For video input, the start and end offset of the video in Duration format. For example, to specify a 10 second clip starting at 1:00, set "startOffset": \{ "seconds": 60 } and "endOffset": \{ "seconds": 70 }. The metadata should only be specified while the video data is presented in inlineData or fileData. + + + + Represents a duration offset for video timeline positions. + + + + Signed fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values. + + Range: `0` to `999999999` + + + + Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. + + Range: `-315576000000` to `315576000000` + + + + Represents a duration offset for video timeline positions. + + + + Signed fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values. + + Range: `0` to `999999999` + + + + Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. + + Range: `-315576000000` to `315576000000` + + +Generated from the schema Router serves at `GET /v2/models/vertexai/gemini-3-pro-image/openapi.json`, the same document it validates a call against before the request reaches the provider. + +### Output + + + + + + + + + + + + + + + + + + + + + + + + + + + Format: `date` + + + + + + + + + + + + + + + + The content of the current conversation with the model. For single-turn queries, this is a single instance. For multi-turn queries, this is a repeated field that contains conversation history and the latest request. + + + + + + + + URI based data. + + + + URI + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + Inline data in raw bytes. For gemini-2.0-flash-lite and gemini-2.0-flash, you can specify up to 3000 images by using inlineData. + + + + The base64 encoding of the image, PDF, or video to include inline in the prompt. When including media inline, you must also specify the media type (mimeType) of the data. Size limit: 20MB + + Format: `byte` + + + + The media type of the file specified in the data or fileUri fields. Acceptable values include the following. For gemini-2.0-flash-lite and gemini-2.0-flash, the maximum length of an audio file is 8.4 hours and the maximum length of a video file (without audio) is one hour. For more information, see Gemini audio and video requirements. Text files must be UTF-8 encoded. The contents of the text file count toward the token limit. There is no limit on image resolution. + + Possible values: `application/pdf`, `audio/mpeg`, `audio/mp3`, `audio/wav`, `image/png`, `image/jpeg`, `image/webp`, `text/plain`, `video/mov`, `video/mpeg`, `video/mp4`, `video/mpg`, `video/avi`, `video/wmv`, `video/mpegps`, `video/flv`, `image/heic`, `image/heif`, `audio/flac`, `video/webm` + + + + A text prompt or code snippet. + + + + Indicates this part is a thinking/reasoning step from the model. + + + + Possible values: `user`, `model` + + + + + + + + + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + The probability that the content violates the specified safety category + + Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + Timestamp when the response was created. + + + + The model version used to generate the response. + + + + + + + + + + + + + + + + + + + + Possible values: `HARM_CATEGORY_SEXUALLY_EXPLICIT`, `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_DANGEROUS_CONTENT` + + + + The probability that the content violates the specified safety category + + Possible values: `NEGLIGIBLE`, `LOW`, `MEDIUM`, `HIGH`, `UNKNOWN` + + + + Unique identifier for the response. + + + + + + + + Output only. Number of tokens in the cached part in the input (the cached content). + + + + Number of tokens in the response(s). + + + + Breakdown of candidate tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens in the request. When cachedContent is set, this is still the total effective prompt size meaning this includes the number of tokens in the cached content. + + + + Breakdown of prompt tokens by modality. + + + + Type of input or output content modality. + + Possible values: `MODALITY_UNSPECIFIED`, `TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `DOCUMENT` + + + + Number of tokens for the given modality. + + + + Number of tokens present in thoughts output. + + + + Number of tokens present in tool-use prompt(s). + + + + Total number of tokens (prompt + candidates). + + + + Traffic type used for the request (e.g., PROVISIONED_THROUGHPUT). + + +## 示例 + +### 输入 + +```json +{ + "contents": [ + { + "role": "user", + "parts": [ + { + "text": "a single red maple leaf on a plain white background, studio lighting" + } + ] + } + ], + "generationConfig": { + "responseModalities": [ + "IMAGE" + ], + "imageConfig": { + "aspectRatio": "1:1" + } + } +} +``` + +### 输出 + +```json +{ + "candidates": [ + { + "content": { + "role": "model", + "parts": [ + { + "inlineData": { + "mimeType": "image/png", + "data": "PGJhc2U2ND4=" + } + } + ] + }, + "finishReason": "STOP" + } + ], + "usageMetadata": { + "promptTokenCount": 12, + "candidatesTokenCount": 1290 + } +} +``` + +默认情况下,已生成图像的 part 会在 `inlineData.data` 中包含 base64 字节,并在 `inlineData.mimeType` 中包含媒体类型。请解码这些字节并将其保存到文件中。使用 `uploadImagesToStorage: true` 时,上传的图像则改用 `fileData.fileUri` 提供签名 URL,并用 `fileData.mimeType` 表示媒体类型。请在 URL 过期之前下载这些图像,即创建后 24 小时内。上传失败会使该图像保持内联形式,因此请检查每个 part 中的 `inlineData` 或 `fileData`;文本 part 也可能出现,并且图像不保证是第一个 part。 + + diff --git a/zh/development/comfy-router/models/heygen/starfish/code.mdx b/zh/development/comfy-router/models/heygen/starfish/code.mdx new file mode 100644 index 000000000..4af6a794b --- /dev/null +++ b/zh/development/comfy-router/models/heygen/starfish/code.mdx @@ -0,0 +1,164 @@ +--- +title: "将 Starfish 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 heygen/starfish:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Starfish" +translationSourceHash: 61d22fda +translationFrom: development/comfy-router/models/heygen/starfish/code.mdx +translationBlockHashes: + "_intro": 2fa9af39 + "Quick start": 67de0272 + "Schema": e2e4a0e8 + "Examples": 91957ee9 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/heygen/starfish.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`heygen/starfish` 的 API 参考,由 Comfy Router 提供,模型来自 HeyGen。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `heygen/starfish` + +**端点:** `POST https://api.comfy.org/v2/models/heygen/starfish` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "heygen/starfish", + { + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("heygen/starfish", { + text: "This is a billing verification test for HeyGen speech generation.", + voice_id: "d2f4f24783d04e22ab49ee8fdc3715e0", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/heygen/starfish \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text\": \"This is a billing verification test for HeyGen speech generation.\", \"voice_id\": \"d2f4f24783d04e22ab49ee8fdc3715e0\"}" +``` + + +## Schema + +### 输入 + + + 输入的类型:纯文本使用 'text',SSML 标记使用 'ssml'。默认为 'text' + + + + 基础语言代码(例如 'en')。省略时会从文本中自动检测 + + + + BCP-47 区域设置标签(例如 'en-US')。设置后,语言将根据区域设置推断 + + + + 速度倍数(0.5-2.0) + + 范围:`0.5` 到 `2` + + 格式:`double` + + + + 要合成的文本(1-5000 个字符) + + + + 要使用的语音 ID。该语音必须支持 starfish 引擎 + + +本内容根据 Router 在 `GET /v2/models/heygen/starfish/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前 Router 用来校验调用的同一份文档。 + +### 输出 + + + 成功的 HeyGen 文本转语音响应的载荷 + + + + 已生成音频文件的 URL + + + + 音频的时长,单位为秒 + + 格式:`double` + + + + 此生成请求的唯一标识符 + + + + 词级时间数据 + + + + 结束时间,单位为秒 + + 格式:`double` + + + + 开始时间,单位为秒 + + 格式:`double` + + + + 该单词 + + +## 示例 + +### 输入 + +```json +{ + "text": "This is a billing verification test for HeyGen speech generation.", + "voice_id": "d2f4f24783d04e22ab49ee8fdc3715e0" +} +``` + +### 输出 + +```json +{ + "data": { + "audio_url": "https://example.invalid/heygen/starfish/speech.mp3", + "duration": 12.5, + "request_id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9" + } +} +``` + + diff --git a/zh/development/comfy-router/models/ideogram/ideogram-v3/code.mdx b/zh/development/comfy-router/models/ideogram/ideogram-v3/code.mdx new file mode 100644 index 000000000..8123eccab --- /dev/null +++ b/zh/development/comfy-router/models/ideogram/ideogram-v3/code.mdx @@ -0,0 +1,206 @@ +--- +title: "将 Ideogram V3 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 ideogram/ideogram-v3:endpoint、请求结构与 Router 返回的响应。" +sidebarTitle: "Ideogram V3" +translationSourceHash: 42cffa9c +translationFrom: development/comfy-router/models/ideogram/ideogram-v3/code.mdx +translationBlockHashes: + "_intro": 074a583c + "Quick start": bc06ae27 + "Schema": f5d9b6a6 + "Examples": 1fc8611a +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/ideogram/ideogram-v3.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`ideogram/ideogram-v3` 的 API 参考,由 Comfy Router 提供,来源于 Ideogram。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `ideogram/ideogram-v3` + +**端点:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v3", + { + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/ideogram-v3", { + prompt: "A beautiful mountain landscape", + rendering_speed: "TURBO", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\", \"rendering_speed\": \"TURBO\"}" +``` + + +## Schema + +### 输入 + + + 宽高比,格式为 WxH + + + + + + + + 显式指定的颜色,可带可选权重 + + + + 十六进制颜色代码 + + + + 该颜色的可选权重(0-1) + + 范围:`0` 到 `1` + + + + 调色板的名称 + + + + 是否启用 magic prompt 增强 + + 可选值:`AUTO`、`ON`、`OFF` + + + + 用于指定生成时应避免出现内容的文本提示词 + + + + 要生成的图像数量 + + 范围:`1` 到 `…` + + + + 用于图像生成的文本提示词 + + + + 渲染速度设置,用于控制生成速度与质量之间的权衡 + + 可选值:`DEFAULT`、`TURBO`、`QUALITY` + + + + 图像分辨率,格式为 WxH + + + + 用于可复现生成的种子值 + + + + 十六进制格式的风格代码数组 + + + + 可选值:`AUTO`、`GENERAL`、`REALISTIC`、`DESIGN`、`FICTION` + + +根据 Router 在 `GET /v2/models/ideogram/ideogram-v3/openapi.json` 提供的 schema 生成,该文档与 Router 在请求抵达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 生成创建时的时间戳。 + + 格式:`date-time` + + + + 已生成图像的信息数组。 + + + + 表示该图像是否被视为安全。 + + + + 用于生成此图像的提示词。 + + + + 已生成图像的分辨率(例如 '1024x1024')。 + + + + 此次生成所使用的种子值。 + + + + 生成所使用的风格类型(例如 'REALISTIC'、'ANIME')。 + + + + 已生成图像的 URL。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A beautiful mountain landscape", + "rendering_speed": "TURBO" +} +``` + +### 输出 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/ideogram-v3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/ideogram/ideogram-v4/code.mdx b/zh/development/comfy-router/models/ideogram/ideogram-v4/code.mdx new file mode 100644 index 000000000..e84eef430 --- /dev/null +++ b/zh/development/comfy-router/models/ideogram/ideogram-v4/code.mdx @@ -0,0 +1,166 @@ +--- +title: "结合 Comfy Router 使用 Ideogram 4.0" +description: "通过 Comfy Router 以 HTTP 方式调用 Ideogram 4.0 生成图像的 Python、TypeScript 和 cURL 代码片段,以及请求字段与返回结果的结构" +sidebarTitle: "Ideogram 4.0" +translationSourceHash: e77eb667 +translationFrom: development/comfy-router/models/ideogram/ideogram-v4/code.mdx +translationBlockHashes: + "_intro": b9914544 + "Quick start": e25a5de5 + "Schema": da4e8bcc + "Examples": 094048af +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Ideogram 4.0 的 API 参考。Ideogram 4.0 是 Ideogram 的文生图模型,可在生成的图像中渲染清晰可读的文字。 + +## 快速入门 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `ideogram/ideogram-v4` + +**端点:** `POST https://api.comfy.org/v2/models/ideogram/ideogram-v4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/ideogram-v4", + { + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT", + }, + ) + +print("image:", result["data"][0]["url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { data: { url: string }[] }; +const { data } = await comfy.models.run("ideogram/ideogram-v4", { + text_prompt: "a single red maple leaf on a plain white background, studio lighting", + resolution: "1024x1024", + rendering_speed: "DEFAULT", +}); + +console.log("image:", data.data[0].url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/ideogram-v4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"text_prompt\": \"a single red maple leaf on a plain white background, studio lighting\", \"resolution\": \"1024x1024\", \"rendering_speed\": \"DEFAULT\"}" +``` + + +## Schema + +### 输入 + + + 选择开启生成后版权检测(Hive 相似度和标识检查)。 + + + + 结构化的 V4 提示词。会禁用 Magic Prompt;直接使用该内容。text_prompt 或 json_prompt 必须且只能提供其中一个。 + + + + 渲染速度设置,用于控制生成速度与质量之间的权衡 + + 可选值:`DEFAULT`、`TURBO`、`QUALITY` + + + + 输出分辨率,格式为 WIDTHxHEIGHT。省略该参数则让模型自行选择宽高比。支持的 2K 取值:2048x2048、1440x2880、2880x1440、1664x2496、2496x1664、1792x2240、2240x1792、1440x2560、2560x1440、1600x2560、2560x1600、1728x2304、2304x1728、1296x3168、3168x1296、1152x2944、2944x1152、1248x3328、3328x1248、1280x3072、3072x1280。 + + + + 自然语言提示词。会自动启用 Magic Prompt。text_prompt 或 json_prompt 必须且只能提供其中一个。 + + +内容根据 Router 在 `GET /v2/models/ideogram/ideogram-v4/openapi.json` 处提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 生成创建时的时间戳。 + + 格式:`date-time` + + + + 已生成图像信息的数组。 + + + + 指示该图像是否被视为安全。 + + + + 用于生成此图像的提示词。 + + + + 已生成图像的分辨率(例如 '1024x1024')。 + + + + 此次生成使用的种子值。 + + + + 生成所使用的风格类型(例如 'REALISTIC'、'ANIME')。 + + + + 已生成图像的 URL。 + + +## 示例 + +### 输入 + +```json +{ + "text_prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "rendering_speed": "DEFAULT" +} +``` + +### 输出 + +```json +{ + "response_type": "url", + "created": "2026-08-27T21:00:00Z", + "data": [ + { + "url": "https://.../image.png", + "prompt": "a single red maple leaf on a plain white background, studio lighting", + "resolution": "1024x1024", + "seed": 1234567890, + "is_image_safe": true + } + ] +} +``` + +该 URL 是临时链接。如果你需要保留图像,请及时下载。 + + diff --git a/zh/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx b/zh/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx new file mode 100644 index 000000000..877d76e63 --- /dev/null +++ b/zh/development/comfy-router/models/ideogram/p-image-ideogram/code.mdx @@ -0,0 +1,163 @@ +--- +title: "配合 Comfy Router 使用 P Image Ideogram" +description: "通过 Comfy Router 调用 ideogram/p-image-ideogram:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "P Image Ideogram" +translationSourceHash: 063a5bfe +translationFrom: development/comfy-router/models/ideogram/p-image-ideogram/code.mdx +translationBlockHashes: + "_intro": de73d082 + "Quick start": c96cb422 + "Schema": 3aed066f + "Examples": 20db9e6c +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/ideogram/p-image-ideogram.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`ideogram/p-image-ideogram` 的 API 参考文档,由 Comfy Router 从 Ideogram 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `ideogram/p-image-ideogram` + +**端点:** `POST https://api.comfy.org/v2/models/ideogram/p-image-ideogram` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ideogram/p-image-ideogram", + { + "prompt": "A beautiful mountain landscape", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ideogram/p-image-ideogram", { + prompt: "A beautiful mountain landscape", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ideogram/p-image-ideogram \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A beautiful mountain landscape\"}" +``` + + +## Schema + +### 输入 + + + 宽高比,格式为 WxH。支持的取值:1x3、3x1、1x2、2x1、9x16、16x9、10x16、16x10、2x3、3x2、3x4、4x3、4x5、5x4、1x1。默认为 1x1。 + + + + 启用生成后的版权检测(Hive 相似度与 logo 检查)。 + + + + 用于图像生成的提示词,可以是自然语言,也可以是 Ideogram 4.0 JSON 结构化提示词。 + + + + 提示词上采样模式。支持的取值为 AUTO、ON 和 OFF。默认为 AUTO。 + + + + 生成质量级别。支持的取值为 VERY_LOW、LOW、MEDIUM 和 HIGH。默认为 MEDIUM。 + + + + 输出分辨率。支持的取值为 1K 和 2K。默认为 1K。 + + + + 用于可复现生成的种子值 + + +该 Schema 由 Router 在 `GET /v2/models/ideogram/p-image-ideogram/openapi.json` 提供的文档生成,它也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的时间戳。 + + 格式:`date-time` + + + + 已生成图像信息的数组。 + + + + 表示该图像是否被视为安全。 + + + + 用于生成此图像的提示词。 + + + + 已生成图像的分辨率(例如 '1024x1024')。 + + + + 本次生成所使用的种子值。 + + + + 生成所使用的风格类型(例如 'REALISTIC'、'ANIME')。 + + + + 已生成图像的 URL。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A beautiful mountain landscape" +} +``` + +### 输出 + +```json +{ + "created": "2026-01-01T00:00:00Z", + "data": [ + { + "is_image_safe": true, + "prompt": "A poster for a jazz festival, bold typography, warm colours", + "resolution": "1024x1024", + "seed": 918273645, + "style_type": "REALISTIC", + "url": "https://example.invalid/ideogram/p-image-ideogram/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx b/zh/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx new file mode 100644 index 000000000..8bff1342d --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-3-0-turbo/code.mdx @@ -0,0 +1,288 @@ +--- +title: "通过 Comfy Router 使用 Kling 3.0 Turbo" +description: "通过 Comfy Router 调用 kling/kling-3.0-turbo:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling 3.0 Turbo" +translationSourceHash: d9428b90 +translationFrom: development/comfy-router/models/kling/kling-3-0-turbo/code.mdx +translationBlockHashes: + "_intro": b67babfc + "Quick start": a4f17f83 + "Schema": 2e661ab0 + "Examples": 0a9a8bbe +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/kling-3.0-turbo.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-3.0-turbo` 的 API 参考,由 Comfy Router 从 Kling 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `kling/kling-3.0-turbo` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-3.0-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-3.0-turbo", + { + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-3.0-turbo", { + prompt: "A neon-lit alley in the rain, slow dolly forward.", + settings: { + aspect_ratio: "16:9", + duration: 5, + resolution: "1080p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-3.0-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"A neon-lit alley in the rain, slow dolly forward.\", \"settings\": {\"aspect_ratio\":\"16:9\",\"duration\":5,\"resolution\":\"1080p\"}}" +``` + + +## 结构 + +### 输入 + + + 常规配置,例如回调地址和水印选项。 + + + + 任务结果回调通知 URL。当任务状态发生变化时,服务器会发送通知。 + + + + 自定义任务 ID。不会覆盖系统生成的任务 ID,但可用于查询。在单个用户账号内必须唯一。 + + + + 是否同时生成带水印的结果。不支持自定义水印。 + + + + true 表示生成带水印的结果,false 表示不生成。默认 false。 + + + + 提示词,可同时包含正面和负面描述。推荐长度不超过 2500 个字符。多镜头视频使用格式 "shot n, m, words; shot n, m, words;"。 + + + + 输出配置,例如分辨率、宽高比和时长。 + + + + 已生成画面的宽高比(width:height)。取值为 "16:9"、"9:16" 或 "1:1" 之一。默认 "16:9"。 + + Possible values: `16:9`, `9:16`, `1:1` + + + + 视频长度,以秒为单位。支持的取值为 3 到 15。默认 5。 + + Range: `3` to `15` + + + + 已生成视频的清晰度。取值为 "720p" 或 "1080p" 之一。默认 "720p"。 + + Possible values: `720p`, `1080p` + + +由 Router 在 `GET /v2/models/kling/kling-3.0-turbo/openapi.json` 提供的 schema 生成,与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误码。0 表示成功。 + + + + 匹配该查询的任务。 + + + + 任务的计费详情。 + + + + 消耗金额,精确到小数点后两位。 + + + + 消耗账户类型。"cash" 表示余额,"unit" 表示资源包。 + + + + 可消耗资源包类型(仅在 charge_type 为 "unit" 时存在)。取值为 "video"、"image" 或 "audio" 之一。 + + + + 任务创建时间。Unix 时间戳,以毫秒为单位。 + + Format: `int64` + + + + 此任务的自定义任务 ID(如果有)。 + + + + 任务 ID。 + + + + 任务状态信息,任务失败时显示失败原因。 + + + + 任务已生成的输出。 + + + + 已生成视频的时长,以秒为单位。 + + + + 分组标记,仅对已分组的图像存在。 + + + + 由系统生成的输出 ID。 + + + + 已生成 MP3 音频的时长,以秒为单位。 + + + + 已生成音频的 MP3 URL(防盗链保护)。 + + + + 已生成素材的名称。 + + + + 素材来源。"kling" 表示官方库;数字为创作者 ID。 + + + + 素材状态。取值为 "succeeded" 或 "deleted" 之一。 + + + + 输出内容类型。取值为 "video"、"image"、"audio"、"voice" 或 "element" 之一。 + + + + 已生成结果的 URL(防盗链保护)。30 天后清除。 + + + + 带水印结果的 URL(防盗链保护)。 + + + + 已生成 WAV 音频的时长,以秒为单位。 + + + + 已生成音频的 WAV URL(防盗链保护)。 + + + + 任务状态。取值为 "submitted"、"processing"、"succeeded" 或 "failed" 之一。 + + + + 任务更新时间。Unix 时间戳,以毫秒为单位。 + + Format: `int64` + + + + 报错信息。 + + + + 由系统生成的请求 ID。 + + +## 示例 + +### 输入 + +```json +{ + "prompt": "A neon-lit alley in the rain, slow dolly forward.", + "settings": { + "aspect_ratio": "16:9", + "duration": 5, + "resolution": "1080p" + } +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": [ + { + "create_time": 1798761600000, + "id": "kling-v2-task-7c8d9e0f1a2b", + "message": "", + "outputs": [ + { + "duration": "5", + "id": "kling-v2-output-2b1a0f9e8d7c", + "type": "video", + "url": "https://example.invalid/kling/kling-3.0-turbo/generated.mp4" + } + ], + "status": "succeeded", + "update_time": 1798761820000 + } + ], + "message": "SUCCEED", + "request_id": "3d7e5c91-0b42-4f68-9a13-8e2c6d4b0a75" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-image-o1/code.mdx b/zh/development/comfy-router/models/kling/kling-image-o1/code.mdx new file mode 100644 index 000000000..1892fd255 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-image-o1/code.mdx @@ -0,0 +1,273 @@ +--- +title: "使用 Comfy Router 调用 Kling Image O1" +description: "通过 Comfy Router 调用 kling/kling-image-o1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling Image O1" +translationSourceHash: 596065da +translationFrom: development/comfy-router/models/kling/kling-image-o1/code.mdx +translationBlockHashes: + "_intro": 39366fac + "Quick start": a99898b2 + "Schema": d18a5393 + "Examples": 826db173 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/kling-image-o1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-image-o1` 的 API 参考,该模型来自 Kling,由 Comfy Router 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `kling/kling-image-o1` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-image-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-image-o1", + { + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-image-o1", { + aspect_ratio: "1:1", + n: 1, + prompt: "A watercolour koi pond at dawn, soft light.", + resolution: "1k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-image-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"n\": 1, \"prompt\": \"A watercolour koi pond at dawn, soft light.\", \"resolution\": \"1k\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的宽高比(宽度:高度)。auto 表示根据传入内容智能生成图像。 + + 可选值:`16:9`、`9:16`、`1:1`、`4:3`、`3:4`、`3:2`、`2:3`、`21:9`、`auto` + + + + 此任务结果的回调通知地址。若已配置,任务状态发生变化时服务器会主动通知。 + + 格式:`uri` + + + + 基于元素 ID 配置的参考元素列表。参考元素与参考图像的数量之和不得超过 10。 + + + + 元素 ID + + 格式:`int64` + + + + 自定义任务 ID。在单个用户账户内必须唯一。 + + + + 参考图像列表。支持传入图像 Base64 编码或图像网址(确保可访问)。支持的格式包括 .jpg/.jpeg/.png。文件大小不能超过 10MB。宽度和高度尺寸不得小于 300px,宽高比在 1:2.5 ~ 2.5:1 之间。参考元素与参考图像的数量之和不得超过 10。 + + + + 图像 Base64 编码或图像网址(确保可访问) + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径选择。如果提供了名称,则必须与该路径匹配。 + + + + 生成图像的数量。取值范围 [1,9]。 + + 范围:`1` 至 `9` + + + + 文本提示词,可包含正面和负面描述。不得超过 2,500 个字符。Omni 模型可以通过带有元素和图像的 Prompt 实现多种能力。使用 \<\<\<>>> 格式指定图像,例如 \<\<\>>。 + + + + 图像生成分辨率。1k 为 1K 标准,2k 为 2K 高清,4k 为 4K 高清。 + + 可选值:`1k`、`2k`、`4k` + + + + 控制生成单张图像还是组图。 + + 可选值:`single`、`series` + + + + 组图中图像的数量。取值范围 [2,9]。 + + 范围:`2` 至 `9` + + +由 Router 在 `GET /v2/models/kling/kling-image-o1/openapi.json` 提供的 Schema 生成,与请求到达提供商之前用于校验调用的文档为同一份。 + +### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣减单位 + + + + 任务 ID + + + + + + + + 客户自定义任务 ID + + + + + + + + + + + + 图像编号(0-9) + + + + 已生成图像的网址 + + 格式:`uri` + + + + 结果是单张图像还是组图 + + 可选值:`single`、`series` + + + + 组图结果列表 + + + + 组图序号 + + + + 已生成图像的网址 + + 格式:`uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因(例如触发平台的内容风控等) + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "n": 1, + "prompt": "A watercolour koi pond at dawn, soft light.", + "resolution": "1k" +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-image-task-3c4d5e6f7a8b", + "task_result": { + "images": [ + { + "index": 0, + "url": "https://example.invalid/kling/kling-image-o1/generated.png" + } + ], + "result_type": "single" + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761660000 + }, + "message": "SUCCEED", + "request_id": "6a4b2c80-1e93-4d57-b8f2-05c7e9a3d146" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v1-5/code.mdx b/zh/development/comfy-router/models/kling/kling-v1-5/code.mdx new file mode 100644 index 000000000..e0ae772ad --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v1-5/code.mdx @@ -0,0 +1,386 @@ +--- +title: "搭配 Comfy Router 使用 Kling V1.5" +description: "通过 Comfy Router 调用 kling/kling-v1-5:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Kling V1.5" +translationSourceHash: fa5c5f9d +translationFrom: development/comfy-router/models/kling/kling-v1-5/code.mdx +translationBlockHashes: + "_intro": f02fc14d + "Quick start": 21e511ce + "Schema": d81409e3 + "Examples": e835e733 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v1-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1-5` 的 API 参考文档,由 Comfy Router 提供,模型来自 Kling。 + +## 快速开始 {#quick-start} + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `kling/kling-v1-5` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v1-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-5", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-5", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## Schema + +### 输入 + + + 回调通知地址。当任务状态发生变化时,服务器将发送通知。 + + Format: `uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的运动。负值表示向左,正值表示向右。 + + Range: `-10` to `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + Range: `-10` to `10` + + + + 控制相机的翻滚数量(z 轴)。负值表示逆时针,正值表示顺时针。 + + Range: `-10` to `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + Range: `-10` to `10` + + + + 控制相机沿竖直轴(y 轴)的运动。负值表示向下,正值表示向上。 + + Range: `-10` to `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + Range: `-10` to `10` + + + + 预定义的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + Possible values: `simple`, `down_back`, `forward_up`, `right_turn_forward`, `left_turn_forward` + + + + 视频生成的灵活度。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + Range: `0` to `1` + + Format: `float` + + + + 视频时长(秒) + + Possible values: `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15` + + + + 动态画笔配置列表(最多 6 组)。对于 5 秒的视频,轨迹长度不得超过 77 个坐标。 + + + + 动态画笔应用区域(用户使用运动画笔创建的遮罩图像)。宽高比必须与输入图像匹配。 + + Format: `uri` + + + + + + + + 轨迹点的水平坐标。以图像左下角为原点 (0,0)。 + + + + 轨迹点的竖直坐标。以图像左下角为原点 (0,0)。 + + + + 基于元素 ID 配置的参考元素列表。最多支持 3 个参考元素。element_list 与 voice_list 参数互斥。 + + + + 元素 ID + + Format: `int64` + + + + 自定义任务 ID。在单个用户账户内必须唯一。 + + + + 参考图像 - URL 或 Base64 编码字符串,不能超过 10MB,分辨率不低于 300*300px,宽高比在 1:2.5 ~ 2.5:1 之间。Base64 不应包含 data:image 前缀。 + + + + 参考图像 - 结束帧控制。URL 或 Base64 编码字符串,不能超过 10MB,分辨率不低于 300*300px。Base64 不应包含 data:image 前缀。不能与 dynamic_masks/static_mask 或 camera_control 同时使用。 + + + + 视频生成模式。std:标准模式,性价比高。pro:专业模式,可生成时长更长的视频,输出质量更高。 + + Possible values: `std`, `pro` + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径选择。若提供名称,则必须与该路径匹配。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长(秒)。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 分镜序号 + + + + 该分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多分镜视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + +负面文本提示词。推荐直接在正向提示词中通过负面语句来补充负面提示词信息。 + + + + 正向文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 个音色。指定音色时,sound 参数的值必须为 on。 + + + + 分镜方式。当 multi_shot 参数设为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持此参数。 + + 可选值:`on`、`off` + + + + 静态画笔作用区域(用户使用运动画笔创建的遮罩图像)。宽高比必须与输入图像一致。 + + + + 生成视频时引用的声音列表。最多支持 2 个声音。element_list 与 voice_list 参数互斥。 + + + + 通过声音定制 API 返回的声音 ID,或系统预置的声音 ID。 + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成水印。 + + +本文档由 Router 在 `GET /v2/models/kling/kling-v1-5/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳,单位为毫秒 + + + + 任务的扣费单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频的 ID + + + + 已生成视频的 URL + + Format: `uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + Format: `uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳,单位为毫秒 + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v1-6/code.mdx b/zh/development/comfy-router/models/kling/kling-v1-6/code.mdx new file mode 100644 index 000000000..f429aa590 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v1-6/code.mdx @@ -0,0 +1,340 @@ +--- +title: "将 Kling V1.6 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 kling/kling-v1-6:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V1.6" +translationSourceHash: a868053a +translationFrom: development/comfy-router/models/kling/kling-v1-6/code.mdx +translationBlockHashes: + "_intro": e5d8f71a + "Quick start": fa734b11 + "Schema": ffd91cca + "Examples": 14429ff8 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/kling-v1-6.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1-6` 的 API 参考,由 Comfy Router 从 Kling 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `kling/kling-v1-6` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v1-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 输入 + + + 视频宽高比 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的翻滚幅度(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预设的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成时的灵活度。值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,性价比高。pro:专业模式,生成的视频时长更长,输出质量更高。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时请省略该参数或发送 null,模型由请求路径决定。若提供名称,则必须与该路径匹配。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度为 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接在正面提示词中用否定语句补充负面提示信息。 + + + + 正面文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 种音色。指定音色时,sound 参数的值必须为 on。 + + + + 分镜方法。当 multi_shot 参数设置为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持该参数。 + + 可选值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +生成本页内容依据的是 Router 在 `GET /v2/models/kling/kling-v1-6/openapi.json` 提供的 schema,它也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣费单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频 ID + + + + 已生成视频的 URL + + Format: `uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + Format: `uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + diff --git a/zh/development/comfy-router/models/kling/kling-v1/code.mdx b/zh/development/comfy-router/models/kling/kling-v1/code.mdx new file mode 100644 index 000000000..3cad2b98e --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v1/code.mdx @@ -0,0 +1,341 @@ +--- +title: "使用 Kling V1 与 Comfy Router" +description: "通过 Comfy Router 调用 kling/kling-v1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V1" +translationSourceHash: ec2e1ff4 +translationFrom: development/comfy-router/models/kling/kling-v1/code.mdx +translationBlockHashes: + "_intro": 88237ef1 + "Quick start": f9ab16cf + "Schema": 16c4273c + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v1` 的 API 参考,由 Comfy Router 提供,模型来自 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 执行的同一调用。 + +**Model ID:** `kling/kling-v1` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v1", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema {#schema} + +### 输入 + + + 视频宽高比 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在垂直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的翻滚幅度(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预设的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活度。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,具有成本效益。pro:专业模式,可生成时长更长、质量更高的视频。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径决定。若传入名称,则必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度为 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接通过正向提示词中的否定语句来补充负面提示词信息。 + + + + 正向文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 种音色。指定音色时,sound 参数值必须为 on。 + + + + 分镜方式。当 multi_shot 参数为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持该参数。 + + 可选值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +根据 Router 在 `GET /v2/models/kling/kling-v1/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣减单位 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,采用防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v2-1-master/code.mdx b/zh/development/comfy-router/models/kling/kling-v2-1-master/code.mdx new file mode 100644 index 000000000..bce99b15c --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v2-1-master/code.mdx @@ -0,0 +1,341 @@ +--- +title: "使用 Kling V2.1 Master 与 Comfy Router" +description: "通过 Comfy Router 调用 kling/kling-v2-1-master:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V2.1 Master" +translationSourceHash: 82fdab1d +translationFrom: development/comfy-router/models/kling/kling-v2-1-master/code.mdx +translationBlockHashes: + "_intro": a94d25f9 + "Quick start": 1402bdfa + "Schema": 3d3492a4 + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-1-master.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1-master` 的 API 参考,由 Kling 通过 Comfy Router 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `kling/kling-v2-1-master` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 输入 + + + 视频比例 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的翻滚量(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预定义的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活度。值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,性价比高。pro:专业模式,可生成时长更长、质量更高的视频。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径决定。若提供名称,则必须与该路径匹配。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜的时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接在正面提示词中通过否定句补充负面提示词信息。 + + + + 正面文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 种音色。指定音色时,sound 参数值必须为 on。 + + + + 分镜方式。当 multi_shot 参数设置为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持此参数。 + + 可选值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +该内容由 Router 在 `GET /v2/models/kling/kling-v2-1-master/openapi.json` 提供的 schema 生成,也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务扣除的单位数量 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成视频的 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v2-1/code.mdx b/zh/development/comfy-router/models/kling/kling-v2-1/code.mdx new file mode 100644 index 000000000..f947afbf1 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v2-1/code.mdx @@ -0,0 +1,386 @@ +--- +title: "将 Kling V2.1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 kling/kling-v2-1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V2.1" +translationSourceHash: 5300b41e +translationFrom: development/comfy-router/models/kling/kling-v2-1/code.mdx +translationBlockHashes: + "_intro": d015787e + "Quick start": e2365bed + "Schema": 175b57fe + "Examples": e835e733 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/kling-v2-1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-1` 的 API 参考,由 Comfy Router 从 Kling 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `kling/kling-v2-1` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v2-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-1", + { + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-1", { + duration: "5", + image: "https://example.invalid/kling/reference.png", + mode: "std", + prompt: "The fox turns its head towards the camera.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": \"5\", \"image\": \"https://example.invalid/kling/reference.png\", \"mode\": \"std\", \"prompt\": \"The fox turns its head towards the camera.\"}" +``` + + +## Schema + +### 输入 + + + 回调通知地址。任务状态发生变化时,服务器将通过该地址进行通知。 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的翻滚数量(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预设的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活度。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 动态画笔配置列表(最多 6 组)。对于 5 秒的视频,轨迹长度不得超过 77 个坐标点。 + + + + 动态画笔的应用区域(由用户使用运动画笔创建的遮罩图像)。宽高比必须与输入图像一致。 + + 格式:`uri` + + + + + + + + 轨迹点的水平坐标。以图像左下角为原点 (0,0)。 + + + + 轨迹点的竖直坐标。以图像左下角为原点 (0,0)。 + + + + 基于元素 ID 配置的参考元素列表。最多支持 3 个参考元素。element_list 与 voice_list 参数互斥。 + + + + 元素 ID + + 格式:`int64` + + + + 自定义任务 ID。在单个用户账户内必须唯一。 + + + + 参考图像 - URL 或 Base64 编码字符串,不能超过 10MB,分辨率不低于 300*300px,宽高比在 1:2.5 ~ 2.5:1 之间。Base64 不应包含 data:image 前缀。 + + + + 参考图像 - 结束帧控制。URL 或 Base64 编码字符串,不能超过 10MB,分辨率不低于 300*300px。Base64 不应包含 data:image 前缀。不能与 dynamic_masks/static_mask 或 camera_control 同时使用。 + + + + 视频生成模式。std:标准模式,更具性价比。pro:专业模式,可生成时长更长、质量更高的视频。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径决定。若提供名称,则必须与请求路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度为 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + +Negative text prompt。推荐直接在正向提示词中通过否定语句补充负面提示词信息。 + + + + Positive text prompt。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 个音色。指定音色时,sound 参数值必须为 on。 + + + + Storyboard method。当 multi_shot 参数设置为 true 时必填。 + + Possible values: `customize`, `intelligence` + + + + Whether to generate sound simultaneously when generating videos。仅 V2.6 及后续版本的模型支持此参数。 + + Possible values: `on`, `off` + + + + Static Brush Application Area(用户使用运动画笔创建的遮罩图像)。宽高比必须与输入图像一致。 + + + + 生成视频时引用的声音列表。最多支持 2 个声音。element_list 与 voice_list 参数互斥。 + + + + 通过声音自定义 API 返回的声音 ID,或系统预设的声音 ID。 + + + + Whether to generate watermarked results simultaneously。目前不支持自定义水印。 + + + + true means generate watermark, false means do not generate。 + + +Generated from the schema Router serves at `GET /v2/models/kling/kling-v2-1/openapi.json`, the same document it validates a call against before the request reaches the provider。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣减单元 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "duration": "5", + "image": "https://example.invalid/kling/reference.png", + "mode": "std", + "prompt": "The fox turns its head towards the camera." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx b/zh/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx new file mode 100644 index 000000000..3ff5e01db --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx @@ -0,0 +1,341 @@ +--- +title: "将 Kling V2.5 Turbo 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 kling/kling-v2-5-turbo:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V2.5 Turbo" +translationSourceHash: 5bf98997 +translationFrom: development/comfy-router/models/kling/kling-v2-5-turbo/code.mdx +translationBlockHashes: + "_intro": 451e11db + "Quick start": a34d4881 + "Schema": 5bae6f71 + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-5-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-5-turbo` 的 API 参考,由 Comfy Router 提供,模型来自 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 执行的同一调用。 + +**模型 ID:** `kling/kling-v2-5-turbo` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v2-5-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-5-turbo", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-5-turbo", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-5-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 输入 + + + 视频宽高比 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的运动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的翻滚量(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的运动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预设的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活性。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长(秒) + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,更具性价比。pro:专业模式,可生成时长更长、质量更高的视频。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时可省略或发送 null;模型由请求路径选择。如提供名称,则必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长(秒)。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 分镜序号 + + + + 该分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。推荐直接在正面提示词中通过否定语句来补充负面提示信息。 + + + + 正面文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序对应的声音。单个任务最多可引用 2 个音色。指定音色时,sound 参数值必须为 on。 + + + + 分镜方式。当 multi_shot 参数设为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持该参数。 + + 可选值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +本页面内容根据 Router 在 `GET /v2/models/kling/kling-v2-5-turbo/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳,单位为毫秒 + + + + 任务的扣减单位 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频的 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳,单位为毫秒 + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v2-6/code.mdx b/zh/development/comfy-router/models/kling/kling-v2-6/code.mdx new file mode 100644 index 000000000..d7a025800 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v2-6/code.mdx @@ -0,0 +1,343 @@ +--- +title: "通过 Comfy Router 使用 Kling V2.6" +description: "通过 Comfy Router 调用 kling/kling-v2-6:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Kling V2.6" +translationSourceHash: cd8992d4 +translationFrom: development/comfy-router/models/kling/kling-v2-6/code.mdx +translationBlockHashes: + "_intro": 5fc8e902 + "Quick start": 5d439f69 + "Schema": c2e4ff7b + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-6.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-6` 的 API 参考文档,由 Comfy Router 提供,来源于 Kling。 + + + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `kling/kling-v2-6` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v2-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-6", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-6", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 输入 + + + 视频宽高比例 + + 可能的值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在垂直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的滚动幅度(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预定义的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可能的值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活度。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可能的值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,性价比高。pro:专业模式,生成的视频时长更长,输出质量更高。 + + 可能的值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时请省略该参数或传入 null;模型由请求路径决定。若提供了名称,则必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 分镜序号 + + + + 该分镜的提示词。最大长度为 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接在正向提示词中通过否定句补充负面提示信息。 + + + + 正向文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序匹配的声音。一个任务最多可引用 2 个音色。指定音色时,sound 参数值必须为 on。 + + + + 分镜方式。当 multi_shot 参数设为 true 时必填。 + + 可能的值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持该参数。 + + 可能的值:`on`、`off` + + + + 是否同时生成带水印的结果。当前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +根据 Router 在 `GET /v2/models/kling/kling-v2-6/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前 Router 用于校验调用的文档相同。### 输出 + + + 错误代码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣减单位 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成的视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v2-master/code.mdx b/zh/development/comfy-router/models/kling/kling-v2-master/code.mdx new file mode 100644 index 000000000..8d18b2f12 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v2-master/code.mdx @@ -0,0 +1,341 @@ +--- +title: "使用 Kling V2 Master 与 Comfy Router" +description: "通过 Comfy Router 调用 kling/kling-v2-master:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Kling V2 Master" +translationSourceHash: d0755597 +translationFrom: development/comfy-router/models/kling/kling-v2-master/code.mdx +translationBlockHashes: + "_intro": c470eb90 + "Quick start": b5d778cc + "Schema": 769d8e31 + "Examples": 14429ff8 +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v2-master.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v2-master` 的 API 参考,由 Comfy Router 提供,来自 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `kling/kling-v2-master` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v2-master` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v2-master", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v2-master", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v2-master \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## 模式 + +### 输入 + + + 视频比例 + + 可能的值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的运动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的滚动量(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的运动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预定义的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可能的值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活性。值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长(秒) + + 可能的值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,具有成本效益。pro:专业模式,生成时长更长但质量更高的输出。 + + 可能的值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时省略或发送 null;模型由请求路径选择。提供的名称必须与该路径匹配。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 此分镜的时长(秒)。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 分镜序号 + + + + 此分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多镜头视频。当为 true 时,prompt 参数无效。当为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接在正向提示词中通过否定句补充负面提示信息。 + + + + 正向文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序匹配的声音。一个任务最多可引用 2 个音调。指定音调时,sound 参数值必须为 on。 + + + + 分镜方法。当 multi_shot 参数设置为 true 时必填。 + + 可能的值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及后续版本的模型支持此参数。 + + 可能的值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +由 Router 在 `GET /v2/models/kling/kling-v2-master/openapi.json` 提供的模式生成,也是在请求到达提供商之前用于验证调用的同一份文档。### 输出 + + + 错误代码 + + + + + + + + 任务创建时间,Unix 时间戳,单位为毫秒 + + + + 任务扣除的单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 已生成视频带水印的 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳,单位为毫秒 + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v3-omni/code.mdx b/zh/development/comfy-router/models/kling/kling-v3-omni/code.mdx new file mode 100644 index 000000000..2592cdd39 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v3-omni/code.mdx @@ -0,0 +1,323 @@ +--- +title: "通过 Comfy Router 使用 Kling V3 Omni" +description: "通过 Comfy Router 调用 kling/kling-v3-omni:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling V3 Omni" +translationSourceHash: 7d45d7ed +translationFrom: development/comfy-router/models/kling/kling-v3-omni/code.mdx +translationBlockHashes: + "_intro": 5d80a95b + "Quick start": eb42d71e + "Schema": f9b37353 + "Examples": d0ddb30c +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-v3-omni.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v3-omni` 的 API 参考,由 Comfy Router 提供,模型来自 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `kling/kling-v3-omni` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v3-omni` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3-omni", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3-omni", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3-omni \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## Schema + +### 输入 + + + 生成视频画面的宽高比(宽度:高度)。当未使用首帧参考或视频编辑功能时,此参数必填。 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 本任务结果的回调通知地址。若配置此项,任务状态发生变化时服务器将主动通知。 + + 格式:`uri` + + + + 视频时长,单位为秒。使用视频编辑功能时(refer_type: base),输出时长与输入视频相同,此参数无效。 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 基于元素 ID 配置的参考元素列表。 + + + + 元素 ID + + 格式:`int64` + + + + 自定义任务 ID。在单个用户账号内必须唯一。 + + + + 参考图像列表。可包含元素、场景、风格等参考图像,也可用作首帧或结束帧来生成视频。 + + + + 图像 Base64 编码或图片网址(确保可访问)。支持的格式包括 .jpg/.jpeg/.png。文件大小不能超过 10MB。宽度和高度尺寸不得小于 300px,宽高比在 1:2.5 ~ 2.5:1 之间。 + + + + 该图像是首帧还是结束帧。first_frame 为首帧,end_frame 为结束帧。目前不支持仅使用结束帧。 + + 可选值:`first_frame`、`end_frame` + + + + 视频生成模式。std:标准模式,生成 720P 视频,性价比高。pro:专业模式,生成 1080P 视频,视频输出质量更高。 + + 可选值:`pro`、`std` + + + + 模型名。使用 Comfy Router 时可省略或发送 null,模型由请求路径选择。若提供名称,则必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 文本提示词,可包含正面和负面描述。不得超过 2,500 个字符。可通过 \<\<\<>>> 格式指定元素、图像或视频,例如 \<\>、\<\\\>>、\<\\\>>。 + + + + 分镜方式。当 multi_shot 参数设置为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。 + + 可选值:`on`、`off` + + + + 参考视频列表。可用作功能参考视频,也可用作待编辑的视频,默认为待编辑的视频。 + + + + 是否保留视频原始声音。yes 表示保留,no 表示不保留。 + + 可选值:`yes`、`no` + + + + 参考视频类型。feature 为功能参考视频,base 为待编辑的视频。 + + 可选值:`feature`、`base` + + + + 上传视频的网址。仅支持 .mp4/.mov 格式。时长在 3-10 秒之间。分辨率必须在 720px 到 2160px 之间。支持 24-60 fps 的帧率。只能上传 1 个视频,且大小不超过 200MB。 + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +由 Router 在 `GET /v2/models/kling/kling-v3-omni/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣费单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成的视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 已生成的带水印视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-v3/code.mdx b/zh/development/comfy-router/models/kling/kling-v3/code.mdx new file mode 100644 index 000000000..9ee17b163 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-v3/code.mdx @@ -0,0 +1,341 @@ +--- +title: "通过 Comfy Router 使用 Kling V3" +description: "通过 Comfy Router 调用 kling/kling-v3:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Kling V3" +translationSourceHash: 3ec18bf8 +translationFrom: development/comfy-router/models/kling/kling-v3/code.mdx +translationBlockHashes: + "_intro": 17dd9361 + "Quick start": 61c5bb98 + "Schema": 771b3376 + "Examples": 14429ff8 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/kling-v3.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-v3` 的 API 参考文档,由 Comfy Router 从 Kling 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `kling/kling-v3` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-v3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-v3", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-v3", { + aspect_ratio: "16:9", + duration: "5", + mode: "std", + prompt: "A red fox trotting through falling snow, cinematic lighting.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-v3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"std\", \"prompt\": \"A red fox trotting through falling snow, cinematic lighting.\"}" +``` + + +## Schema + +### 输入 + + + 视频宽高比 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 回调通知地址 + + 格式:`uri` + + + + + + + + + + + + 控制相机沿水平轴(x 轴)的移动。负值表示向左,正值表示向右。 + + 范围:`-10` 到 `10` + + + + 控制相机在竖直平面内的旋转(x 轴)。负值表示向下旋转,正值表示向上旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机的横滚量(z 轴)。负值表示逆时针,正值表示顺时针。 + + 范围:`-10` 到 `10` + + + + 控制相机在水平平面内的旋转(y 轴)。负值表示向左旋转,正值表示向右旋转。 + + 范围:`-10` 到 `10` + + + + 控制相机沿竖直轴(y 轴)的移动。负值表示向下,正值表示向上。 + + 范围:`-10` 到 `10` + + + + 控制相机焦距的变化。负值表示视野变窄,正值表示视野变宽。 + + 范围:`-10` 到 `10` + + + + 预设的相机运动类型。simple:可自定义的相机运动。down_back:相机下降并向后移动。forward_up:相机向前移动并向上倾斜。right_turn_forward:向右旋转并向前移动。left_turn_forward:向左旋转并向前移动。 + + 可选值:`simple`、`down_back`、`forward_up`、`right_turn_forward`、`left_turn_forward` + + + + 视频生成的灵活度。值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + 视频时长,单位为秒 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 自定义任务 ID + + + + 视频生成模式。std:标准模式,性价比高。pro:专业模式,可生成时长更长、质量更高的视频。 + + 可选值:`std`、`pro` + + + + 模型名。使用 Comfy Router 时可省略或传 null,模型由请求路径决定。如果提供名称,必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 该分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 该分镜的提示词。最大长度 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 负面文本提示词。建议直接在正向提示词中通过否定句来补充负面提示信息。 + + + + 正向文本提示词。使用 \<\<\>> 指定与 voice_list 参数顺序相匹配的声音。一个任务最多可引用 2 种音色。指定音色时,sound 参数的值必须为 on。 + + + + 分镜方式。当 multi_shot 参数设置为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。仅 V2.6 及之后版本的模型支持该参数。 + + 可选值:`on`、`off` + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +由 Router 在 `GET /v2/models/kling/kling-v3/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣减单位 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "std", + "prompt": "A red fox trotting through falling snow, cinematic lighting." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/kling-video-o1/code.mdx b/zh/development/comfy-router/models/kling/kling-video-o1/code.mdx new file mode 100644 index 000000000..244074df4 --- /dev/null +++ b/zh/development/comfy-router/models/kling/kling-video-o1/code.mdx @@ -0,0 +1,323 @@ +--- +title: "将 Kling Video O1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 kling/kling-video-o1:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Kling Video O1" +translationSourceHash: db7770c2 +translationFrom: development/comfy-router/models/kling/kling-video-o1/code.mdx +translationBlockHashes: + "_intro": 01639b96 + "Quick start": a416cd0c + "Schema": 6f4cf55b + "Examples": d0ddb30c +--- +{/* GENERATED FILE. Generated from router-schemas/kling/kling-video-o1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/kling-video-o1` 的 API 参考,由 Comfy Router 提供,来自 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `kling/kling-video-o1` + +**端点:** `POST https://api.comfy.org/v2/models/kling/kling-video-o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/kling-video-o1", + { + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/kling-video-o1", { + aspect_ratio: "16:9", + duration: "5", + mode: "pro", + prompt: "A paper boat drifting down a rain-soaked street at dusk.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/kling-video-o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5\", \"mode\": \"pro\", \"prompt\": \"A paper boat drifting down a rain-soaked street at dusk.\"}" +``` + + +## Schema + +### 输入 + + + 生成视频画面的宽高比例(宽:高)。未使用首帧参考或视频编辑功能时必填。 + + 可选值:`16:9`、`9:16`、`1:1` + + + + 本任务结果的回调通知地址。若已配置,任务状态发生变化时服务器会主动通知。 + + 格式:`uri` + + + + 视频时长,单位为秒。使用视频编辑功能(refer_type: base)时,输出时长与输入视频相同,此参数无效。 + + 可选值:`3`、`4`、`5`、`6`、`7`、`8`、`9`、`10`、`11`、`12`、`13`、`14`、`15` + + + + 基于元素 ID 配置的参考元素列表。 + + + + 元素 ID + + 格式:`int64` + + + + 自定义任务 ID。在单个用户账号内必须唯一。 + + + + 参考图像列表。可包含元素、场景、风格等参考图像,也可用作首帧或结束帧来生成视频。 + + + + 图像的 Base64 编码或图片网址(请确保可访问)。支持的格式包括 .jpg/.jpeg/.png。文件大小不能超过 10MB。宽度和高度尺寸不得小于 300px,宽高比介于 1:2.5 ~ 2.5:1 之间。 + + + + 图像是首帧还是结束帧。first_frame 为首帧,end_frame 为结束帧。目前不支持仅使用结束帧。 + + 可选值:`first_frame`、`end_frame` + + + + 视频生成模式。std:标准模式,生成 720P 视频,性价比高。pro:专业模式,生成 1080P 视频,视频输出质量更高。 + + 可选值:`pro`、`std` + + + + 模型名。使用 Comfy Router 时可省略或传 null;模型由请求路径选择。若提供名称,则必须与该路径一致。 + + + + 每个分镜的信息,例如提示词和时长。最多支持 6 个分镜,最少 1 个。当 multi_shot 为 true 且 shot_type 为 customize 时必填。 + + + + 本分镜的时长,单位为秒。不得超过任务总时长,且不得小于 1。所有分镜时长之和等于任务总时长。 + + + + 镜头序号 + + + + 本分镜的提示词。最大长度为 512 个字符。 + + + + 是否生成多镜头视频。为 true 时,prompt 参数无效。为 false 时,shot_type 和 multi_prompt 参数无效。 + + + + 文本提示词,可包含正面和负面描述。不得超过 2,500 个字符。可以按 \<<\<>>> 的格式指定元素、图像或视频,例如 \<\>、\<\<\>>、\<\<\>>。 + + + + 分镜方式。multi_shot 参数设为 true 时必填。 + + 可选值:`customize`、`intelligence` + + + + 生成视频时是否同时生成声音。 + + 可选值:`on`、`off` + + + + 参考视频列表。可用作功能参考视频或待编辑视频,默认为待编辑视频。 + + + + 是否保留视频的原始声音。yes 表示保留,no 表示不保留。 + + 可选值:`yes`、`no` + + + + 参考视频类型。feature 为特征参考视频,base 为待编辑视频。 + + 可选值:`feature`、`base` + + + + 上传视频的 URL。仅支持 .mp4/.mov 格式。时长在 3-10 秒之间。分辨率必须在 720px 至 2160px 之间。支持 24-60 fps 的帧率。仅可上传 1 个视频,大小不超过 200MB。 + + + + 是否同时生成带水印的结果。目前不支持自定义水印。 + + + + true 表示生成水印,false 表示不生成。 + + +根据 Router 在 `GET /v2/models/kling/kling-video-o1/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳,单位为毫秒 + + + + 任务扣除的单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频的 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频的 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳,单位为毫秒 + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5", + "mode": "pro", + "prompt": "A paper boat drifting down a rain-soaked street at dusk." +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-task-1a2b3c4d5e6f", + "task_result": { + "videos": [ + { + "duration": "5", + "id": "kling-video-6f5e4d3c2b1a", + "url": "https://example.invalid/kling/kling-v1/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761840000 + }, + "message": "SUCCEED", + "request_id": "9f2c1a04-7b6e-4d38-8a51-3c0e7d9b2f46" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx b/zh/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx new file mode 100644 index 000000000..2604ddbc7 --- /dev/null +++ b/zh/development/comfy-router/models/kling/videos-avatar-image2video/code.mdx @@ -0,0 +1,245 @@ +--- +title: "配合 Comfy Router 使用 Videos Avatar Image 2video" +description: "通过 Comfy Router 调用 kling/videos-avatar-image2video:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Videos Avatar Image 2video" +translationSourceHash: 2d32d740 +translationFrom: development/comfy-router/models/kling/videos-avatar-image2video/code.mdx +translationBlockHashes: + "_intro": 6e4b5479 + "Quick start": f4efb7f6 + "Schema": eeb06fe1 + "Examples": ce6803dd +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-avatar-image2video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 Kling 提供的 `kling/videos-avatar-image2video` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**Model ID:** `kling/videos-avatar-image2video` + +**Endpoint:** `POST https://api.comfy.org/v2/models/kling/videos-avatar-image2video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-avatar-image2video", + { + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-avatar-image2video", { + image: "https://example.invalid/kling/avatar.png", + mode: "std", + prompt: "The presenter smiles and gestures towards the camera.", + sound_file: "https://example.invalid/kling/voice.mp3", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-avatar-image2video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://example.invalid/kling/avatar.png\", \"mode\": \"std\", \"prompt\": \"The presenter smiles and gestures towards the camera.\", \"sound_file\": \"https://example.invalid/kling/voice.mp3\"}" +``` + + +## Schema + +### 输入 + + + 通过 TTS API 生成的音频 ID。仅支持最近 30 天内生成的 2-300 秒音频。audio_id 与 sound_file 必须提供其中之一(互斥)。 + + + + 本任务结果的回调通知地址。 + + 格式:`uri` + + + + 自定义任务 ID。在单个用户账户内必须唯一。 + + + + 数字人参考图像。支持 Base64 编码或图片网址。支持格式:.jpg/.jpeg/.png。最大值 10MB,宽度/高度最小值 300px,宽高比介于 1:2.5 与 2.5:1 之间。 + + + + 视频生成模式。std:标准模式(性价比高),pro:专业模式(时长更长、质量更高)。 + + 可选值:`std`、`pro` + + + + 正向文本提示词。可定义数字人操作、情绪和相机运动。 + + + + 声音文件。支持 Base64 编码的音频或可访问的音频 URL。接受的格式:.mp3/.wav/.m4a/.aac(最大值 5MB),2-300 秒。audio_id 与 sound_file 必须提供其中之一(互斥)。 + + + + + + + + 是否同时生成带水印的结果。 + + +根据 Router 在 `GET /v2/models/kling/videos-avatar-image2video/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 毫秒时间戳 + + + + 任务的扣费单元 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长(秒) + + + + 已生成视频 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 带水印的已生成视频的 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 毫秒时间戳 + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "image": "https://example.invalid/kling/avatar.png", + "mode": "std", + "prompt": "The presenter smiles and gestures towards the camera.", + "sound_file": "https://example.invalid/kling/voice.mp3" +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-avatar-task-8b7a6c5d4e3f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-1c2d3e4f5a6b", + "url": "https://example.invalid/kling/videos-avatar-image2video/generated.mp4" + } + ] + }, + "task_status": "succeed", + "task_status_msg": "", + "updated_at": 1798761900000 + }, + "message": "SUCCEED", + "request_id": "b41d7c58-9e26-4f03-a7d1-5c8e0b3f2a69" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/videos-lip-sync/code.mdx b/zh/development/comfy-router/models/kling/videos-lip-sync/code.mdx new file mode 100644 index 000000000..8a4fb343a --- /dev/null +++ b/zh/development/comfy-router/models/kling/videos-lip-sync/code.mdx @@ -0,0 +1,274 @@ +--- +title: "通过 Comfy Router 使用视频唇形同步" +description: "通过 Comfy Router 调用 kling/videos-lip-sync:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "视频唇形同步" +translationSourceHash: 18911f14 +translationFrom: development/comfy-router/models/kling/videos-lip-sync/code.mdx +translationBlockHashes: + "_intro": 2cd8e6e0 + "Quick start": eddd7537 + "Schema": 2993a979 + "Examples": 380debef +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/kling/videos-lip-sync.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/videos-lip-sync` 的 API 参考,由 Comfy Router 从 Kling 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一个调用。 + +**模型 ID:** `kling/videos-lip-sync` + +**端点:** `POST https://api.comfy.org/v2/models/kling/videos-lip-sync` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-lip-sync", + { + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-lip-sync", { + input: { + mode: "text2video", + text: "Welcome to Comfy Cloud.", + video_id: "kling-video-6f5e4d3c2b1a", + voice_id: "genshin_vindi2", + voice_language: "en", + voice_speed: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-lip-sync \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"mode\":\"text2video\",\"text\":\"Welcome to Comfy Cloud.\",\"video_id\":\"kling-video-6f5e4d3c2b1a\",\"voice_id\":\"genshin_vindi2\",\"voice_language\":\"en\",\"voice_speed\":1}}" +``` + + +## Schema + +### 输入 + + + 回调通知地址。任务状态发生变化时,服务器会发出通知。 + + 格式:`uri` + + + + + + + + 音频文件的本地路径。支持的格式:.mp3/.wav/.m4a/.aac,最大文件大小为 5MB。Base64 编码。 + + + + 用于对口型的音频文件传输方法。当 mode 为 audio2video 时必填。 + + 可选值:`file`、`url` + + + + 音频文件下载 URL。支持的格式:.mp3/.wav/.m4a/.aac,最大文件大小为 5MB。 + + + + 视频生成模式。text2video:文生视频生成模式;audio2video:音频生视频生成模式 + + 可选值:`text2video`、`audio2video` + + + + 用于对口型视频生成的文本内容。当 mode 为 text2video 时必填。最大长度为 120 个字符。 + + + + 由 Kling AI 已生成视频的 ID。仅支持最近 30 天内已生成的 5 秒和 10 秒视频。 + + + + 获取上传视频的链接。视频文件支持 .mp4/.mov,文件大小不超过 100MB,视频时长在 2-10 秒之间。 + + + + 音色 ID。当 mode 为 text2video 时必填。系统提供多种音色可供选择。 + + + + 音色语言,与音色 ID 相对应。 + + 可选值:`zh`、`en` + + + + 语速。有效范围:0.8~2.0,精确到小数点后一位。 + + 范围:`0.8` 到 `2` + + +该文档根据 Router 在 `GET /v2/models/kling/videos-lip-sync/openapi.json` 提供的 schema 生成,也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣费单位 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成视频的 ID + + + + 已生成视频的 URL + + 格式:`uri` + + + + 已生成视频的带水印 URL,防盗链格式 + + 格式:`uri` + + + + 任务状态 + + 可选值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "input": { + "mode": "text2video", + "text": "Welcome to Comfy Cloud.", + "video_id": "kling-video-6f5e4d3c2b1a", + "voice_id": "genshin_vindi2", + "voice_language": "en", + "voice_speed": 1 + } +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-lip-sync-task-4f3e2d1c0b9a", + "task_result": { + "videos": [ + { + "duration": "8", + "id": "kling-video-9a8b7c6d5e4f", + "url": "https://example.invalid/kling/videos-lip-sync/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798761780000 + }, + "message": "SUCCEED", + "request_id": "5e0a9b17-6d3c-42f8-91b4-7a2c8d6e0f35" +} +``` + + + diff --git a/zh/development/comfy-router/models/kling/videos-video-extend/code.mdx b/zh/development/comfy-router/models/kling/videos-video-extend/code.mdx new file mode 100644 index 000000000..f7bd897d4 --- /dev/null +++ b/zh/development/comfy-router/models/kling/videos-video-extend/code.mdx @@ -0,0 +1,227 @@ +--- +title: "使用 Videos Video Extend 搭配 Comfy Router" +description: "通过 Comfy Router 调用 kling/videos-video-extend:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "Videos Video Extend" +translationSourceHash: 5f7f926c +translationFrom: development/comfy-router/models/kling/videos-video-extend/code.mdx +translationBlockHashes: + "_intro": fbba135e + "Quick start": 61b7b535 + "Schema": c05db7c2 + "Examples": d7326d1b +--- +{/* GENERATED FILE. Generated from router-schemas/kling/videos-video-extend.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`kling/videos-video-extend` 的 API 参考,由 Comfy Router 提供,来源于 Kling。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `kling/videos-video-extend` + +**端点:** `POST https://api.comfy.org/v2/models/kling/videos-video-extend` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "kling/videos-video-extend", + { + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("kling/videos-video-extend", { + cfg_scale: 0.5, + prompt: "The camera keeps drifting forward down the alley.", + video_id: "kling-video-6f5e4d3c2b1a", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/kling/videos-video-extend \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"cfg_scale\": 0.5, \"prompt\": \"The camera keeps drifting forward down the alley.\", \"video_id\": \"kling-video-6f5e4d3c2b1a\"}" +``` + + +## Schema + +### 输入 + + + 回调通知地址。任务状态发生变化时,服务器将发送通知。 + + Format: `uri` + + + + 视频生成的灵活度。该值越高,模型的灵活度越低,与用户提示词的相关性越强。 + + Range: `0` to `1` + + Format: `float` + + + + 负面文本提示词,用于指定扩展视频中需要避免的元素 + + + + 正向文本提示词,用于引导视频扩展 + + + + 要扩展的视频 ID。支持文生视频、图生视频以及此前的视频扩展操作生成的视频。扩展后的总时长不能超过 3 分钟。 + + +根据 Router 在 `GET /v2/models/kling/videos-video-extend/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 错误码 + + + + + + + + 任务创建时间,Unix 时间戳(毫秒) + + + + 任务的扣费单位数 + + + + 任务 ID + + + + + + + + + + + + + + + + + + + + 视频总时长,单位为秒 + + + + 已生成的视频 ID + + + + 已生成视频的 URL + + Format: `uri` + + + + 已生成视频的带水印 URL,防盗链格式 + + Format: `uri` + + + + 任务状态 + + 可能的值:`submitted`、`processing`、`succeed`、`failed` + + + + 任务状态信息,任务失败时显示失败原因 + + + + 任务更新时间,Unix 时间戳(毫秒) + + + + + + + + + + + + 报错信息 + + + + 请求 ID + + +## 示例 + +### 输入 + +```json +{ + "cfg_scale": 0.5, + "prompt": "The camera keeps drifting forward down the alley.", + "video_id": "kling-video-6f5e4d3c2b1a" +} +``` + +### 输出 + +```json +{ + "code": 0, + "data": { + "created_at": 1798761600000, + "task_id": "kling-video-extend-task-0a1b2c3d4e5f", + "task_result": { + "videos": [ + { + "duration": "10", + "id": "kling-video-5f4e3d2c1b0a", + "url": "https://example.invalid/kling/videos-video-extend/generated.mp4" + } + ] + }, + "task_status": "succeed", + "updated_at": 1798762020000 + }, + "message": "SUCCEED", + "request_id": "c7b6a504-3f2e-41d0-8a9c-6b5d4e3f2a10" +} +``` + + + diff --git a/zh/development/comfy-router/models/krea/krea-2-large/code.mdx b/zh/development/comfy-router/models/krea/krea-2-large/code.mdx new file mode 100644 index 000000000..6437d34cf --- /dev/null +++ b/zh/development/comfy-router/models/krea/krea-2-large/code.mdx @@ -0,0 +1,203 @@ +--- +title: "使用 Comfy Router 调用 Krea 2 Large" +description: "通过 Comfy Router 调用 krea/krea-2-large:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Krea 2 Large" +translationSourceHash: b67b29a6 +translationFrom: development/comfy-router/models/krea/krea-2-large/code.mdx +translationBlockHashes: + "_intro": 7c6287ca + "Quick start": f1ed8f98 + "Schema": 2003ef08 + "Examples": 91f72543 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/krea/krea-2-large.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-large` 的 API 参考,由 Comfy Router 提供,来源于 Krea。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 发起的相同调用。 + +**模型 ID:** `krea/krea-2-large` + +**端点:** `POST https://api.comfy.org/v2/models/krea/krea-2-large` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-large", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-large", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-large \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## Schema + +### 输入 + + + 宽高比。可选值:1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 可选值:`1:1`、`4:3`、`3:2`、`16:9`、`2.35:1`、`4:5`、`2:3`、`9:16` + + + + 提示词解读强度:raw=0、low=10、medium=50、high=100。 + + 可选值:`raw`、`low`、`medium`、`high` + + + + 用于生成的风格参考 + + + + 范围:`-2` 到 `2` + + 格式:`double` + + + + 格式:`uri` + + + + 用于生成的 Moodboard。目前仅限一个 Moodboard。 + + + + 格式:`uuid` + + + + 范围:`-0.5` 到 `1.5` + + 格式:`double` + + + + + + + + 分辨率缩放。可选值:1K。 + + 可选值:`1K` + + + + + + + + 用于生成的风格(通常是 LoRA) + + + + + + + + 范围:`-2` 到 `2` + + 格式:`double` + + +本文档由 Router 在 `GET /v2/models/krea/krea-2-large/openapi.json` 上提供的 schema 生成,也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 格式:`date-time` + + + + 格式:`date-time` + + + + 格式:`uuid` + + + + 已完成的生成结果。与 `KreaJob` 上不同,此处不可为空:一个 `result` 不携带 `urls` 的终端任务会以 Comfy Router 错误的形式返回,因此 `200` 始终会携带它。 + + + + 由 loraTraining 任务设置,而不是由某次生成设置;这些模型的 `200` 响应携带 `urls`。 + + + + 已生成的图像,以可下载链接的形式提供。至少一个,因为 `urls` 为空的 `completed` 任务属于 `success_without_output`,永远不会出现在本文档中。 + + + + 在本文档中始终为 `completed`:它是 `classifyKrea` 唯一判定为 `succeeded` 的状态,并且 Krea 的词汇匹配不进行大小写折叠。 + + 可选值:`completed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 输出 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx b/zh/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx new file mode 100644 index 000000000..a41c26afc --- /dev/null +++ b/zh/development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx @@ -0,0 +1,204 @@ +--- +title: "将 Krea 2 Medium Turbo 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 krea/krea-2-medium-turbo:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Krea 2 Medium Turbo" +translationSourceHash: a3351940 +translationFrom: development/comfy-router/models/krea/krea-2-medium-turbo/code.mdx +translationBlockHashes: + "_intro": 711a935d + "Quick start": a1795376 + "Schema": 00afbe49 + "Examples": 91f72543 +--- +{/* GENERATED FILE. Generated from router-schemas/krea/krea-2-medium-turbo.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-medium-turbo` 的 API 参考,该模型由 Comfy Router 提供,来源为 Krea。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一个调用。 + +**模型 ID:** `krea/krea-2-medium-turbo` + +**端点:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium-turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium-turbo", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium-turbo", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium-turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## Schema + +### Input + + + 宽高比。可选值之一:1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + Possible values: `1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 提示词解读强度:raw=0、low=10、medium=50、high=100。 + + Possible values: `raw`, `low`, `medium`, `high` + + + + 用于生成的风格参考 + + + + 范围:`-2` 到 `2` + + 格式:`double` + + + + 格式:`uri` + + + + 用于生成的情绪板(moodboard)。目前限制为一个情绪板。 + + + + 格式:`uuid` + + + + 范围:`-0.5` 到 `1.5` + + 格式:`double` + + + + + + + + 分辨率缩放。可选值之一:1K。 + + Possible values: `1K` + + + + + + + + 用于生成的风格(通常是 LoRA) + + + + + + + + 范围:`-2` 到 `2` + + 格式:`double` + + +由 Router 在 `GET /v2/models/krea/krea-2-medium-turbo/openapi.json` 提供的 schema 生成,它与请求到达提供商之前用于校验调用的文档是同一份。 + +### Output + + + 格式:`date-time` + + + + 格式:`date-time` + + + + 格式:`uuid` + + + + 已完成的生成。与 `KreaJob` 上不同,此处不可为空:`result` 中不包含 `urls` 的终端任务会以 Comfy Router 错误作为响应,因此 `200` 响应中总会带有该字段。 + + + + 由 loraTraining 任务设置,而非由生成设置;这些模型的 `200` 响应带有 `urls`。 + + + + 已生成的图像,以可下载链接的形式提供。至少有一个,因为 `urls` 为空的 `completed` 任务属于 `success_without_output`,永远不会出现在此文档中。 + + + + 在此文档中始终为 `completed`:它是 `classifyKrea` 判定为 `succeeded` 的唯一状态,并且匹配 Krea 的词汇时不进行大小写折叠。 + + Possible values: `completed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 输出 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/krea/krea-2-medium/code.mdx b/zh/development/comfy-router/models/krea/krea-2-medium/code.mdx new file mode 100644 index 000000000..fc0f6306a --- /dev/null +++ b/zh/development/comfy-router/models/krea/krea-2-medium/code.mdx @@ -0,0 +1,204 @@ +--- +title: "配合 Comfy Router 使用 Krea 2 Medium" +description: "通过 Comfy Router 调用 krea/krea-2-medium:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Krea 2 Medium" +translationSourceHash: 90afa1e6 +translationFrom: development/comfy-router/models/krea/krea-2-medium/code.mdx +translationBlockHashes: + "_intro": 89eb9065 + "Quick start": b8fd9100 + "Schema": 5ab8e665 + "Examples": 91f72543 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/krea/krea-2-medium.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`krea/krea-2-medium` 的 API 参考,由 Comfy Router 提供,模型来自 Krea。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `krea/krea-2-medium` + +**端点:** `POST https://api.comfy.org/v2/models/krea/krea-2-medium` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2-medium", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2-medium", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2-medium \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## 架构 + +### 输入 + + + 宽高比。可选值之一:1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 可能的值:`1:1`、`4:3`、`3:2`、`16:9`、`2.35:1`、`4:5`、`2:3`、`9:16` + + + + 提示词解释强度:raw=0、low=10、medium=50、high=100。 + + 可能的值:`raw`、`low`、`medium`、`high` + + + + 用于生成的风格参考 + + + + 范围:`-2` 到 `2` + + 格式:`double` + + + + 格式:`uri` + + + + 用于生成的情绪板。目前限制为一个情绪板。 + + + + 格式:`uuid` + + + + 范围:`-0.5` 到 `1.5` + + 格式:`double` + + + + + + + + 分辨率缩放。可选值之一:1K。 + + 可能的值:`1K` + + + + + + + + 用于生成的风格(通常是 LoRA) + + + + + + + + 范围:`-2` 到 `2` + + 格式:`double` + + +该架构由 Router 在 `GET /v2/models/krea/krea-2-medium/openapi.json` 提供,并且正是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 格式:`date-time` + + + + 格式:`date-time` + + + + 格式:`uuid` + + + + 已完成的生成结果。与 `KreaJob` 上不同,这里不可为 null:一个 `result` 中不包含 `urls` 的终端任务会作为 Comfy Router 错误返回,因此 `200` 响应中始终包含它。 + + + + 由 loraTraining 任务设置,而不是由生成设置;这些模型的 `200` 响应包含 `urls`。 + + + + 已生成的图像,以可下载链接形式提供。至少一个,因为 `urls` 为空的 `completed` 任务属于 `success_without_output`,永远不会到达本文档。 + + + + 在本文档中始终为 `completed`:它是 `classifyKrea` 判定为 `succeeded` 的唯一状态,并且匹配 Krea 的词汇时不区分大小写。 + + 可能的值:`completed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 输出 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/krea/krea-2/code.mdx b/zh/development/comfy-router/models/krea/krea-2/code.mdx new file mode 100644 index 000000000..f0886d3c9 --- /dev/null +++ b/zh/development/comfy-router/models/krea/krea-2/code.mdx @@ -0,0 +1,203 @@ +--- +title: "在 Comfy Router 中使用 Krea 2" +description: "通过 Comfy Router 调用 krea/krea-2:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Krea 2" +translationSourceHash: a2cea386 +translationFrom: development/comfy-router/models/krea/krea-2/code.mdx +translationBlockHashes: + "_intro": 6d04eb77 + "Quick start": 9c4e9060 + "Schema": d1c938ef + "Examples": 91f72543 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/krea/krea-2.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`krea/krea-2` 的 API 参考,由 Comfy Router 从 Krea 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `krea/krea-2` + +**端点:** `POST https://api.comfy.org/v2/models/krea/krea-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "krea/krea-2", + { + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("krea/krea-2", { + aspect_ratio: "1:1", + prompt: "a red circle", + resolution: "1K", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/krea/krea-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle\", \"resolution\": \"1K\"}" +``` + + +## Schema + +### 输入 + + + 宽高比。可选值:1:1、4:3、3:2、16:9、2.35:1、4:5、2:3、9:16。 + + 可选值:`1:1`, `4:3`, `3:2`, `16:9`, `2.35:1`, `4:5`, `2:3`, `9:16` + + + + 提示词解读强度:raw=0、low=10、medium=50、high=100。 + + 可选值:`raw`, `low`, `medium`, `high` + + + + 用于生成的风格参考 + + + + 范围:`-2` 到 `2` + + 格式:`double` + + + + 格式:`uri` + + + + 用于生成的 Moodboard。目前仅限一个 Moodboard。 + + + + 格式:`uuid` + + + + 范围:`-0.5` 到 `1.5` + + 格式:`double` + + + + + + + + 分辨率缩放。可选值:1K。 + + 可选值:`1K` + + + + + + + + 用于生成的风格(通常是 LoRA) + + + + + + + + 范围:`-2` 到 `2` + + 格式:`double` + + +本文档由 Router 在 `GET /v2/models/krea/krea-2/openapi.json` 提供的 Schema 生成,Router 在请求到达提供商之前校验调用时所用的正是同一份文档。 + +### 输出 + + + 格式:`date-time` + + + + 格式:`date-time` + + + + 格式:`uuid` + + + + 已完成的生成结果。与 `KreaJob` 上不同,此处不可为空:一个终端任务的 `result` 若不携带 `urls`,会以 Comfy Router 错误的形式返回,因此 `200` 响应必定携带该字段。 + + + + 由 loraTraining 任务设置,而不是由生成设置;这些模型的 `200` 响应携带 `urls`。 + + + + 已生成的图像,以可下载链接的形式提供。至少一个,因为 `urls` 为空的 `completed` 任务是 `success_without_output`,永远不会出现在此文档中。 + + + + 在此文档中始终为 `completed`:它是 `classifyKrea` 判定为 `succeeded` 的唯一状态,且 Krea 的词汇匹配不进行大小写折叠。 + + 可选值:`completed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle", + "resolution": "1K" +} +``` + +### 输出 + +```json +{ + "completed_at": "2027-01-01T00:00:37Z", + "created_at": "2027-01-01T00:00:00Z", + "job_id": "7f1c2e84-5b90-4a37-8d61-2c0f9ab4e153", + "result": { + "urls": [ + "https://example.invalid/krea/krea-2/generated.png" + ] + }, + "status": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx b/zh/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx new file mode 100644 index 000000000..7fe3cd8f8 --- /dev/null +++ b/zh/development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx @@ -0,0 +1,176 @@ +--- +title: "通过 Comfy Router 使用 LTX 2.5 Fast" +description: "通过 Comfy Router 调用 ltx/ltx-2-5-fast:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "LTX 2.5 Fast" +translationSourceHash: c2334418 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-fast/code.mdx +translationBlockHashes: + "_intro": d314cc77 + "Quick start": 45d12a7b + "Schema": 27b47ed6 + "Examples": 696cabfd +--- +{/* GENERATED FILE. Generated from router-schemas/ltx/ltx-2-5-fast.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`ltx/ltx-2-5-fast` 的 API 参考,由 Comfy Router 从 LTX 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `ltx/ltx-2-5-fast` + +**端点:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-fast` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-fast", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-fast", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-fast \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## Schema + +### Input + + + 视频时长,单位为秒(最大值取决于分辨率和帧率) + + 可能的值:`2`、`3`、`4`、`5`、`6`、`8`、`10`、`12`、`14`、`16`、`18`、`20` + + + + 帧率,以每秒帧数表示 + + 可能的值:`24`、`25`、`48`、`50` + + + + 为视频生成音频 + + + + 用于生成的模型。在 Comfy Router 路由 `POST /v2/models/ltx/{model}` 上,该字段由路径提供,可以省略。LTX 在此操作中提供的拼写(即 Comfy Router 以 `ltx/` 寻址的集合)为 ltx-2-5-fast 和 ltx-2-5-pro;此处将它们逐一写出,而不是限制为 enum,原因与上方注释所述相同。每个模型允许哪些分辨率,见下方 `resolution` 属性上的 `x-comfy-model-resolutions` 矩阵。 + + + + 描述所需视频内容的文本提示词 + + + + 输出视频分辨率。enum 是全部模型的并集;受支持的集合因模型而异。受支持的组合:ltx-2-5-fast:1280x720、720x1280、1920x1080、1080x1920、2560x1440、1440x2560、3840x2160、2160x3840;ltx-2-5-pro:1280x720、720x1280、1920x1080、1080x1920。其他(模型、分辨率)组合不受支持;v2 路由会以 400 拒绝它们。同一矩阵也以机器可读的形式发布在此属性的 x-comfy-model-resolutions 扩展中。 + + 可能的值:`1280x720`、`720x1280`、`1920x1080`、`1080x1920`、`2560x1440`、`1440x2560`、`3840x2160`、`2160x3840` + + +本内容根据 Router 在 `GET /v2/models/ltx/ltx-2-5-fast/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一文档。 + +### Output + + + 任务完成时间戳(ISO 8601) + + + + 任务创建时间戳(ISO 8601) + + + + 当 status 为 `failed` 时存在 + + + + + + + + + + + + 唯一任务标识符 + + + + 当 status 为 `completed` 时存在;输出 URL 在完成后 24 小时过期 + + + + 已生成视频的 URL + + + + 任务状态(`pending`、`processing`、`completed`、`failed`) + + +## 示例 + +### 输入 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 输出 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx b/zh/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx new file mode 100644 index 000000000..d1c66e65c --- /dev/null +++ b/zh/development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx @@ -0,0 +1,176 @@ +--- +title: "使用 Comfy Router 调用 LTX 2.5 Pro" +description: "通过 Comfy Router 调用 ltx/ltx-2-5-pro:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "LTX 2.5 Pro" +translationSourceHash: fb48c550 +translationFrom: development/comfy-router/models/ltx/ltx-2-5-pro/code.mdx +translationBlockHashes: + "_intro": 6134e774 + "Quick start": 471703f3 + "Schema": ff4b9a42 + "Examples": 696cabfd +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/ltx/ltx-2-5-pro.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`ltx/ltx-2-5-pro` 的 API 参考文档,由 Comfy Router 从 LTX 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `ltx/ltx-2-5-pro` + +**端点:** `POST https://api.comfy.org/v2/models/ltx/ltx-2-5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "ltx/ltx-2-5-pro", + { + "duration": 2, + "fps": 24, + "generate_audio": False, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("ltx/ltx-2-5-pro", { + duration: 2, + fps: 24, + generate_audio: false, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "1280x720", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/ltx/ltx-2-5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 2, \"fps\": 24, \"generate_audio\": false, \"prompt\": \"A single red maple leaf resting on a plain white background.\", \"resolution\": \"1280x720\"}" +``` + + +## Schema + +### 输入 + + + 视频时长,单位为秒(最大值取决于分辨率和帧率) + + 可选值:`2`、`3`、`4`、`5`、`6`、`8`、`10`、`12`、`14`、`16`、`18`、`20` + + + + 帧率,单位为帧每秒 + + 可选值:`24`、`25`、`48`、`50` + + + + 为视频生成音频 + + + + 用于生成的模型。在 Comfy Router 路由 `POST /v2/models/ltx/{model}` 上,该字段由路径提供,可以省略。LTX 在此操作上提供的拼写,即 Comfy Router 以 `ltx/` 寻址的集合,为 ltx-2-5-fast 和 ltx-2-5-pro;此处将其直接写出,而不是限定为 enum,原因见上方注释。每个模型允许哪些分辨率,请参见下方 `resolution` 属性上的 `x-comfy-model-resolutions` 矩阵。 + + + + 描述所需视频内容的文本提示词 + + + + 输出视频分辨率。enum 是全部模型的并集;支持的集合按模型而异。支持的组合:ltx-2-5-fast:1280x720、720x1280、1920x1080、1080x1920、2560x1440、1440x2560、3840x2160、2160x3840;ltx-2-5-pro:1280x720、720x1280、1920x1080、1080x1920。其他(模型,分辨率)组合不受支持;v2 路由会以 400 拒绝这些请求。同一矩阵以机器可读的形式发布在该属性的 x-comfy-model-resolutions 扩展中。 + + 可选值:`1280x720`、`720x1280`、`1920x1080`、`1080x1920`、`2560x1440`、`1440x2560`、`3840x2160`、`2160x3840` + + +本文档根据 Router 在 `GET /v2/models/ltx/ltx-2-5-pro/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,正是依据同一份文档校验调用。 + +### 输出 + + + 任务完成时间戳(ISO 8601) + + + + 任务创建时间戳(ISO 8601) + + + + 当 status 为 failed 时存在 + + + + + + + + + + + + 唯一任务标识符 + + + + 当 status 为 completed 时存在;输出 URL 在完成后 24 小时过期 + + + + 已生成视频的 URL + + + + 任务状态(pending、processing、completed、failed) + + +## 示例 + +### 输入 + +```json +{ + "duration": 2, + "fps": 24, + "generate_audio": false, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "1280x720" +} +``` + +### 输出 + +```json +{ + "completed_at": "2026-01-01T00:02:10Z", + "created_at": "2026-01-01T00:00:00Z", + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "result": { + "video_url": "https://example.invalid/ltx/generated.mp4" + }, + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/luma/photon-1/code.mdx b/zh/development/comfy-router/models/luma/photon-1/code.mdx new file mode 100644 index 000000000..f73551c22 --- /dev/null +++ b/zh/development/comfy-router/models/luma/photon-1/code.mdx @@ -0,0 +1,330 @@ +--- +title: "将 Photon 1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 luma/photon-1:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Photon 1" +translationSourceHash: 310f8788 +translationFrom: development/comfy-router/models/luma/photon-1/code.mdx +translationBlockHashes: + "_intro": 021fca05 + "Quick start": 6d34bab0 + "Schema": 497edabd + "Examples": 92a7a3f8 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/luma/photon-1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma/photon-1` 的 API 参考文档,由 Comfy Router 从 Luma 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `luma/photon-1` + +**端点:** `POST https://api.comfy.org/v2/models/luma/photon-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## 架构 + +### 输入 + + + 生成结果的宽高比 + + 可选值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成的回调 URL + + 格式:`uri` + + + + + + + + 图像身份对象 + + + + 图像身份的 URL 列表 + + + + 可选值:`image` + + + + 图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 图像参考的权重 + + + + 用于生成的图像模型。在 Comfy Router 路由 `POST /v2/models/luma/{model}` 上,该字段由路径提供,禁止发送;在 v1 的 `POST /proxy/luma/generations/image` 路由上,它被限制为 LumaImageModel 枚举(`photon-1`、`photon-flash-1`),Rewrite 通过拒绝省略或未知的模型来强制执行这一约束。 + + + + 修改图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 修改图像参考的权重 + + + + 生成的提示词 + + + + 图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 图像参考的权重 + + +本文档由 Router 在 `GET /v2/models/luma/photon-1/openapi.json` 提供的 schema 生成,这也是 Router 在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 图像生成的资产。`image` 是结果;`video` 和 `progress_video` 属于 Dream Machine 的 VIDEO 操作,该操作共用这条状态路由,Luma 会把它们作为显式 null 发送到这里。 + + + + 生成图像的 URL:这是 `luma/photon-*` 生成所填充的叶子字段。在生成达到 `completed` 之前为 null。 + + 格式:`uri` + + + + 在图像生成中始终为 null;它是 VIDEO 生成运行期间 Luma 发布的进行中预览。 + + 格式:`uri` + + + + 在图像生成中始终为 null;由 `luma/ray-*` 视频模型填充。 + + 格式:`uri` + + + + 生成创建时的日期和时间 + + 格式:`date-time` + + + + 生成状态的原因 + + + + 生成类型:在此操作中始终为 `image` + + 可选值:`image` + + + + 生成的 ID + + 格式:`uuid` + + + + 用于生成的模型 + + + + 图像生成请求,会在终端文档中原样回传。Luma 会序列化其请求模型的每个字段,对调用方未设置的字段写入显式 `null`,因此请根据字段的值而不是键是否存在来判断它是否被设置。 + + + + 生成的比例 + + 可选值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成的回调 URL + + 格式:`uri` + + + + + + + + 在终端文档中回传时的图像身份。与 `LumaImageIdentity` 形状相同,其成员可为 null,原因与 `LumaImageRefEcho` 所述相同。 + + + + 该图像身份的 URL + + + + 设置时始终为 `image`,与操作相呼应。当调用方未发送该字段时为 null,原因正是这个整体回传对象存在的原因。 + + + + 在终端文档中回传时的图像引用。与 `LumaImageRef` 形状相同,每个成员均可为 null,因为对于未设置的字段,Luma 会回传显式 `null` 而不是将其省略。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 图像引用的权重 + + + + 用于生成的图像模型 + + 可选值:`photon-1`、`photon-flash-1` + + + + 在终端文档中回传时的修改图像引用。与 `LumaModifyImageRef` 形状相同,其成员可为 null,原因与 `LumaImageRefEcho` 所述相同。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 修改图像引用的权重 + + + + 生成的提示词 + + + + 在终端文档中回传时的图像引用。与 `LumaImageRef` 形状相同,每个成员均可为 null,因为对于未设置的字段,Luma 会回传显式 `null` 而不是将其省略。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 图像引用的权重 + + + + 生成的状态 + + 可选值:`queued`、`dreaming`、`completed`、`failed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 输出 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "5e8b06d7-91c4-4a2f-8b3d-6f7a8b9c0d1e", + "model": "photon-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/luma/photon-flash-1/code.mdx b/zh/development/comfy-router/models/luma/photon-flash-1/code.mdx new file mode 100644 index 000000000..06a9d742b --- /dev/null +++ b/zh/development/comfy-router/models/luma/photon-flash-1/code.mdx @@ -0,0 +1,330 @@ +--- +title: "将 Photon Flash 1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 luma/photon-flash-1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Photon Flash 1" +translationSourceHash: 7cd8313e +translationFrom: development/comfy-router/models/luma/photon-flash-1/code.mdx +translationBlockHashes: + "_intro": 62ec455a + "Quick start": 18a58f5d + "Schema": 5ea08f51 + "Examples": e94faa92 +--- + +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/luma/photon-flash-1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma/photon-flash-1` 的 API 参考,由 Comfy Router 从 Luma 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `luma/photon-flash-1` + +**端点:** `POST https://api.comfy.org/v2/models/luma/photon-flash-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/photon-flash-1", + { + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/photon-flash-1", { + aspect_ratio: "1:1", + prompt: "a red circle on a plain white background", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/photon-flash-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"1:1\", \"prompt\": \"a red circle on a plain white background\"}" +``` + + +## Schema + +### 输入 + + + 生成内容的宽高比 + + 可能的值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成内容的回调 URL + + 格式:`uri` + + + + + + + + 图像身份对象 + + + + 图像身份的 URL 列表 + + + + 可能的值:`image` + + + + 图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 图像参考的权重 + + + + 用于生成内容的图像模型。在 Comfy Router 路由 `POST /v2/models/luma/{model}` 上,该字段由路径提供,不得发送;在 v1 的 `POST /proxy/luma/generations/image` 路由上,该字段被限制为 LumaImageModel 枚举(`photon-1`、`photon-flash-1`),Rewrite 通过在模型缺失或未知时拒绝请求来强制执行该约束。 + + + + 修改图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 修改图像参考的权重 + + + + 生成内容的提示词 + + + + 图像参考对象 + + + + 图像参考的 URL + + 格式:`uri` + + + + 图像参考的权重 + + +根据 Router 在 `GET /v2/models/luma/photon-flash-1/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于验证调用的同一份文档。### 输出 + + + 图像生成的资产。`image` 是结果;`video` 和 `progress_video` 属于 Dream Machine 的 VIDEO 操作,该操作共用这条状态路由,Luma 将它们作为显式的 null 发送到这里。 + + + + 生成图像的 URL,也是 `luma/photon-*` 生成所填充的叶子字段。在生成达到 `completed` 之前为 null。 + + 格式:`uri` + + + + 在图像生成中始终为 null;它是 VIDEO 生成运行期间 Luma 发布的进行中预览。 + + 格式:`uri` + + + + 在图像生成中始终为 null;改由 `luma/ray-*` 视频模型填充。 + + 格式:`uri` + + + + 生成创建时的日期和时间 + + 格式:`date-time` + + + + 生成所处状态的原因 + + + + 生成的类型,在此操作中始终为 `image` + + 可能的值:`image` + + + + 生成的 ID + + 格式:`uuid` + + + + 用于生成的模型 + + + + 图像生成请求,在终端文档中回显。Luma 会序列化其请求模型的每个字段,为调用方未设置的每个字段写入显式的 `null`,因此请根据字段的值而不是键来判断字段是否存在。 + + + + 生成的宽高比 + + 可能的值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成的回调 URL + + 格式:`uri` + + + + + + + + 图像身份在终端文档中回显时的形态。形状与 `LumaImageIdentity` 相同,其成员可为 null,原因与 `LumaImageRefEcho` 所述相同。 + + + + 图像身份的 URL + + + + 设置时始终为 `image`,与操作保持一致。调用方未发送时则为 null,这正是整个回显对象存在的原因。 + + + + 图像引用在终端文档中回显时的形态。形状与 `LumaImageRef` 相同,每个成员均可为 null,因为 Luma 对未设置的项会回显为显式的 `null`,而不是将其省略。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 图像引用的权重 + + + + 用于生成的图像模型 + + 可能的值:`photon-1`、`photon-flash-1` + + + + 修改图像引用在终端文档中回显时的形态。形状与 `LumaModifyImageRef` 相同,其成员可为 null,原因与 `LumaImageRefEcho` 所述相同。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 修改图像引用的权重 + + + + 生成的提示词 + + + + 图像引用在终端文档中回显时的形态。形状与 `LumaImageRef` 相同,每个成员均可为 null,因为 Luma 对未设置的项会回显为显式的 `null`,而不是将其省略。 + + + + 图像引用的 URL + + 格式:`uri` + + + + 图像引用的权重 + + + + 生成的状态 + + 可能的值:`queued`、`dreaming`、`completed`、`failed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "1:1", + "prompt": "a red circle on a plain white background" +} +``` + +### 输出 + +```json +{ + "assets": { + "image": "https://example.invalid/luma/photon-flash-1/generated.png", + "progress_video": null, + "video": null + }, + "created_at": "2027-01-01T00:00:00Z", + "failure_reason": null, + "generation_type": "image", + "id": "a1c73f26-08d5-4e69-b7a2-3c4d5e6f7a80", + "model": "photon-flash-1", + "request": { + "aspect_ratio": "1:1", + "callback_url": null, + "character_ref": null, + "generation_type": "image", + "image_ref": null, + "model": "photon-flash-1", + "modify_image_ref": null, + "prompt": "a red circle on a plain white background", + "style_ref": null + }, + "state": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/luma/ray-2/code.mdx b/zh/development/comfy-router/models/luma/ray-2/code.mdx new file mode 100644 index 000000000..fd8b6c47b --- /dev/null +++ b/zh/development/comfy-router/models/luma/ray-2/code.mdx @@ -0,0 +1,212 @@ +--- +title: "将 Ray 2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 luma/ray-2:endpoint、请求 shape 以及 Router 返回的响应。" +sidebarTitle: "Ray 2" +translationSourceHash: dc6baea3 +translationFrom: development/comfy-router/models/luma/ray-2/code.mdx +translationBlockHashes: + "_intro": 639f7996 + "Quick start": 4acb93f0 + "Schema": ea1f7cdb + "Examples": 3993fae3 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/luma/ray-2.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma/ray-2` 的 API 参考,由 Comfy Router 从 Luma 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `luma/ray-2` + +**端点:** `POST https://api.comfy.org/v2/models/luma/ray-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## Schema + +### 输入 + + + 生成内容的宽高比 + + 可选值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成内容的回调 URL。当生成处于 dreaming、已完成或失败状态时,会向该回调 URL 发送一个携带 Generation 对象的 POST 请求 + + 格式:`uri` + + + + + + + + 可选值:`video` + + + + 生成内容的关键帧 + + + + 关键帧可以是 Generation 引用、图像或视频 + + + + 关键帧可以是 Generation 引用、图像或视频 + + + + 是否循环播放视频 + + + + 用于生成内容的视频模型。在 Comfy Router 的 `POST /v2/models/luma/{model}` 路由上,该字段由路径提供,因此不得发送;在 v1 的 `POST /proxy/luma/generations` 路由上,该字段为必填,且被限制为 LumaVideoModel 枚举(`ray-2`、`ray-flash-2`)。 + + + + 生成内容的提示词 + + + + + + +该文档由 Router 在 `GET /v2/models/luma/ray-2/openapi.json` 处提供的 schema 生成,同时也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成内容的资产 + + + + 图像的 URL + + 格式:`uri` + + + + 进度视频的 URL + + 格式:`uri` + + + + 视频的 URL + + 格式:`uri` + + + + 生成内容的创建日期和时间 + + 格式:`date-time` + + + + 生成内容处于该状态的原因 + + + + 可选值:`video`、`image` + + + + 生成内容的 ID + + 格式:`uuid` + + + + 用于生成内容的模型 + + + + 生成内容的请求 + + + + 生成内容的状态 + + 可选值:`queued`、`dreaming`、`completed`、`failed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 输出 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "3f2a7c1e-8b40-4d59-9f6a-1c2d3e4f5a60", + "model": "ray-2", + "state": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/luma/ray-flash-2/code.mdx b/zh/development/comfy-router/models/luma/ray-flash-2/code.mdx new file mode 100644 index 000000000..29622a469 --- /dev/null +++ b/zh/development/comfy-router/models/luma/ray-flash-2/code.mdx @@ -0,0 +1,213 @@ +--- +title: "在 Comfy Router 中使用 Ray Flash 2" +description: "通过 Comfy Router 调用 luma/ray-flash-2:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Ray Flash 2" +translationSourceHash: a76a94e1 +translationFrom: development/comfy-router/models/luma/ray-flash-2/code.mdx +translationBlockHashes: + "_intro": 1fb59d13 + "Quick start": ff9e17ce + "Schema": 8009af73 + "Examples": cb7953b0 +--- + +{/* GENERATED FILE. Generated from router-schemas/luma/ray-flash-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma/ray-flash-2` 的 API 参考,由 Comfy Router 从 Luma 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `luma/ray-flash-2` + +**端点:** `POST https://api.comfy.org/v2/models/luma/ray-flash-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma/ray-flash-2", + { + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma/ray-flash-2", { + aspect_ratio: "16:9", + duration: "5s", + prompt: "a single red maple leaf resting on a plain white background", + resolution: "540p", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma/ray-flash-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"aspect_ratio\": \"16:9\", \"duration\": \"5s\", \"prompt\": \"a single red maple leaf resting on a plain white background\", \"resolution\": \"540p\"}" +``` + + +## Schema + +### 输入 + + + 生成任务的宽高比 + + 可能的值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`21:9`、`9:21` + + + + 生成任务的回调 URL。当生成任务处于 dreaming、已完成或失败状态时,会向该回调 URL 发送一个携带 Generation 对象的 POST 请求 + + 格式:`uri` + + + + + + + + 可能的值:`video` + + + + 生成任务的关键帧 + + + + 关键帧可以是 Generation 引用、Image 或 Video + + + + 关键帧可以是 Generation 引用、Image 或 Video + + + + 是否循环播放视频 + + + + 用于生成任务的视频模型。在 Comfy Router 路由 `POST /v2/models/luma/{model}` 上,该字段由路径提供,且不得发送;在 v1 的 `POST /proxy/luma/generations` 路由上,该字段为必填,且被限制为 LumaVideoModel 枚举(`ray-2`、`ray-flash-2`)。 + + + + 生成任务的提示词 + + + + + + +由 Router 在 `GET /v2/models/luma/ray-flash-2/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用来校验调用的同一份文档。 + +### 输出 + + + 生成任务的资产 + + + + 图像的 URL + + 格式:`uri` + + + + 进度视频的 URL + + 格式:`uri` + + + + 视频的 URL + + 格式:`uri` + + + + 生成任务的创建日期和时间 + + 格式:`date-time` + + + + 生成任务所处状态的原因 + + + + 可能的值:`video`、`image` + + + + 生成任务的 ID + + 格式:`uuid` + + + + 用于生成任务的模型 + + + + 生成任务的请求 + + + + 生成任务的状态 + + 可能的值:`queued`、`dreaming`、`completed`、`failed` + + +## 示例 + +### 输入 + +```json +{ + "aspect_ratio": "16:9", + "duration": "5s", + "prompt": "a single red maple leaf resting on a plain white background", + "resolution": "540p" +} +``` + +### 输出 + +```json +{ + "assets": { + "video": "https://example.invalid/luma/ray-flash-2/generated.mp4" + }, + "created_at": "2027-01-01T00:00:00Z", + "generation_type": "video", + "id": "8c41d0b6-2e7a-4f35-b1d8-9a0e6f3c2b71", + "model": "ray-flash-2", + "state": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/luma_2/uni-1-max/code.mdx b/zh/development/comfy-router/models/luma_2/uni-1-max/code.mdx new file mode 100644 index 000000000..45503e1da --- /dev/null +++ b/zh/development/comfy-router/models/luma_2/uni-1-max/code.mdx @@ -0,0 +1,295 @@ +--- +title: "搭配 Comfy Router 使用 Uni 1 Max" +description: "通过 Comfy Router 调用 luma_2/uni-1-max:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Uni 1 Max" +translationSourceHash: 41396dcb +translationFrom: development/comfy-router/models/luma_2/uni-1-max/code.mdx +translationBlockHashes: + "_intro": ebc62f13 + "Quick start": 5e8bbbee + "Schema": 99bc582a + "Examples": f813a867 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/luma_2/uni-1-max.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma_2/uni-1-max` 的 API 参考,由 Comfy Router 从 Luma 2 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `luma_2/uni-1-max` + +**端点:** `POST https://api.comfy.org/v2/models/luma_2/uni-1-max` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1-max", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1-max", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1-max \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## 模式 + +### 输入 + + + 输出宽高比例。ray-3.2 视频模型支持以下子集:9:16、3:4、1:1、4:3、16:9、21:9。 + + 可选值:`3:1`、`2:1`、`21:9`、`16:9`、`3:2`、`4:3`、`1:1`、`3:4`、`2:3`、`9:16`、`1:2`、`1:3` + + + + 用于风格/内容引导的参考图像。type 为 'image' 时最多 9 张,type 为 'image_edit' 时最多 8 张。 + + + + Base64 编码的图像或视频数据 + + + + 先前某次已完成生成的 UUID,可复用为来源。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源,与 url 一起使用时也必填,例如 video_edit / video_reframe 中的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 要使用的模型。uni-1 / uni-1-max 用于图像生成,ray-3.2 用于视频生成、编辑和重新取景。 + + + + 输出图像格式 + + 可选值:`png`、`jpeg` + + + + 文本提示词 + + + + 对图像或视频的引用。用于风格/内容引导、引导式生成、video-edit/video-reframe 来源以及引导关键帧。generation_id、url 或 data 三者中必须且只能提供一个。 + + + + Base64 编码的图像或视频数据 + + + + 先前某次已完成生成的 UUID,可复用为来源。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源,与 url 一起使用时也必填,例如 video_edit / video_reframe 中的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 风格预设 + + 可选值:`auto`、`manga` + + + + 要执行的生成类型。image/image_edit 由 uni-1 / uni-1-max 模型生成;video/video_edit/video_reframe 由 ray-3.2 模型生成。 + + 可选值:`image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + + + ray-3.2 的视频输出设置。此处仅对影响验证和计费的字段建模;其他字段(编辑控制、end_frame、loop、source_position)会原样转发给 Luma。 + + + + ray-3.2 video / video_edit 的片段时长。默认为 5s。HDR 生成(type 为 video)受限为 5s。 + + 可选值:`5s`、`10s` + + + + 在 MP4 之外同时导出 EXR 文件。要求 hdr 为 true。video_reframe 时会被拒绝。 + + + + 以 HDR 渲染。要求 720p/1080p。video_reframe 时会被拒绝。 + + + + 引导帧图像。单个关键帧会使 type 为 "video" 的请求成为单关键帧延长,始终按一个 5s 块计费。 + + + + Base64 编码的图像或视频数据 + + + + 先前某次已完成生成的 UUID,可复用为来源。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源,与 url 一起使用时也必填,例如 video_edit / video_reframe 中的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 循环播放生成的片段。仅创建时可用(type 为 video)。 + + + + ray-3.2 视频的输出分辨率。默认为 720p。360p 为草稿档位。HDR 需要 720p 或 1080p。 + + 可选值:`360p`、`540p`、`720p`、`1080p` + + + + 对图像或视频的引用。用于风格/内容引导、引导式生成、video-edit/video-reframe 来源以及引导关键帧。generation_id、url 或 data 三者中必须且只能提供一个。 + + + + Base64 编码的图像或视频数据 + + + + 先前某次已完成生成的 UUID,可复用为来源。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源,与 url 一起使用时也必填,例如 video_edit / video_reframe 中的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 启用网络搜索依据 + + +由 Router 在 `GET /v2/models/luma_2/uni-1-max/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于验证调用的同一份文档。### 输出 + + + 创建时间戳 + + + + 用于程序化处理的机器可读失败代码 + + 可选值:`content_moderated`、`generation_failed`、`budget_exhausted`、`output_not_found` + + + + 人类可读的失败描述,仅在生成状态为 FAILED 时填充。成功时为 `null`。 + + + + 生成标识符 + + + + 所使用的模型 + + + + 一条已生成的输出条目 + + + + 媒体类型(例如 image) + + + + 预签名 URL(1 小时有效期) + + + + 生成的当前状态 + + 可选值:`queued`、`processing`、`completed`、`failed` + + + + 要执行的生成类型。image/image_edit 由 uni-1 / uni-1-max 模型生成;video/video_edit/video_reframe 由 ray-3.2 模型生成。 + + 可选值:`image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + +## 示例 + +### 输入 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 输出 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1-max", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + + diff --git a/zh/development/comfy-router/models/luma_2/uni-1/code.mdx b/zh/development/comfy-router/models/luma_2/uni-1/code.mdx new file mode 100644 index 000000000..5f4e5be65 --- /dev/null +++ b/zh/development/comfy-router/models/luma_2/uni-1/code.mdx @@ -0,0 +1,295 @@ +--- +title: "将 Uni 1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 luma_2/uni-1:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Uni 1" +translationSourceHash: 9f61db78 +translationFrom: development/comfy-router/models/luma_2/uni-1/code.mdx +translationBlockHashes: + "_intro": 2cbf0b21 + "Quick start": 90977f75 + "Schema": 8ccf441b + "Examples": f993c215 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/luma_2/uni-1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`luma_2/uni-1` 的 API 参考,由 Comfy Router 从 Luma 2 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 执行相同的调用。 + +**模型 ID:** `luma_2/uni-1` + +**端点:** `POST https://api.comfy.org/v2/models/luma_2/uni-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "luma_2/uni-1", + { + "prompt": "a red circle on a plain white background", + "type": "image", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("luma_2/uni-1", { + prompt: "a red circle on a plain white background", + type: "image", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/luma_2/uni-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt\": \"a red circle on a plain white background\", \"type\": \"image\"}" +``` + + +## Schema + +### 输入 + + + 输出宽高比。ray-3.2 视频模型支持其中的 9:16、3:4、1:1、4:3、16:9、21:9 子集。 + + 可选值:`3:1`, `2:1`, `21:9`, `16:9`, `3:2`, `4:3`, `1:1`, `3:4`, `2:3`, `9:16`, `1:2`, `1:3` + + + + 用于风格/内容引导的参考图像。type 为 'image' 时最多 9 张,type 为 'image_edit' 时最多 8 张。 + + + + Base64 编码的图像或视频数据 + + + + 先前已完成生成的 UUID,可用作来源复用。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源还需与 url 一起使用,例如 video_edit / video_reframe 上的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 要使用的模型。uni-1 / uni-1-max 用于图像生成,ray-3.2 用于视频生成、编辑和重新取景。 + + + + 输出图像格式 + + 可选值:`png`, `jpeg` + + + + 文本提示词 + + + + 对图像或视频的引用。用于风格/内容引导、引导式生成、video-edit/video-reframe 来源以及引导关键帧。generation_id、url 或 data 中必须且只能提供一个。 + + + + Base64 编码的图像或视频数据 + + + + 先前已完成生成的 UUID,可用作来源复用。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源还需与 url 一起使用,例如 video_edit / video_reframe 上的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 风格预设 + + 可选值:`auto`, `manga` + + + + 要执行的生成类型。image/image_edit 由 uni-1 / uni-1-max 模型生成;video/video_edit/video_reframe 由 ray-3.2 模型生成。 + + 可选值:`image`, `image_edit`, `video`, `video_edit`, `video_reframe` + + + + ray-3.2 的视频输出设置。此处仅对影响验证和计费的字段建模;其他字段(编辑控制、end_frame、loop、source_position)会原样转发给 Luma。 + + + + ray-3.2 video / video_edit 的片段时长。默认为 5s。HDR 生成(type 为 video)限制为 5s。 + + 可选值:`5s`, `10s` + + + + 在 MP4 之外额外导出 EXR 文件。需要 hdr 为 true。video_reframe 不支持此项。 + + + + 以 HDR 渲染。需要 720p/1080p。video_reframe 不支持此项。 + + + + 引导帧图像。单个关键帧会使 type 为 "video" 的请求变为单关键帧延长,并始终按一个 5s 计费单元计费。 + + + + Base64 编码的图像或视频数据 + + + + 先前已完成生成的 UUID,可用作来源复用。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源还需与 url 一起使用,例如 video_edit / video_reframe 上的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 循环生成的片段。仅创建时可用(type 为 video)。 + + + + ray-3.2 视频的输出分辨率。默认为 720p。360p 是草稿档位。HDR 需要 720p 或 1080p。 + + 可选值:`360p`, `540p`, `720p`, `1080p` + + + + 对图像或视频的引用。用于风格/内容引导、引导式生成、video-edit/video-reframe 来源以及引导关键帧。generation_id、url 或 data 中必须且只能提供一个。 + + + + Base64 编码的图像或视频数据 + + + + 先前已完成生成的 UUID,可用作来源复用。由 ray-3.2 video_edit / video_reframe 使用。 + + + + MIME 类型。与 data 一起使用时必填(对于视频来源还需与 url 一起使用,例如 video_edit / video_reframe 上的 video/mp4)。 + + + + 可公开访问的图像或视频 URL + + + + 启用 Google / 搜索引导 + + +根据 Router 在 `GET /v2/models/luma_2/uni-1/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于验证调用的文档相同。### 输出 + + + 创建时间戳 + + + + 便于程序化处理的机器可读失败代码 + + 可能的值:`content_moderated`、`generation_failed`、`budget_exhausted`、`output_not_found` + + + + 人类可读的失败描述,仅在生成失败(FAILED)时填充。生成成功时为 `null`。 + + + + 生成标识符 + + + + 使用的模型 + + + + 一条生成的输出条目 + + + + 媒体类型(例如 image) + + + + 预签名 URL(1 小时过期) + + + + 生成的当前状态 + + 可能的值:`queued`、`processing`、`completed`、`failed` + + + + 要执行的生成类型。image/image_edit 由 uni-1 / uni-1-max 模型生成;video/video_edit/video_reframe 由 ray-3.2 模型生成。 + + 可能的值:`image`、`image_edit`、`video`、`video_edit`、`video_reframe` + + +## 示例 + +### 输入 + +```json +{ + "prompt": "a red circle on a plain white background", + "type": "image" +} +``` + +### 输出 + +```json +{ + "created_at": "2027-01-01T00:00:00Z", + "failure_code": null, + "failure_reason": null, + "id": "gen-luma-agents-3f2a7c1e8b40", + "model": "uni-1", + "output": [ + { + "type": "image", + "url": "https://example.invalid/luma_2/uni-1/generated.png" + } + ], + "state": "completed", + "type": "image" +} +``` + + + diff --git a/zh/development/comfy-router/models/meshy/animations/code.mdx b/zh/development/comfy-router/models/meshy/animations/code.mdx new file mode 100644 index 000000000..59787722c --- /dev/null +++ b/zh/development/comfy-router/models/meshy/animations/code.mdx @@ -0,0 +1,221 @@ +--- +title: "将 Animations 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 meshy/animations:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Animations" +translationSourceHash: 57086ec8 +translationFrom: development/comfy-router/models/meshy/animations/code.mdx +translationBlockHashes: + "_intro": 77ee7b16 + "Quick start": bfff140b + "Schema": eda95378 + "Examples": 1fe9d0ce +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/animations.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/animations` 的 API 参考文档,由 Comfy Router 从 Meshy 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**Model ID:** `meshy/animations` + +**Endpoint:** `POST https://api.comfy.org/v2/models/meshy/animations` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/animations", + { + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps", + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/animations", { + action_id: 92, + post_process: { + fps: 60, + operation_type: "change_fps", + }, + rig_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/animations \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"action_id\": 92, \"post_process\": {\"fps\":60,\"operation_type\":\"change_fps\"}, \"rig_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## Schema + +### Input + + + 要应用的动画动作的标识符。 + + + + 动画文件后处理的参数。 + + + + 目标帧率。默认为 30。仅在 operation_type 为 change_fps 时适用。 + + 可选值:`24`、`25`、`30`、`60` + + + + 要执行的操作类型。 + + 可选值:`change_fps`、`fbx2usdz`、`extract_armature` + + + + 成功完成的绑定任务的 id(来自 POST /openapi/v1/rigging)。该任务中的角色将用于生成动画。 + + +此内容由 Router 在 `GET /v2/models/meshy/animations/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档为同一份。 + +### Output + + + 任务创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务结果过期时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务完成时的时间戳,单位为毫秒。未完成时为 0。 + + 格式:`int64` + + + + 任务的唯一标识符。 + + + + 前置任务的数量。仅在状态为 PENDING 时有意义。 + + + + 任务进度(0-100)。 + + 范围:`0` 到 `100` + + + + 如果任务 SUCCEEDED,则包含输出的动画 URL。 + + + + FBX 格式动画的可下载 URL。 + + + + GLB 格式动画的可下载 URL。 + + + + 已更改 FPS 的 FBX 格式动画的可下载 URL。 + + + + 处理后的 FBX 格式骨架的可下载 URL。 + + + + 处理后的 USDZ 格式动画的可下载 URL。 + + + + 任务开始时的时间戳,单位为毫秒。未开始时为 0。 + + 格式:`int64` + + + + 可选值:`SUCCEEDED` + + + + 如果任务失败,则包含报错信息的错误对象。 + + + + 详细的报错信息。 + + + + 动画任务的类型。 + + 可选值:`animate` + + +## 示例 + +### 输入 + +```json +{ + "action_id": 92, + "post_process": { + "fps": 60, + "operation_type": "change_fps" + }, + "rig_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225648000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "animation_fbx_url": "https://example.invalid/meshy/animations/animation.fbx", + "animation_glb_url": "https://example.invalid/meshy/animations/animation.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "animate" +} +``` + + diff --git a/zh/development/comfy-router/models/meshy/meshy-5/code.mdx b/zh/development/comfy-router/models/meshy/meshy-5/code.mdx new file mode 100644 index 000000000..edd00fc82 --- /dev/null +++ b/zh/development/comfy-router/models/meshy/meshy-5/code.mdx @@ -0,0 +1,338 @@ +--- +title: "将 Meshy 5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 meshy/meshy-5:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Meshy 5" +translationSourceHash: 638178e5 +translationFrom: development/comfy-router/models/meshy/meshy-5/code.mdx +translationBlockHashes: + "_intro": f3672d3d + "Quick start": dcdf0c11 + "Schema": 3e99ff32 + "Examples": e2bc6209 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-5` 的 API 参考,由 Comfy Router 从 Meshy 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `meshy/meshy-5` + +**端点:** `POST https://api.comfy.org/v2/models/meshy/meshy-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-5", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-5", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## Schema + +### 输入 + +#### `preview` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,该值由路径(`/v2/models/meshy/{model}`)提供,可以省略或传为 null;Router 会在验证之后将路径中的模型写入此处。在 v1 /proxy 路由上请参见 MeshyTextTo3DPreviewRequest,它将该字段限制为 MeshyAiModel。 + + + + 描述你所期望的对象艺术风格。 + + 可选值:`realistic`、`sculpture` + + + + 弃用。请改用 pose_mode。是否以 A/T 姿态生成模型。 + + + + 创建预览任务时,该字段应设置为 "preview"。 + + 可选值:`preview` + + + + 当为 true 时,输入内容将被筛查是否存在可能有害的内容。 + + + + 指定已生成模型的姿态模式。 + + 可选值:`a-pose`、`t-pose`、`` + + + + 描述该3D模型是什么类型的对象。最多 600 个字符。 + + + + 控制是否启用 remesh 阶段。当为 false 时,返回最高精度的三角网格。 + + + + 控制模型生成过程中的对称行为。 + + 可选值:`off`、`auto`、`on` + + + + 指定已生成模型的目标多边形数量。有效范围为 100 到 300,000。 + + 范围:`100` 到 `300000` + + + + 指定已生成模型的拓扑结构。 + + 可选值:`quad`、`triangle` + + + + 启用 Ultra 生成,以获得更高保真度的几何体以及更精细的表面细节。仅当 ai_model 为 meshy-7 或 latest 时受支持。 + + +#### `refine` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,该值由路径(`/v2/models/meshy/{model}`)提供,可以省略或传为 null;Router 会在验证之后将路径中的模型写入此处。在 v1 /proxy 路由上请参见 MeshyTextTo3DRefineRequest,它将该字段限制为 MeshyAiModel。 + + + + 除基础颜色外,还生成 PBR 贴图(金属度、粗糙度、法线)。注意,使用 Sculpture 风格时,enable_pbr 应设置为 false。 + + + + 创建精修任务时,该字段应设置为 "refine"。 + + 可选值:`refine` + + + + 当为 true 时,输入内容将被筛查是否存在可能有害的内容。 + + + + 对应的预览任务 id。给定预览任务的状态必须为 SUCCEEDED。 + + + + 提供一个 2D 图像来引导纹理生成过程。支持 .jpg、.jpeg、.png 格式或 base64 编码的数据 URI。 + + + + 提供一个额外的文本提示来引导纹理生成过程。最多 600 个字符。 + + + + 已生成纹理的纹理分辨率。可为 2k、4k 或 8k 之一。4k 和 8k 要求 ai_model 为 meshy-6、meshy-7 或 latest。 + + 可选值:`2k`、`4k`、`8k` + + +由 Router 在 `GET /v2/models/meshy/meshy-5/openapi.json` 处提供的 schema 生成,与请求到达提供商之前用于验证调用的文档相同。### 输出 + + + 用于创建预览任务的未经修改的 art_style。 + + + + 任务创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务完成时的时间戳,单位为毫秒。未完成时为 0。 + + 格式:`int64` + + + + 任务的唯一标识符。 + + + + 由 Meshy 生成的带纹理 3D 模型文件的可下载 URL。 + + + + FBX 文件的可下载 URL。 + + + + GLB 文件的可下载 URL。 + + + + MTL 文件的可下载 URL。 + + + + OBJ 文件的可下载 URL。 + + + + USDZ 文件的可下载 URL。 + + + + 为向后兼容而保留的弃用字段。 + + + + 前置任务的数量。仅在状态为 PENDING 时有意义。 + + + + 任务的进度。未开始时为 0,成功时为 100。 + + 范围:`0` 到 `100` + + + + 用于创建任务的未经修改的 prompt。 + + + + 任务启动时的时间戳,单位为毫秒。未启动时为 0。 + + 格式:`int64` + + + + 可能的值:`SUCCEEDED` + + + + 错误对象,包含任务失败时的报错信息。 + + + + 详细的报错信息。 + + + + 用于引导纹理化过程的纹理图像的可下载 URL。 + + + + 在 refine 阶段提供的、用于引导纹理化过程的附加文本 prompt。 + + + + 为向后兼容而保留的弃用字段。 + + + + 由该任务生成的纹理 URL 对象组成的数组。 + + + + 基础颜色贴图图像的可下载 URL。 + + + + 金属度贴图图像的可下载 URL。 + + + + 法线贴图图像的可下载 URL。 + + + + 粗糙度贴图图像的可下载 URL。 + + + + 模型文件缩略图图像的可下载 URL。 + + + + Text to 3D 任务的类型。 + + 可能的值:`text-to-3d-preview`、`text-to-3d-refine` + + + + 弃用字段,返回预览视频的可下载 URL。 + + +## 示例 + +### 输入 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 输出 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/zh/development/comfy-router/models/meshy/meshy-6/code.mdx b/zh/development/comfy-router/models/meshy/meshy-6/code.mdx new file mode 100644 index 000000000..4ad56fe63 --- /dev/null +++ b/zh/development/comfy-router/models/meshy/meshy-6/code.mdx @@ -0,0 +1,338 @@ +--- +title: "搭配 Comfy Router 使用 Meshy 6" +description: "通过 Comfy Router 调用 meshy/meshy-6:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Meshy 6" +translationSourceHash: e0974924 +translationFrom: development/comfy-router/models/meshy/meshy-6/code.mdx +translationBlockHashes: + "_intro": aa2fea0d + "Quick start": 53e45ae7 + "Schema": a8592941 + "Examples": e2bc6209 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/meshy/meshy-6.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-6` 的 API 参考,由 Comfy Router 从 Meshy 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `meshy/meshy-6` + +**端点:** `POST https://api.comfy.org/v2/models/meshy/meshy-6` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-6", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-6", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-6 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## 模式 {#schema} + +### 输入 + +#### `preview` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,此项由路径(`/v2/models/meshy/{model}`)提供,可以省略或以 null 发送;Router 会在验证后将路径中的模型写入此处。在 v1 /proxy 路由上请参阅 MeshyTextTo3DPreviewRequest,它将其限制为 MeshyAiModel。 + + + + 描述你期望的物体艺术风格。 + + 可选值:`realistic`、`sculpture` + + + + 已弃用。请改用 pose_mode。是否以 A/T 姿势生成模型。 + + + + 创建预览任务时,此字段应设置为 "preview"。 + + 可选值:`preview` + + + + 当为 true 时,输入内容将被筛查是否存在潜在有害内容。 + + + + 指定生成模型的姿势模式。 + + 可选值:`a-pose`、`t-pose`、`` + + + + 描述该 3D 模型是什么类型的物体。最多 600 个字符。 + + + + 控制是否启用重网格化阶段。当为 false 时,返回最高精度的三角网格。 + + + + 控制模型生成过程中的对称行为。 + + 可选值:`off`、`auto`、`on` + + + + 指定生成模型的目标多边形数量。有效范围为 100 到 300,000。 + + 范围:`100` 到 `300000` + + + + 指定生成模型的拓扑结构。 + + 可选值:`quad`、`triangle` + + + + 启用 Ultra 生成,以获得更精细表面细节的更高保真几何体。仅当 ai_model 为 meshy-7 或 latest 时支持。 + + +#### `refine` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,此项由路径(`/v2/models/meshy/{model}`)提供,可以省略或以 null 发送;Router 会在验证后将路径中的模型写入此处。在 v1 /proxy 路由上请参阅 MeshyTextTo3DRefineRequest,它将其限制为 MeshyAiModel。 + + + + 除基础颜色外,还生成 PBR 贴图(金属度、粗糙度、法线)。注意,使用 Sculpture 风格时,enable_pbr 应设置为 false。 + + + + 创建 refine 任务时,此字段应设置为 "refine"。 + + 可选值:`refine` + + + + 当为 true 时,输入内容将被筛查是否存在潜在有害内容。 + + + + 对应的预览任务 ID。给定预览任务的状态必须为 SUCCEEDED。 + + + + 提供一张 2D 图像来引导纹理生成过程。支持 .jpg、.jpeg、.png 格式或 base64 编码的数据 URI。 + + + + 提供一个额外的文本提示来引导纹理生成过程。最多 600 个字符。 + + + + 生成纹理的纹理分辨率。可取 2k、4k 或 8k。4k 和 8k 需要 ai_model 为 meshy-6、meshy-7 或 latest。 + + 可选值:`2k`、`4k`、`8k` + + +根据 Router 在 `GET /v2/models/meshy/meshy-6/openapi.json` 提供的 schema 生成,这与它在请求到达提供商之前用于验证调用的文档相同。### 输出 + + + 用于创建预览任务的未经修改的 art_style。 + + + + 任务创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务完成时的时间戳,单位为毫秒。如果未完成则为 0。 + + 格式:`int64` + + + + 任务的唯一标识符。 + + + + 指向 Meshy 生成的带纹理 3D模型文件的可下载 URL。 + + + + FBX 文件的可下载 URL。 + + + + GLB 文件的可下载 URL。 + + + + MTL 文件的可下载 URL。 + + + + OBJ 文件的可下载 URL。 + + + + USDZ 文件的可下载 URL。 + + + + 为向后兼容而保留的弃用字段。 + + + + 前序任务的数量。仅当状态为 PENDING 时才有意义。 + + + + 任务进度。未开始为 0,成功时为 100。 + + 范围:`0` 到 `100` + + + + 用于创建任务的未经修改的提示词。 + + + + 任务启动时的时间戳,单位为毫秒。如果未启动则为 0。 + + 格式:`int64` + + + + 可能的值:`SUCCEEDED` + + + + 错误对象,在任务失败时包含报错信息。 + + + + 详细的报错信息。 + + + + 用于引导纹理处理过程的纹理图像的可下载 URL。 + + + + 在细化阶段提供用于引导纹理处理过程的附加文本提示词。 + + + + 为向后兼容而保留的弃用字段。 + + + + 由该任务生成的纹理 URL 对象数组。 + + + + 基础颜色贴图图像的可下载 URL。 + + + + 金属度贴图图像的可下载 URL。 + + + + 法线贴图图像的可下载 URL。 + + + + 粗糙度贴图图像的可下载 URL。 + + + + 模型文件缩略图图像的可下载 URL。 + + + + Text to 3D 任务的类型。 + + 可能的值:`text-to-3d-preview`、`text-to-3d-refine` + + + + 返回预览视频可下载 URL 的弃用字段。 + + +## 示例 + +### 输入 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 输出 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/zh/development/comfy-router/models/meshy/meshy-7/code.mdx b/zh/development/comfy-router/models/meshy/meshy-7/code.mdx new file mode 100644 index 000000000..d22d5b78d --- /dev/null +++ b/zh/development/comfy-router/models/meshy/meshy-7/code.mdx @@ -0,0 +1,338 @@ +--- +title: "将 Meshy 7 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 meshy/meshy-7:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Meshy 7" +translationSourceHash: 13a581ae +translationFrom: development/comfy-router/models/meshy/meshy-7/code.mdx +translationBlockHashes: + "_intro": c72a0194 + "Quick start": e82d9fbc + "Schema": 73e21121 + "Examples": e2bc6209 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/meshy-7.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/meshy-7` 的 API 参考,由 Comfy Router 提供,来源为 Meshy。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `meshy/meshy-7` + +**端点:** `POST https://api.comfy.org/v2/models/meshy/meshy-7` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/meshy-7", + { + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/meshy-7", { + art_style: "realistic", + mode: "preview", + prompt: "a red cube", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/meshy-7 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"art_style\": \"realistic\", \"mode\": \"preview\", \"prompt\": \"a red cube\"}" +``` + + +## Schema + +### 输入 + +#### `preview` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,该值由路径(`/v2/models/meshy/{model}`)提供,可以省略或传 null;Router 会在验证通过后将路径中的模型写入此处。在 v1 /proxy 路由上请参见 MeshyTextTo3DPreviewRequest,其中该项被限制为 MeshyAiModel。 + + + + 描述你期望的对象艺术风格。 + + 可能的值:`realistic`、`sculpture` + + + + 弃用。请改用 pose_mode。是否以 A/T 姿态生成模型。 + + + + 创建预览任务时,该字段应设置为 "preview"。 + + 可能的值:`preview` + + + + 为 true 时,输入内容将被筛查是否存在潜在有害内容。 + + + + 指定已生成模型的姿态模式。 + + 可能的值:`a-pose`、`t-pose`、`` + + + + 描述 3D 模型是什么类型的对象。最多 600 个字符。 + + + + 控制是否启用 remesh 阶段。为 false 时,返回最高精度的三角网格。 + + + + 控制模型生成过程中的对称行为。 + + 可能的值:`off`、`auto`、`on` + + + + 指定已生成模型的目标多边形数量。有效范围为 100 到 300,000。 + + 范围:`100` 到 `300000` + + + + 指定已生成模型的拓扑结构。 + + 可能的值:`quad`、`triangle` + + + + 启用 Ultra 生成,以获得更高保真度的几何体和更精细的表面细节。仅当 ai_model 为 meshy-7 或最新时支持。 + + +#### `refine` 变体 + + + 要运行的 Meshy 模型。在 Comfy Router 路由上,该值由路径(`/v2/models/meshy/{model}`)提供,可以省略或传 null;Router 会在验证通过后将路径中的模型写入此处。在 v1 /proxy 路由上请参见 MeshyTextTo3DRefineRequest,其中该项被限制为 MeshyAiModel。 + + + + 在基础颜色之外生成 PBR 贴图(金属度、粗糙度、法线)。注意,使用 Sculpture 风格时 enable_pbr 应设为 false。 + + + + 创建 refine 任务时,该字段应设置为 "refine"。 + + 可能的值:`refine` + + + + 为 true 时,输入内容将被筛查是否存在潜在有害内容。 + + + + 对应的预览任务 ID。所指定的预览任务的状态必须为 SUCCEEDED。 + + + + 提供一张 2D 图像以指导贴图过程。支持 .jpg、.jpeg、.png 格式或 base64 编码的 data URI。 + + + + 提供额外的文本提示词以指导贴图过程。最多 600 个字符。 + + + + 已生成纹理的纹理分辨率。可选 2k、4k 或 8k。4k 和 8k 需要 ai_model 为 meshy-6、meshy-7 或最新。 + + 可能的值:`2k`、`4k`、`8k` + + +根据 Router 在 `GET /v2/models/meshy/meshy-7/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前 Router 用于验证调用的文档相同。### 输出 + + + 用于创建预览任务的未经修改的 art_style。 + + + + 任务创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务完成时的时间戳,单位为毫秒。如果未完成则为 0。 + + 格式:`int64` + + + + 任务的唯一标识符。 + + + + 由 Meshy 生成的带纹理 3D模型文件的可下载 URL。 + + + + FBX 文件的可下载 URL。 + + + + GLB 文件的可下载 URL。 + + + + MTL 文件的可下载 URL。 + + + + OBJ 文件的可下载 URL。 + + + + USDZ 文件的可下载 URL。 + + + + 为向后兼容而保留的弃用字段。 + + + + 前置任务的数量。仅当状态为 PENDING 时才有意义。 + + + + 任务的进度。未开始时为 0,成功时为 100。 + + 范围:`0` 到 `100` + + + + 用于创建任务的未经修改的提示词。 + + + + 任务启动时的时间戳,单位为毫秒。如果未启动则为 0。 + + 格式:`int64` + + + + 可选值:`SUCCEEDED` + + + + 错误对象,当任务失败时包含报错信息。 + + + + 详细的报错信息。 + + + + 用于指导纹理生成过程的纹理图像的可下载 URL。 + + + + 在细化阶段为指导纹理生成过程而提供的附加文本提示词。 + + + + 为向后兼容而保留的弃用字段。 + + + + 由该任务生成的纹理 URL 对象数组。 + + + + 基础颜色贴图图像的可下载 URL。 + + + + 金属度贴图图像的可下载 URL。 + + + + 法线贴图图像的可下载 URL。 + + + + 粗糙度贴图图像的可下载 URL。 + + + + 模型文件缩略图图像的可下载 URL。 + + + + Text to 3D 任务的类型。 + + 可选值:`text-to-3d-preview`、`text-to-3d-refine` + + + + 弃用字段,返回预览视频的可下载 URL。 + + +## 示例 + +### 输入 + +```json +{ + "art_style": "realistic", + "mode": "preview", + "prompt": "a red cube" +} +``` + +### 输出 + +```json +{ + "art_style": "realistic", + "created_at": 1767225600000, + "finished_at": 1767225719000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/text-to-3d/model.fbx", + "glb": "https://example.invalid/meshy/text-to-3d/model.glb", + "mtl": "https://example.invalid/meshy/text-to-3d/model.mtl", + "obj": "https://example.invalid/meshy/text-to-3d/model.obj", + "usdz": "https://example.invalid/meshy/text-to-3d/model.usdz" + }, + "progress": 100, + "prompt": "a red cube", + "started_at": 1767225601000, + "status": "SUCCEEDED", + "thumbnail_url": "https://example.invalid/meshy/text-to-3d/thumbnail.png", + "type": "text-to-3d-preview" +} +``` + + + diff --git a/zh/development/comfy-router/models/meshy/remesh/code.mdx b/zh/development/comfy-router/models/meshy/remesh/code.mdx new file mode 100644 index 000000000..880ce1c32 --- /dev/null +++ b/zh/development/comfy-router/models/meshy/remesh/code.mdx @@ -0,0 +1,236 @@ +--- +title: "将 Remesh 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 meshy/remesh:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Remesh" +translationSourceHash: e8059ce2 +translationFrom: development/comfy-router/models/meshy/remesh/code.mdx +translationBlockHashes: + "_intro": e9a2c81a + "Quick start": 95cd0cea + "Schema": 1e6e7f8f + "Examples": 4eee8fa5 +--- +{/* GENERATED FILE. Generated from router-schemas/meshy/remesh.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/remesh` 的 API 参考,由 Comfy Router 提供,来源为 Meshy。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `meshy/remesh` + +**端点:** `POST https://api.comfy.org/v2/models/meshy/remesh` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/remesh", + { + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": ["glb", "fbx"], + "target_polycount": 50000, + "topology": "quad", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/remesh", { + input_task_id: "0193abcd-0000-0000-0000-000000000000", + origin_at: "bottom", + resize_height: 1, + target_formats: ["glb", "fbx"], + target_polycount: 50000, + topology: "quad", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/remesh \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\", \"origin_at\": \"bottom\", \"resize_height\": 1, \"target_formats\": [\"glb\",\"fbx\"], \"target_polycount\": 50000, \"topology\": \"quad\"}" +``` + + +## Schema + +### 输入 + + + 如果为 true,则仅更改输入模型文件的格式,忽略拓扑、resize_height 和 target_polycount 等其他输入。 + + + + 您想要重新网格化的、已完成的 Image to 3D 或 Text to 3D 使用例的 ID。如果未提供 model_url,则必填。 + + + + 可公开访问的 3D模型 URL 或数据 URI。支持的格式:glb、gltf、obj、fbx、stl。如果未提供 input_task_id,则必填。 + + + + 原点的位置。 + + 可选值:`bottom`、`center`、`` + + + + 将模型调整大小到以米为单位的特定高度。0 表示不调整大小。 + + + + 重新网格化后模型的目标格式列表。 + + + + 指定已生成模型的目标多边形数量。有效范围为 100 到 300,000。 + + 范围:`100` 到 `300000` + + + + 指定已生成模型的拓扑结构。 + + 可选值:`quad`、`triangle` + + +本文档根据 Router 在 `GET /v2/models/meshy/remesh/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 使用例创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 使用例已完成时的时间戳,单位为毫秒。如果未完成则为 0。 + + 格式:`int64` + + + + 使用例的唯一标识符。 + + + + 可下载的重新网格化后 3D模型文件 URL。 + + + + 可下载的 Blender 文件 URL。 + + + + 可下载的 FBX 文件 URL。 + + + + 可下载的 GLB 文件 URL。 + + + + 可下载的 OBJ 文件 URL。 + + + + 可下载的 STL 文件 URL。 + + + + 可下载的 USDZ 文件 URL。 + + + + 前面排队的使用例数量。仅当状态为 PENDING 时有意义。 + + + + 使用例的进度。未开始时为 0,成功时为 100。 + + 范围:`0` 到 `100` + + + + 使用例开始时的时间戳,单位为毫秒。如果未开始则为 0。 + + 格式:`int64` + + + + 可选值:`SUCCEEDED` + + + + 错误对象,在使用例失败时包含报错信息。 + + + + 详细的报错信息。 + + + + Remesh 使用例的类型。 + + 可选值:`remesh` + + +## 示例 + +### 输入 + +```json +{ + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + "origin_at": "bottom", + "resize_height": 1, + "target_formats": [ + "glb", + "fbx" + ], + "target_polycount": 50000, + "topology": "quad" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600000, + "finished_at": 1767225663000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "model_urls": { + "fbx": "https://example.invalid/meshy/remesh/model.fbx", + "glb": "https://example.invalid/meshy/remesh/model.glb", + "obj": "https://example.invalid/meshy/remesh/model.obj" + }, + "progress": 100, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "remesh" +} +``` + + diff --git a/zh/development/comfy-router/models/meshy/rigging/code.mdx b/zh/development/comfy-router/models/meshy/rigging/code.mdx new file mode 100644 index 000000000..2f45980e6 --- /dev/null +++ b/zh/development/comfy-router/models/meshy/rigging/code.mdx @@ -0,0 +1,224 @@ +--- +title: "通过 Comfy Router 使用 Rigging" +description: "通过 Comfy Router 调用 meshy/rigging:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Rigging" +translationSourceHash: c26fe555 +translationFrom: development/comfy-router/models/meshy/rigging/code.mdx +translationBlockHashes: + "_intro": 0dfeedab + "Quick start": a2e204dc + "Schema": 2d8d7dbb + "Examples": 8e91e01b +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/meshy/rigging.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`meshy/rigging` 的 API 参考,由 Comfy Router 提供,来自 Meshy。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `meshy/rigging` + +**端点:** `POST https://api.comfy.org/v2/models/meshy/rigging` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "meshy/rigging", + { + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("meshy/rigging", { + height_meters: 1.8, + input_task_id: "0193abcd-0000-0000-0000-000000000000", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/meshy/rigging \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"height_meters\": 1.8, \"input_task_id\": \"0193abcd-0000-0000-0000-000000000000\"}" +``` + + +## Schema + +### 输入 + + + 角色模型的大致高度,单位为米。必须为正数。 + + 范围:`0` 到 `…` + + + + 需要进行绑定的输入任务。如果未提供 model_url,则此项必填。 + + + + 可公开访问的 URL 或 Data URI,指向带纹理的人形 GLB 文件。如果未提供 input_task_id,则此项必填。 + + + + 模型的 UV 展开基础颜色纹理图像。可公开访问的 URL 或 Data URI。支持 .png 格式。 + + +根据 Router 在 `GET /v2/models/meshy/rigging/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前,Router 用于校验调用的同一份文档。 + +### 输出 + + + 任务创建时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务结果过期时的时间戳,单位为毫秒。 + + 格式:`int64` + + + + 任务完成时的时间戳,单位为毫秒。未完成时为 0。 + + 格式:`int64` + + + + 任务的唯一标识符。 + + + + 前置任务的数量。仅在状态为 PENDING 时才有意义。 + + + + 任务进度(0-100)。未开始时为 0,成功时为 100。 + + 范围:`0` 到 `100` + + + + 如果任务 SUCCEEDED,则包含输出资产 URL。 + + + + 包含默认动画的 URL。 + + + + 奔跑动画骨架的 GLB 格式下载 URL。 + + + + 奔跑动画的 FBX 格式下载 URL(含蒙皮)。 + + + + 奔跑动画的 GLB 格式下载 URL(含蒙皮)。 + + + + 行走动画骨架的 GLB 格式下载 URL。 + + + + 行走动画的 FBX 格式下载 URL(含蒙皮)。 + + + + 行走动画的 GLB 格式下载 URL(含蒙皮)。 + + + + 绑定后角色的 FBX 格式下载 URL。 + + + + 绑定后角色的 GLB 格式下载 URL。 + + + + 任务开始时间的时间戳,单位为毫秒。未开始时为 0。 + + 格式:`int64` + + + + 可能的值:`SUCCEEDED` + + + + 如果任务失败,则包含报错信息的错误对象。 + + + + 详细的报错信息。 + + + + 绑定任务的类型。 + + 可能的值:`rig` + + +## 示例 + +### 输入 + +```json +{ + "height_meters": 1.8, + "input_task_id": "0193abcd-0000-0000-0000-000000000000" +} +``` + +### 输出 + +```json +{ + "created_at": 1767225600000, + "expires_at": 1767830400000, + "finished_at": 1767225712000, + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "progress": 100, + "result": { + "basic_animations": { + "running_glb_url": "https://example.invalid/meshy/rigging/running.glb", + "walking_glb_url": "https://example.invalid/meshy/rigging/walking.glb" + }, + "rigged_character_fbx_url": "https://example.invalid/meshy/rigging/character.fbx", + "rigged_character_glb_url": "https://example.invalid/meshy/rigging/character.glb" + }, + "started_at": 1767225601000, + "status": "SUCCEEDED", + "type": "rig" +} +``` + + + diff --git a/zh/development/comfy-router/models/minimax/minimax-h3/code.mdx b/zh/development/comfy-router/models/minimax/minimax-h3/code.mdx new file mode 100644 index 000000000..ca5720e72 --- /dev/null +++ b/zh/development/comfy-router/models/minimax/minimax-h3/code.mdx @@ -0,0 +1,280 @@ +--- +title: "配合 Comfy Router 使用 MiniMax H3" +description: "通过 Comfy Router 调用 minimax/minimax-h3:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "MiniMax H3" +translationSourceHash: 5fb40671 +translationFrom: development/comfy-router/models/minimax/minimax-h3/code.mdx +translationBlockHashes: + "_intro": fa61f8ee + "Quick start": bfc061a3 + "Schema": a9ff2a3d + "Examples": 5c283b57 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/minimax/minimax-h3.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`minimax/minimax-h3` 的 API 参考文档,由 Comfy Router 提供服务,模型来自 MiniMax。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `minimax/minimax-h3` + +**端点:** `POST https://api.comfy.org/v2/models/minimax/minimax-h3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "minimax/minimax-h3", + { + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text", + }, + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("minimax/minimax-h3", { + content: [ + { + text: "A single red maple leaf resting on a plain white background.", + type: "text", + }, + ], + duration: 5, + ratio: "16:9", + resolution: "768P", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/minimax/minimax-h3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"content\": [{\"text\":\"A single red maple leaf resting on a plain white background.\",\"type\":\"text\"}], \"duration\": 5, \"ratio\": \"16:9\", \"resolution\": \"768P\"}" +``` + + +## Schema + +### 输入 + + + 是否为输出添加 AIGC 水印。默认为 false。 + + + + 可选。用于在质询验证之后接收任务状态变更的 URL。 + + + + 驱动生成的内容项。必须包含一个非空 text 项;可选添加 first_frame/last_frame 图像或 reference_* 媒体。 + + + + 音频来源。audio_url 项必填。 + + + + 可公开访问的 URL、mm_file://\{file_id} 引用或 data URI。 + + + + 图像来源。image_url 项必填。 + + + + 可公开访问的 URL、mm_file://\{file_id} 引用或 data URI。 + + + + 媒体项的角色。可选值:first_frame、last_frame、reference_image、reference_video、reference_audio、base_video。关键帧角色与 reference_* 角色在同一请求中互斥;base_video 标记视频重生成请求的来源视频。 + + + + 提示词文本。每个请求必须且只能包含一个非空 text 项。 + + + + 内容项类型。可选值:text、image_url、video_url、audio_url。 + + + + 视频来源。video_url 项必填。 + + + + 可公开访问的 URL、mm_file://\{file_id} 引用或 data URI。 + + + + 视频时长,单位为秒,5 到 15。 + + + + 模型 ID。可选值:MiniMax-H3。Router 调用方可以省略此字段或发送 null;Router 会在向提供商分发之前注入由请求路径所选择的模型。 + + + + 比例。可选值:adaptive(默认)、21:9、16:9、4:3、1:1、3:4、9:16。文生视频时必填且不能为 adaptive;首帧或尾帧生成时会忽略该字段(按 adaptive 处理)。 + + + + 视频分辨率。可选值:2K、768P。 + + + + 随机种子,取值范围 [-1, 2^32 - 1];省略或为 -1 时表示随机。 + + 格式:`int64` + + +根据 Router 在 `GET /v2/models/minimax/minimax-h3/openapi.json` 提供的 schema 生成,这与 Router 在请求到达提供商之前用于校验调用的文档是同一份。 + +### 输出 + + + 一个 Minimax V2 视频生成任务。 + + + + 已生成的输出;当 status 为已成功时存在。 + + + + 由成功的 h3_context_ir 任务产生的增强视频提示词。 + + + + 已生成 MP4 的限时 URL。可再次查询以获取刷新后的 URL。 + + + + 已生成视频的时长,单位为秒。 + + + + status 为失败时的错误详情;包含 code 和 message。 + + + + 任务 ID。 + + + + 该任务使用的模型。 + + + + 已生成视频的实际比例。 + + + + 已生成视频的分辨率。 + + + + 任务状态。可选值:已执行、运行中、已成功、失败、已取消、已过期。 + + + + 任务的类型。 + + + + 为该任务记录的使用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "content": [ + { + "text": "A single red maple leaf resting on a plain white background.", + "type": "text" + } + ], + "duration": 5, + "ratio": "16:9", + "resolution": "768P" +} +``` + +### 输出 + +```json +{ + "task": { + "content": { + "url": "https://example.invalid/minimax/minimax-h3/generated.mp4" + }, + "duration": 6, + "id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "model": "MiniMax-H3", + "ratio": "16:9", + "resolution": "768P", + "status": "succeeded", + "usage": { + "output_seconds": 6, + "total_seconds": 6 + } + } +} +``` + + + diff --git a/zh/development/comfy-router/models/moonvalley/image-to-video/code.mdx b/zh/development/comfy-router/models/moonvalley/image-to-video/code.mdx new file mode 100644 index 000000000..915418894 --- /dev/null +++ b/zh/development/comfy-router/models/moonvalley/image-to-video/code.mdx @@ -0,0 +1,186 @@ +--- +title: "使用 Comfy Router 进行图生视频" +description: "通过 Comfy Router 调用 moonvalley/image-to-video:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "图生视频" +translationSourceHash: b305fbdf +translationFrom: development/comfy-router/models/moonvalley/image-to-video/code.mdx +translationBlockHashes: + "_intro": 8fe7b0cf + "Quick start": 84eb9061 + "Schema": 3c90da48 + "Examples": bf5363d7 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/image-to-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +## `moonvalley/image-to-video` 的 API 参考 {#intro} + +`moonvalley/image-to-video` 的 API 参考,由 Moonvalley 的 Comfy Router 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `moonvalley/image-to-video` + +**端点:** `POST https://api.comfy.org/v2/models/moonvalley/image-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/image-to-video", + { + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/image-to-video", { + image_url: "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + prompt_text: "a single red maple leaf falling onto still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/image-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image_url\": \"https://yavuzceliker.github.io/sample-images/image-1021.jpg\", \"prompt_text\": \"a single red maple leaf falling onto still water\"}" +``` + + +## Schema + +### 输入 + + + + + + + + + + + 用于控制生成的引导缩放 + + 格式:`float` + + + + 生成视频的高度,单位为像素 + + + + 负面提示词文本 + + + + 用于生成的随机种子(默认:随机) + + + + 去噪步数 + + + + 是否使用负面提示词 + + + + 生成视频的宽度,单位为像素 + + + + + + + + + + + + + + +本内容根据 Router 在 `GET /v2/models/moonvalley/image-to-video/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 用于校验调用的文档相同。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "image_url": "https://yavuzceliker.github.io/sample-images/image-1021.jpg", + "prompt_text": "a single red maple leaf falling onto still water" +} +``` + +### 输出 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/moonvalley/text-to-image/code.mdx b/zh/development/comfy-router/models/moonvalley/text-to-image/code.mdx new file mode 100644 index 000000000..86d416cae --- /dev/null +++ b/zh/development/comfy-router/models/moonvalley/text-to-image/code.mdx @@ -0,0 +1,176 @@ +--- +title: "使用 Comfy Router 进行文生图" +description: "通过 Comfy Router 调用 moonvalley/text-to-image:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "文生图" +translationSourceHash: 55777613 +translationFrom: development/comfy-router/models/moonvalley/text-to-image/code.mdx +translationBlockHashes: + "_intro": 83954c03 + "Quick start": dc376960 + "Schema": 4c0ddc64 + "Examples": c0bc4eb5 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/text-to-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`moonvalley/text-to-image` 的 API 参考,由 Comfy Router 从 Moonvalley 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `moonvalley/text-to-image` + +**端点:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-image", + { + "prompt_text": "a single red maple leaf resting on still water", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-image", { + prompt_text: "a single red maple leaf resting on still water", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf resting on still water\"}" +``` + + +## Schema {#schema} + +### 输入 + + + + + + + + + + + 用于控制生成的引导缩放 + + 格式:`float` + + + + 生成视频的高度(像素) + + + + 负面提示词文本 + + + + 用于生成的随机种子(默认:随机) + + + + 去噪步数 + + + + 是否使用负面提示词 + + + + 生成视频的宽度(像素) + + + + + + + + + + +该内容由 Router 在 `GET /v2/models/moonvalley/text-to-image/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档完全一致。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "prompt_text": "a single red maple leaf resting on still water" +} +``` + +### 输出 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.png", + "prompt_text": "a single red maple leaf resting on still water", + "status": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/moonvalley/text-to-video/code.mdx b/zh/development/comfy-router/models/moonvalley/text-to-video/code.mdx new file mode 100644 index 000000000..5312eb46a --- /dev/null +++ b/zh/development/comfy-router/models/moonvalley/text-to-video/code.mdx @@ -0,0 +1,177 @@ +--- +title: "使用 Comfy Router 进行文生视频" +description: "通过 Comfy Router 调用 moonvalley/text-to-video:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "文生视频" +translationSourceHash: 068da6d0 +translationFrom: development/comfy-router/models/moonvalley/text-to-video/code.mdx +translationBlockHashes: + "_intro": 4d524231 + "Quick start": 535a6274 + "Schema": 5aee2bd6 + "Examples": e66695b1 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/text-to-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`moonvalley/text-to-video` 的 API 参考,由 Comfy Router 提供,来自 Moonvalley。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `moonvalley/text-to-video` + +**端点:** `POST https://api.comfy.org/v2/models/moonvalley/text-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/text-to-video", + { + "prompt_text": "a single red maple leaf", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/text-to-video", { + prompt_text: "a single red maple leaf", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/text-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"prompt_text\": \"a single red maple leaf\"}" +``` + + +## Schema {#schema} + +### 输入 + + + + + + + + + + + 用于控制生成过程的引导缩放 + + 格式:`float` + + + + 所生成视频的高度,单位为像素 + + + + 负面提示词文本 + + + + 用于生成的随机种子(默认:随机) + + + + 去噪步数 + + + + 是否使用负面提示词 + + + + 所生成视频的宽度,单位为像素 + + + + + + + + + + +该内容根据 Router 在 `GET /v2/models/moonvalley/text-to-video/openapi.json` 提供的 schema 生成,这也正是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "prompt_text": "a single red maple leaf" +} +``` + +### 输出 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx b/zh/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx new file mode 100644 index 000000000..31d02c846 --- /dev/null +++ b/zh/development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx @@ -0,0 +1,206 @@ +--- +title: "将视频转视频调整大小与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 moonvalley/video-to-video-resize:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "视频转视频调整大小" +translationSourceHash: dd5bc810 +translationFrom: development/comfy-router/models/moonvalley/video-to-video-resize/code.mdx +translationBlockHashes: + "_intro": 3fbe838b + "Quick start": 84228377 + "Schema": eacf1159 + "Examples": c8034df3 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/video-to-video-resize.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video-resize` 的 API 参考文档,由 Comfy Router 提供,来自 Moonvalley。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `moonvalley/video-to-video-resize` + +**端点:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video-resize` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video-resize", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video-resize", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video-resize \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## 架构 + +### 输入 + + + 视频控制支持的类型 + + 可能的值:`motion_control`、`pose_control` + + + + 控制图像的 URL + + + + + + + + + + + + 运动控制的强度 + + 格式:`int32` + + + + 用于生成控制的引导缩放 + + 格式:`float` + + + + 负面提示词文本 + + + + 用于生成的随机种子(默认:随机) + + + + 去噪步数 + + + + 是否使用负面提示词 + + + + 描述要生成的视频 + + + + 控制视频的 URL + + + + 可选的用于通知的 webhook URL + + + + + + + + + + + + + + +该文档由 Router 在 `GET /v2/models/moonvalley/video-to-video-resize/openapi.json` 提供的架构生成,也是请求到达提供商之前 Router 用来校验调用的同一份文档。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 输出 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + diff --git a/zh/development/comfy-router/models/moonvalley/video-to-video/code.mdx b/zh/development/comfy-router/models/moonvalley/video-to-video/code.mdx new file mode 100644 index 000000000..26c607aba --- /dev/null +++ b/zh/development/comfy-router/models/moonvalley/video-to-video/code.mdx @@ -0,0 +1,197 @@ +--- +title: "通过 Comfy Router 使用视频转视频" +description: "通过 Comfy Router 调用 moonvalley/video-to-video:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "视频转视频" +translationSourceHash: e80ad202 +translationFrom: development/comfy-router/models/moonvalley/video-to-video/code.mdx +translationBlockHashes: + "_intro": 878ec155 + "Quick start": c8c4b6a1 + "Schema": 139afe1d + "Examples": c8034df3 +--- +{/* GENERATED FILE. Generated from router-schemas/moonvalley/video-to-video.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`moonvalley/video-to-video` 的 API 参考文档,由 Comfy Router 提供,模型来自 Moonvalley。 + + + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `moonvalley/video-to-video` + +**端点:** `POST https://api.comfy.org/v2/models/moonvalley/video-to-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "moonvalley/video-to-video", + { + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("moonvalley/video-to-video", { + control_type: "motion_control", + prompt_text: "Apply motion control to enhance this video", + video_url: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/moonvalley/video-to-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"control_type\": \"motion_control\", \"prompt_text\": \"Apply motion control to enhance this video\", \"video_url\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## Schema {#schema} + +### 输入 + + + 支持的视频控制类型 + + 可选值:`motion_control`、`pose_control` + + + + 控制图像的 URL + + + + + + + + + + + + 运动控制的强度 + + 格式:`int32` + + + + 生成控制的引导缩放 + + 格式:`float` + + + + 负面提示词文本 + + + + 生成的随机种子(默认:随机) + + + + 去噪步数 + + + + 是否使用负面提示词 + + + + 描述要生成的视频 + + + + 控制视频的 URL + + + + 用于通知的可选 webhook URL + + +根据 Router 在 `GET /v2/models/moonvalley/video-to-video/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## 示例 + +### 输入 + +```json +{ + "control_type": "motion_control", + "prompt_text": "Apply motion control to enhance this video", + "video_url": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 输出 + +```json +{ + "id": "018f2c7a-4b1e-7c3d-9a05-6e2f8b41d0c9", + "output_url": "https://example.invalid/moonvalley/prompts/output.mp4", + "prompt_text": "a single red maple leaf falling onto still water", + "status": "completed" +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx b/zh/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx new file mode 100644 index 000000000..6a01c3121 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-4-1-mini/code.mdx @@ -0,0 +1,519 @@ +--- +title: "将 GPT 4.1 Mini 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-4.1-mini:端点、请求格式以及 Router 返回的响应。" +sidebarTitle: "GPT 4.1 Mini" +translationSourceHash: 87e60db3 +translationFrom: development/comfy-router/models/openai/gpt-4-1-mini/code.mdx +translationBlockHashes: + "_intro": 22aeae46 + "Quick start": 9da04428 + "Schema": b894ba56 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-4.1-mini.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-mini` 的 API 参考文档,由 Comfy Router 提供,模型来自 OpenAI。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `openai/gpt-4.1-mini` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 架构 + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是 Router 无法代为提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 插入一条系统(或开发者)消息,作为模型上下文中的第一项。 + + + + 响应所生成 token 数量的上限,包括可见输出 token 和推理 token。在 reasoning id 上,这一上限与隐藏的推理 token 共享,因此一个较小的值可能在出现任何可见文本之前就耗尽整个预算,这正是 reasoning 冒烟用例发送 1024、而 chat 用例只发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限 REASONING 层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;接受的键请参阅 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段是为了让发送它的调用方不会被拒绝,但在此接口上它不起作用:Router 会在派发之前将其置为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码该流,因此流式生成会被 OpenAI 计费,却无人计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列 reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 端会拒绝此参数。Router 不会替它们拒绝,关于两个层级为何共用同一 schema 的说明见本组件的注释,因此发送该参数的 reasoning 调用会由 OpenAI 自身的错误来应答。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择要使用的工具。可以是字符串模式,也可以是命名某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时采用的截断策略。与上面三种词汇表不同,这里的枚举确实会被强制执行,因为这两个值是 OpenAI 文档中记载的完整集合,且至今没有增长。显式的 `null` 仍然被接受,条件与上面的字段相同。 + + 可选值:`auto`、`disabled` + + + + token 用量封装结构。它出现在此契约中,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/gpt-4.1-mini/openapi.json` 提供的 schema 生成,也就是在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条 system(或 developer)消息插入到模型上下文的第一项。 + +与 `previous_response_id` 一起使用时,上一个 response 中的 instructions 不会延续到下一个 response。这使得在新的 response 中替换 system(或 developer)消息变得非常简单。 + + + + 一个 response 可生成的 token 数量上限,包含可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该 response 的模型 + + + + 控制 response 的随机性 + + 范围:`0` 到 `2` + + + + 通过 nucleus 采样控制 response 的多样性 + + 范围:`0` 到 `1` + + + + 用于模型 response 的截断策略。 +- `auto`:如果当前 response 及之前 response 的上下文超出模型的上下文窗口大小,模型将通过丢弃对话中间部分的输入项来截断 response,使其适应上下文窗口。 +- `disabled`(默认):如果模型 response 将超出模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 发送给模型的上一 response 的唯一 ID。使用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅支持 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中将哪些推理项回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅支持 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理力度。 +当前支持的值为 `low`、`medium` 和 `high`。降低推理力度可以让响应更快,并减少 response 中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有帮助。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该 response 的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有帮助。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出(Structured Outputs), +确保模型匹配你提供的 JSON schema。了解更多信息请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式, +确保模型生成的消息是合法的 JSON。对于支持 `json_schema` 的模型,优先使用 `json_schema`。 + + + + 约束模型 response 的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成 response 时应如何选择使用哪个(或哪些)工具。参阅 `tools` 参数了解如何指定模型可以调用的工具。 + + + + + + + + 模型 response 是否在后台运行。 + + + + 该 response 的计费信息。 + + + + 负责为该 response 付费的一方。 + + + + 该 Response 完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 该 Response 创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型生成 Response 失败时返回的错误对象。 + + + + 该 response 的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前文本中已出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核式补全)。 + + + + 此资源的对象类型,始终为 `response`。 + + 可能的值:`response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项,并假定它是包含模型生成内容的 + `assistant` 消息,不如考虑使用 SDK 中支持的 `output_text` 属性。 + + + + 仅供 SDK 使用的便捷属性,包含 `output` 数组中所有 `output_text` 项 + 聚合后的文本输出(如果有)。 + 在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前文本中出现对其进行惩罚。 + + + + 供 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + prompt 缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。可取 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分统计的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带相应的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 + 输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 所使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx b/zh/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx new file mode 100644 index 000000000..84efc1df6 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-4-1-nano/code.mdx @@ -0,0 +1,536 @@ +--- +title: "使用 GPT 4.1 Nano 与 Comfy Router" +description: "通过 Comfy Router 调用 openai/gpt-4.1-nano:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 4.1 Nano" +translationSourceHash: 189966b6 +translationFrom: development/comfy-router/models/openai/gpt-4-1-nano/code.mdx +translationBlockHashes: + "_intro": 815c8476 + "Quick start": dc2e7193 + "Schema": c551812f + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-4.1-nano.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1-nano` 的 API 参考文档,该模型由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-4.1-nano` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 模式 + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 模型的文本、图像或文件输入,用于生成响应。这是 Router 在此契约中唯一无法提供的字段,也是下方 `required` 中唯一的条目。 + + + + 将系统(或开发者)消息插入为模型上下文的第一项。 + + + + 为响应生成的 token 数量上限,包括可见输出 token 和推理 token。在推理类 id 上,此上限与隐藏的推理 token 共享,因此一个较小的值可能在产生任何可见文本之前就耗尽整个预算:这正是推理冒烟用例发送 1024,而对话用例只发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上,此字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也会以相同方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。对话层级的 id 会忽略它。 + + + + OpenAI 是否存储生成的响应以供后续检索。 + + + + 声明此字段是为了让发送它的调用方不被拒绝,但在此接口上它并不生效:Router 会在派发前将其固定为 `false`,因为它捕获的是提供商响应,而不是中继 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码该响应,因此流式生成会由 OpenAI 计费却无人计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限对话层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)会在 OpenAI 拒绝此参数。Router 不会替它们拒绝,原因见本组件关于两个层级共用同一模式的说明,因此发送该参数的推理调用会得到 OpenAI 自身的错误。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。既可以是一个字符串模式,也可以是一个指明某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限对话层级,适用条款与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 上下文超出模型窗口时的截断策略。与上述三种词表不同,此处的枚举确实会被强制执行,因为这两个值是 OpenAI 文档中记录的完整取值集合,且至今未曾增长。显式的 `null` 仍会被接受,适用条款与上文字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。此契约中包含它,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +本文档由 Router 在 `GET /v2/models/openai/gpt-4.1-nano/openapi.json` 提供的模式生成;在请求到达提供商之前,Router 也用同一份文档校验调用。### 输出 + + + 以系统(或开发者)消息的形式插入到模型上下文的第一个位置。 + +与 `previous_response_id` 一起使用时,上一个响应的 instructions +不会延续到下一个响应。这样就能在新响应中轻松 +替换系统(或开发者)消息。 + + + + 一次响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 至 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 至 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及之前响应的上下文超过 + 模型的上下文窗口大小,模型将通过丢弃对话中间部分的输入项, + 对响应进行截断以适应该上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口 + 大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 上一个响应的唯一 ID,用于发送给模型。可用它来 +创建多轮对话。了解更多关于 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的 +配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的 +推理投入程度。 +当前支持的值为 `low`、`medium` 和 `high`。降低 +推理投入程度可以加快响应速度,并减少响应中 +用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出, +从而确保模型与你提供的 JSON schema 匹配。更多信息请参阅 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,且无其他附加选项。 + +**不建议用于 gpt-4o 及更新模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,该模式 +可确保模型生成的消息是有效的 JSON。对于支持 `json_schema` +的模型,优先使用 `json_schema`。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。 +请参阅 `tools` 参数了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 该响应完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时存在。 + + + + 该响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的可读描述。 + + + + 根据新 token 在目前文本中已有的出现频率对其进行惩罚。 + + + + 此响应的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可以处理的内置工具调用总数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了受审核的补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型所生成内容的 + `assistant` 消息,不妨考虑使用 SDK 中支持的 + `output_text` 属性。 + + + + 仅限 SDK 使用的便捷属性,包含来自 `output` 数组中所有 +`output_text` 项的聚合文本输出(如果存在)。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前文本中出现来对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + prompt 缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 响应是否被存储以便之后通过 API 检索。 + + + + 按内置工具细分的使用量(token 和请求)。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网页搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都会附带一个关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入到缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[有关提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细细分。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已由 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-4-1/code.mdx b/zh/development/comfy-router/models/openai/gpt-4-1/code.mdx new file mode 100644 index 000000000..eba7c7770 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-4-1/code.mdx @@ -0,0 +1,515 @@ +--- +title: "将 GPT 4.1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-4.1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 4.1" +translationSourceHash: 2daeb5c5 +translationFrom: development/comfy-router/models/openai/gpt-4-1/code.mdx +translationBlockHashes: + "_intro": 9b48bb1c + "Quick start": 76b84915 + "Schema": b7d988d4 + "Examples": 67e6c8f1 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/gpt-4.1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4.1` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起同样的调用。 + +**模型 ID:** `openai/gpt-4.1` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-4.1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4.1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4.1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4.1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + 要在模型响应中包含的额外输出数据。 + + + + 传递给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的字段,也是下方 `required` 中唯一的条目。 + + + + 将一条系统(或开发者)消息插入到模型上下文的第一个位置。 + + + + 为响应生成的 token 数量上限,包括可见的输出 token 和推理 token。在推理类 id 上,该上限与隐藏的推理 token 共享,因此一个较小的值可能在任何可见文本产生之前就耗尽整个预算,这也是推理冒烟用例发送 1024 而聊天用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上此字段是可选的,Router 会用 `{model}` 路径段填充它;显式的 `null` 也会以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参见 OpenAI 的推理指南。聊天层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段是为了让发送它的调用者不被拒绝,但它在此接口上是无效的:Router 会在分发之前将其确定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码后者,因此流式生成会被 OpenAI 计费而无人计量。如果需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限聊天层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 会拒绝此参数。Router 不会替它们拒绝,原因见本组件关于两个层级共用同一 schema 的说明,因此发送它的推理调用会由 OpenAI 自身的错误来应答。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,或是指定某个工具的对象。 + + + + 模型可调用的工具定义。Router 不会收窄工具分类;可接受的形状请参见 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限聊天层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时的截断策略。与上面三种取值集合不同,这里的枚举确实会被强制执行,因为这两个值是 OpenAI 文档记载的完整集合,且并未增长。显式的 `null` 仍会被接受,条件与上面各字段相同。 + + 可能的值:`auto`、`disabled` + + + + Token 用量封装。此契约中存在该字段,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用者没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/gpt-4.1/openapi.json` 提供的 schema 生成,也就是它在请求到达提供商之前用于验证调用的同一份文档。### 输出 + + + 将系统(或开发者)消息作为第一项插入模型的上下文中。 + +当与 `previous_response_id` 一起使用时,上一个响应的 instructions 不会延续到下一个响应。这使得在新响应中替换系统(或开发者)消息变得非常简单。 + + + + 响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应以及之前响应的上下文超出模型的上下文窗口大小,模型将通过丢弃对话中间位置的输入项来截断响应,以适应该上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用它来创建多轮对话。了解更多关于[会话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅适用于 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅适用于 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。目前支持的值为 `low`、`medium` 和 `high`。降低推理投入可以加快响应速度,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。可为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。可为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出格式的对象。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出,确保模型会匹配你提供的 JSON schema。更多信息请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不含任何附加选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,推荐使用 `json_schema`。 + + + + 约束模型响应的详细程度。可为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。有关如何指定模型可调用的工具,请参阅 `tools` 参数。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 该 Response 完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 该 Response 创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型生成 Response 失败时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前文本中已出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 单次响应中可处理的内置工具调用总数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于 + 模型的响应。 +- 与其访问 `output` 数组中的第一项并 + 假定它是包含模型生成内容的 `assistant` 消息, + 你可以考虑使用 SDK 中支持的 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含来自 `output` 数组中所有 `output_text` 项(如果存在)的聚合文本输出。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已出现在目前文本中对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 是否存储响应,以便之后通过 API 获取。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都带有对应的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[有关提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 最终用户的弃用标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-4o/code.mdx b/zh/development/comfy-router/models/openai/gpt-4o/code.mdx new file mode 100644 index 000000000..9d28fea04 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-4o/code.mdx @@ -0,0 +1,515 @@ +--- +title: "将 GPT 4o 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-4o:endpoint、请求形状以及 Router 返回的响应。" +sidebarTitle: "GPT 4o" +translationSourceHash: 67ef0c26 +translationFrom: development/comfy-router/models/openai/gpt-4o/code.mdx +translationBlockHashes: + "_intro": d4463f47 + "Quick start": d94685bf + "Schema": a6d45cf8 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-4o.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-4o` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起同样的调用。 + +**Model ID:** `openai/gpt-4o` + +**Endpoint:** `POST https://api.comfy.org/v2/models/openai/gpt-4o` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-4o", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-4o", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-4o \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 在模型上下文的最前面插入一条 system(或 developer)消息。 + + + + 为响应生成的 token 数量上限,包含可见输出 token 和推理 token。在推理类 id 上,这一上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽全部预算:这正是推理冒烟用例发送 1024、而聊天用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也会以同样的方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。聊天层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以便之后检索。 + + + + 声明此字段是为了让发送它的调用方不被拒绝,但它在此接口上是无效的:Router 会在派发之前将其固定为 `false`,因为它捕获的是提供商的响应,而不是转发 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码该流,因此流式生成会被 OpenAI 计费,却无人计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限聊天层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 处会拒绝该参数。Router 不会替它们拒绝,参见本组件关于两个层级为何共用同一 Schema 的说明。因此,发送该参数的推理调用会收到 OpenAI 自身的错误。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限聊天层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时采用的截断策略。与上方三个词表不同,这里的枚举是强制执行的,因为这两个值是 OpenAI 文档中的完整集合,且至今没有扩充。显式的 `null` 仍被接受,条件与其上方的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。该契约中存在此字段,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +根据 Router 在 `GET /v2/models/openai/gpt-4o/openapi.json` 提供的 Schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将系统(或开发者)消息作为第一个条目插入模型的上下文中。 + +当与 `previous_response_id` 一起使用时,上一个响应中的指令不会延续到下一个响应。这样可以轻松地在新的响应中替换系统(或开发者)消息。 + + + + 响应可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果此响应及之前的响应的上下文超过模型的上下文窗口大小,模型将通过丢弃对话中间的输入条目来截断响应,以适应上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型的上一个响应的唯一 ID。使用它可创建多轮对话。了解更多关于 + [对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅适用于 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制后续轮次中哪些推理条目会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅适用于 o 系列模型** + +限制[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。目前支持的值为 `low`、`medium` 和 `high`。降低推理投入程度可以加快响应速度,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出(Structured Outputs),确保模型与您提供的 JSON schema 匹配。请在 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不推荐用于 gpt-4o 及更新模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,该模式可确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,优先使用它。 + + + + 限制模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用哪个(或哪些)工具。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此 Response 完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时才会出现。 + + + + 此 Response 创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成 Response 失败时返回的错误对象。 + + + + 该响应的错误代码。可能的值:`server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 人类可读的错误描述。 + + + + 根据 token 在当前文本中已有的出现频率对新 token 进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总数上限。 + + + + 可附加到响应的键值对集合。 + + + + 如果请求了审核后的补全,则为响应输入和输出的审核结果。 + + + + 此资源的对象类型,始终设置为 `response`。 + + 可能的值:`response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假设它是包含模型生成内容的 `assistant` 消息, + 不如在 SDK 支持的情况下考虑使用 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项的 +聚合文本输出(如果有)。Python 和 JavaScript SDK +支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已出现在当前文本中对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应以优化缓存命中率。替代 `user` 字段。 + + + + prompt 缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 是否存储响应以便稍后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx new file mode 100644 index 000000000..24abd86c8 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-5-pro/code.mdx @@ -0,0 +1,512 @@ +--- +title: "使用 GPT 5.5 Pro 搭配 Comfy Router" +description: "通过 Comfy Router 调用 openai/gpt-5.5-pro:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 5.5 Pro" +translationSourceHash: b3895b99 +translationFrom: development/comfy-router/models/openai/gpt-5-5-pro/code.mdx +translationBlockHashes: + "_intro": fa1f76cc + "Quick start": 5444bbc0 + "Schema": cdf599a5 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.5-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.5-pro` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-5.5-pro` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 将系统(或开发者)消息插入模型上下文的第一个条目。 + + + + 响应用生成的 token 数量的上限,包括可见输出 token 和推理 token。在推理 id 上,此上限与隐藏的推理 token 共享,因此较小的值可能会在任何可见文本之前耗尽整个预算。这就是为什么推理冒烟测试用例发送 1024,而聊天用例发送 16。 + + Range: `1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上此字段为可选,Router 会从 `{model}` 路径段填充它;显式 `null` 也会以相同方式替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;有关接受的键,请参阅 OpenAI 的推理指南。聊天层级 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明它以便发送它的调用者不会被拒绝,但在该表面上无效:Router 在分发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是中继 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码此类响应,因此流式生成会被 OpenAI 计费,但无人计量。如果你需要流,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限聊天层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 会拒绝此参数。Router 不会为它们拒绝它。请参阅此组件关于为什么两个层级共享一个 schema 的说明。因此,发送它的推理调用会由 OpenAI 自身的错误来应答。 + + Range: `0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是命名工具的对象。 + + + + 模型可以调用的工具定义。Router 不会缩小工具分类范围;有关接受的形状,请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限聊天层级,条款与 `temperature` 相同。 + + Range: `0` 到 `1` + + + + 当上下文超出模型窗口时的截断策略。这里的枚举是强制执行的,与上面的三个词汇表不同,因为这两个值是 OpenAI 文档中记载的完整集合,并且没有增长。显式 `null` 仍然被接受,条款与上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + Token 使用量封装。出现在此合约中,因为 v1 操作在请求体上声明了它;OpenAI 在响应上填充它,因此调用者没有理由发送它。 + + +根据 Router 在 `GET /v2/models/openai/gpt-5.5-pro/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前验证调用所依据的同一文档。### 输出 + + + 将系统(或开发者)消息作为模型上下文中的第一项插入。 + +当与 `previous_response_id` 一起使用时,上一条回复中的 instructions 不会延续到下一条回复。这使得在新回复中替换系统(或开发者)消息变得简单。 + + + + 一次回复可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成回复的模型 + + + + 控制回复中的随机性 + + 范围:`0` 到 `2` + + + + 通过 nucleus 采样控制回复的多样性 + + 范围:`0` 到 `1` + + + + 用于模型回复的截断策略。 +- `auto`:如果本次回复及之前回复的上下文超出模型的上下文窗口大小,模型将通过丢弃对话中间的输入项来截断回复,以适应上下文窗口。 +- `disabled`(默认):如果模型回复将超出模型的上下文窗口大小,请求将以 400 错误失败。 + + 可选值:`auto`、`disabled` + + + + 模型上一条回复的唯一 ID。使用它来创建多轮对话。了解更多[对话状态](https://platform.openai.com/docs/guides/conversation-state)。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制后续轮次中哪些推理项会被渲染回模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理力度。当前支持的值为 `low`、`medium` 和 `high`。降低推理力度可以让回复更快,并减少回复中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:**请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该回复的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 将启用结构化输出(Structured Outputs),确保模型匹配你提供的 JSON schema。请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不带任何额外选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持它的模型,优先使用 `json_schema`。 + + + + 约束模型回复的详细程度。为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成回复时应如何选择要使用的工具(一个或多个)。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型回复是否在后台运行。 + + + + 回复的计费信息。 + + + + 负责为该回复付费的一方。 + + + + 此 Response 完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时存在。 + + + + 此 Response 创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型未能生成 Response 时返回的错误对象。 + + + + 该回复的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 错误的人类可读描述。 + + + + 根据新 token 在目前已生成文本中的出现频率对其进行惩罚。 + + + + 此响应的唯一标识符。 + + + + 响应不完整的原因详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可处理的内置工具调用总数上限。 + + + + 可附加到响应的键值对集合。 + + + + 若请求了审核补全,则返回响应输入和输出的审核结果。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成内容的 `assistant` 消息,你可以考虑在 SDK 支持的情况下使用 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,若存在,则包含 `output` 数组中所有 `output_text` 项的聚合文本输出。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已出现在目前文本中对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应以优化缓存命中率。替代 `user` 字段。 + + + + 提示词缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 用于帮助检测可能违反 OpenAI 使用政策的应用程序用户的稳定标识符。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 是否存储响应以便稍后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都带有相应的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[更多关于提示缓存的内容](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细细分。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已由 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-5/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-5/code.mdx new file mode 100644 index 000000000..48f4993f5 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-5/code.mdx @@ -0,0 +1,535 @@ +--- +title: "将 GPT 5.5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-5.5:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 5.5" +translationSourceHash: 1fb68933 +translationFrom: development/comfy-router/models/openai/gpt-5-5/code.mdx +translationBlockHashes: + "_intro": c27b2d4d + "Quick start": 64f51e79 + "Schema": 981b58df + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.5` 的 API 参考文档,由 Comfy Router 提供,模型来自 OpenAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起相同的调用。 + +**模型 ID:** `openai/gpt-5.5` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 架构 + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 将系统(或开发者)消息插入为模型上下文中的第一项。 + + + + 为响应生成的 token 数量上限,包括可见输出 token 和推理 token。在推理 id 上,此上限与隐藏推理 token 共享,因此较小的值可能在任何可见文本之前就耗尽整个预算,这就是推理冒烟用例发送 1024,而聊天用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上此字段是可选(OPTIONAL)的,Router 会从 `{model}` 路径段填充它;显式 `null` 也会以相同方式替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅推理层级(REASONING TIER ONLY)。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;接受的键请参阅 OpenAI 的推理指南。聊天层级 id 会忽略它。 + + + + OpenAI 是否存储生成的响应以供以后检索。 + + + + 声明该项是为了发送它的调用者不会被拒绝,但在此接口上无实际作用(INERT):Router 在分发前将其固定为 `false`,因为它捕获的是提供商响应,而不是中继 `text/event-stream`;openAiResponsesProxy 的 ModifyResponse 无法解码后者,因此流式生成会被 OpenAI 计费,却无人计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅聊天层级(CHAT TIER ONLY):o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 会拒绝此参数。Router 不会替它们拒绝它,原因见本组件关于两个层级共用同一架构的说明,因此发送该参数的推理调用会由 OpenAI 自己的错误来应答。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择要使用的工具。可以是字符串模式,也可以是指定工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅聊天层级(CHAT TIER ONLY),条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超过模型窗口时的截断策略。与上面三种词汇表不同,这里的枚举会被强制执行,因为这两个值是 OpenAI 文档中的完整集合,且尚未增长。显式 `null` 仍会被接受,条件与上面的字段相同。 + + 可能值:`auto`、`disabled` + + + + token 使用量信封。此契约中包含它,是因为 v1 操作在请求体上声明了它;OpenAI 在响应上填充它,因此调用者没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/gpt-5.5/openapi.json` 提供的架构生成,这与其在请求到达提供商之前用于验证调用的文档相同。### 输出 + + + 将一条系统(或开发者)消息作为第一条内容插入模型的上下文中。 + +与 `previous_response_id` 一起使用时,上一个响应的 instructions 不会 +延续到下一个响应。这使得在新响应中替换系统(或开发者)消息变得 +非常简单。 + + + + 一次响应可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及之前响应的上下文超过 + 模型的上下文窗口大小,模型将截断 + 响应以适应上下文窗口,方式是丢弃对话 + 中间的输入项。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口 + 大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。使用它来 +创建多轮对话。进一步了解 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)。 + + + + **仅限 o 系列模型** + + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的 +配置选项。 + + + + 控制哪些推理项会在后续轮次中回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning) +的推理投入程度。 +当前支持的值为 `low`、`medium` 和 `high`。降低 +推理投入可以加快响应速度,并减少响应中 +用于推理的 token 数。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:**请改用 `summary`。 + +模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出, +从而确保模型与您提供的 JSON schema 匹配。进一步了解 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,且不带任何附加选项。 + +**不建议用于 gpt-4o 及更新模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,该模式 +确保模型生成的消息是有效的 JSON。对于支持该功能的模型, +首选使用 `json_schema`。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high`。 + + + + 模型在生成响应时应如何选择要使用的工具。有关如何指定模型 +可以调用哪些工具,请参阅 `tools` 参数。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 该响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 该响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在迄今为止的文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终为 `response`。 + + Possible values: `response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成内容的 `assistant` 消息,你可以考虑使用 SDK 中支持的 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如果存在)。 +支持 Python 和 JavaScript SDK。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在迄今为止的文本中出现对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 用于帮助检测可能违反 OpenAI 使用政策的应用程序用户的稳定标识符。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都附带关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、输出 token 的细分以及使用的 token 总数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[更多关于提示缓存的内容](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细细分。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 弃用的最终用户标识符。已由 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx new file mode 100644 index 000000000..ae4ce1a94 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-6-luna/code.mdx @@ -0,0 +1,534 @@ +--- +title: "将 GPT 5.6 Luna 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-5.6-luna:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 5.6 Luna" +translationSourceHash: f0b3c793 +translationFrom: development/comfy-router/models/openai/gpt-5-6-luna/code.mdx +translationBlockHashes: + "_intro": f0ae7ed0 + "Quick start": c4c0a28f + "Schema": a166f717 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.6-luna.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-luna` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-5.6-luna` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-luna` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-luna", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-luna", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-luna \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要在模型响应中包含的附加输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下方 `required` 中的唯一条目。 + + + + 将一条 system(或 developer)消息插入为模型上下文中的第一项。 + + + + 为响应生成的 token 数量上限,包括可见输出 token 和推理 token。在推理 id 上,该上限与隐藏的推理 token 共用,因此较小的值可能在产生任何可见文本之前就耗尽整个预算,这正是推理冒烟用例发送 1024,而对话用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上,此字段是可选的,Router 会从 `{model}` 路径段填充它;显式传入的 `null` 也以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;接受的键请参阅 OpenAI 的推理指南。对话层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供之后检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但它在此接口上不生效:Router 会在派发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码这种响应,因此流式生成会被 OpenAI 计费,却不会被任何人计量。如果需要流式响应,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限对话层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)会在 OpenAI 端拒绝此参数。Router 不会替它们拒绝该参数,关于两个层级为何共用同一个 schema,请参阅本组件的说明,因此发送该参数的推理调用会由 OpenAI 自身的错误来作答。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择要使用的工具。可以是字符串模式,也可以是指定某个工具的对象。 + + + + 模型可调用的工具定义。Router 不会收窄工具分类;接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限对话层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时使用的截断策略。与上面三个词汇表不同,这里的枚举确实会被强制校验,因为这两个值是 OpenAI 文档中记录的完整集合,且至今没有增加。显式传入的 `null` 仍然会被接受,条件与它上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + Token 用量封装。此契约中存在该字段,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。 + + +本文档基于 Router 在 `GET /v2/models/openai/gpt-5.6-luna/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前 Router 用来校验调用的同一份文档。### 输出 + + + 将系统(或开发者)消息作为模型上下文中的第一项插入。 + +与 `previous_response_id` 一起使用时,上一个响应中的 instructions 不会延续到下一个响应。这样可以轻松地在新响应中替换系统(或开发者)消息。 + + + + 响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果此响应及此前响应的上下文超出 + 模型的上下文窗口大小,模型将通过丢弃会话中间 + 的输入项来截断响应,使其适应上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文 + 窗口大小,请求将以 400 错误失败。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用于 +创建多轮对话。详细了解 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被渲染回模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +限制[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理强度。 +目前支持的值为 `low`、`medium` 和 `high`。降低 +推理强度可以让响应更快,并在响应中减少 +用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和 +理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和 +理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个对象,用于指定模型必须输出的格式。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出, +确保模型匹配你提供的 JSON schema。请参阅 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)了解更多信息。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式, +确保模型生成的消息是有效的 JSON。对于支持 +`json_schema` 的模型,建议优先使用它。 + + + + 限制模型响应的详细程度。取值为 `low`、`medium` 或 `high`。 + + + + 模型在生成响应时应如何选择要使用的工具。有关如何指定 +模型可调用的工具,请参阅 `tools` 参数。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前文本中已出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应的键值对集合。 + + + + 响应输入和输出的审核结果(若请求了审核补全)。 + + + + 此资源的对象类型,始终为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于 + 模型的响应。 +- 与其访问 `output` 数组中的第一项并 + 假设它是包含模型生成内容的 `assistant` 消息, + 不如考虑使用 SDK 中支持的 + `output_text` 属性。 + + + + 仅限 SDK 的便捷属性,包含 `output` 数组中所有 `output_text` 项 + 聚合而成的文本输出(如果存在)。 + 在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前文本中出现对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定标识符,用于帮助检测可能违反 OpenAI 使用政策的应用用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带相关的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 + [详细了解提示缓存](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的终端用户标识符。已由 `safety_identifier` 和 `prompt_cache_key` 取代。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx new file mode 100644 index 000000000..c4c451601 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-6-sol/code.mdx @@ -0,0 +1,515 @@ +--- +title: "通过 Comfy Router 使用 GPT 5.6 Sol" +description: "通过 Comfy Router 调用 openai/gpt-5.6-sol:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 5.6 Sol" +translationSourceHash: cdc29939 +translationFrom: development/comfy-router/models/openai/gpt-5-6-sol/code.mdx +translationBlockHashes: + "_intro": 35433a02 + "Quick start": 185aa94b + "Schema": bc45a323 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.6-sol.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-sol` 的 API 参考文档,由 Comfy Router 提供,来源为 OpenAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `openai/gpt-5.6-sol` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-sol` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-sol", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-sol", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-sol \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 发送给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 唯一无法提供的字段,也是下方 `required` 中的唯一条目。 + + + + 将一条 system(或 developer)消息插入为模型上下文的第一项。 + + + + 为响应生成的 token 数量上限,包括可见输出 token 和推理 token。在 reasoning id 上,这个上限与隐藏的推理 token 共用,因此一个很小的值可能在产生任何可见文本之前就耗尽整个预算,这也是推理冒烟用例发送 1024、而 chat 用例只发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上此字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限 REASONING 层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参见 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以便后续检索。 + + + + 声明它只是为了发送它的调用方不会被拒绝,但在此接口上它是无效的:Router 会在派发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码后者,所以流式生成会被 OpenAI 计费,却没有人计量。如果需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 处会拒绝此参数。Router 不会替它们拒绝,参见本组件关于两个层级为何共用一个 schema 的说明,因此发送它的推理调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是一个字符串模式,也可以是一个命名某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具的类别范围;可接受的形状请参见 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,条款与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 上下文超出模型窗口时的截断策略。与上面三组词表不同,这里的枚举确实会被强制校验,因为这两个值就是 OpenAI 文档记载的完整集合,而且至今没有增加。显式的 `null` 仍会被接受,条款与它上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。此契约中包含它,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应上填充它,因此调用方没有理由发送它。 + + +从 Router 在 `GET /v2/models/openai/gpt-5.6-sol/openapi.json` 提供的 schema 生成,也就是在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条系统(或开发者)消息作为首个条目插入模型上下文中。 + +与 `previous_response_id` 一起使用时,上一个响应的 instructions 不会延续到下一个响应。这使得在新的响应中替换系统(或开发者)消息变得非常简单。 + + + + 一次响应可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 取值范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 取值范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及之前响应的上下文超过模型的上下文窗口大小,模型会通过丢弃对话中间位置的输入条目来截断响应,以适应该上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求会以 400 错误失败。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制后续轮次中哪些推理条目会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。当前支持的值有 `low`、`medium` 和 `high`。降低推理投入可以加快响应速度,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:**请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个对象,用于指定模型必须输出的格式。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出,可确保模型与您提供的 JSON schema 匹配。请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)了解更多信息。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,可确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,建议优先使用它。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(秒)。仅在状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(秒)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。可能的取值:`server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 错误的易读描述。 + + + + 根据新 token 目前在文本中出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的取值:`max_output_tokens`、`content_filter` + + + + 一次响应中可以处理的内置工具总调用次数上限。 + + + + 可附加到该响应的一组键值对。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型 - 始终设置为 `response`。 + + 可能的取值:`response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于 + 模型的响应。 +- 与其访问 `output` 数组中的第一项并 + 假定它是包含模型所生成内容的 `assistant` 消息, + 不如考虑使用 SDK 中支持时的 `output_text` 属性。 + + + + 仅限 SDK 的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如果存在)。 + 在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在文本中出现来对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 用于帮助检测可能违反 OpenAI 使用政策的应用程序用户的稳定标识符。 + + + + 用于服务该请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。可为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete`。 + + 可能的取值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 是否存储响应以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 已写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示词缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的终端用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx new file mode 100644 index 000000000..6ff7e8214 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-6-terra/code.mdx @@ -0,0 +1,515 @@ +--- +title: "将 GPT 5.6 Terra 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-5.6-terra:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "GPT 5.6 Terra" +translationSourceHash: a0f570b8 +translationFrom: development/comfy-router/models/openai/gpt-5-6-terra/code.mdx +translationBlockHashes: + "_intro": 494f4da2 + "Quick start": 89d7b6b4 + "Schema": 9d2248f1 + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.6-terra.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5.6-terra` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-5.6-terra` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5.6-terra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5.6-terra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5.6-terra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5.6-terra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要在模型响应中包含的额外输出数据。 + + + + 传给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法代为提供的唯一字段,也是下方 `required` 中的唯一条目。 + + + + 在模型上下文中插入一条系统(或开发者)消息,作为其中的第一项。 + + + + 单个响应可生成的 token 数量上限,包括可见的输出 token 和推理 token。在 reasoning 类 id 上,这一上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽整个预算,这也是 reasoning 冒烟用例发送 1024、而 chat 用例只发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段为其填值;显式的 `null` 也以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅适用于 REASONING 层级。推理模型的配置,例如 `{"effort": "medium"}`。该字段原样转发;可接受的键请参见 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储生成的响应以便后续检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但它在此接口上是无效的:Router 会在派发之前将其置为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码后者,因此流式生成会被 OpenAI 计费,却无人计量。如果需要流式输出,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列 reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 侧会拒绝该参数。Router 不会替它们拒绝,原因见本组件关于两个层级为何共用一套 schema 的说明,因此发送该参数的 reasoning 调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。该字段原样转发。 + + + + 模型应如何选择使用哪个工具。可以是一个字符串模式,也可以是一个命名某个工具的对象。 + + + + 模型可调用的工具定义。Router 不会收窄工具分类;可接受的形状请参见 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,适用与 `temperature` 相同的条件。 + + 范围:`0` 到 `1` + + + + 上下文超出模型窗口时的截断策略。与上面三组词表不同,这里的枚举确实会被强制执行,因为这两个值就是 OpenAI 文档中的完整集合,并且一直没有增长。显式 `null` 仍会被接受,条件与上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。本契约之所以包含它,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。 + + +本文档由 Router 在 `GET /v2/models/openai/gpt-5.6-terra/openapi.json` 提供的 schema 生成,也是在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将系统(或开发者)消息作为模型上下文中的第一项插入。 + +与 `previous_response_id` 一起使用时,上一个响应中的 instructions 不会延续到下一个响应。这使得在新响应中替换系统(或开发者)消息变得非常简单。 + + + + 响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应中的随机性 + + 范围:`0` 至 `2` + + + + 通过 nucleus sampling 控制响应的多样性 + + 范围:`0` 至 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果此响应以及之前响应的上下文超过模型的上下文窗口大小,模型将通过丢弃对话中间的输入项来截断响应,以适应上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可能的值:`auto`、`disabled` + + + + 上一个模型响应的唯一 ID。使用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中将哪些推理项传回模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理力度。当前支持的值有 `low`、`medium` 和 `high`。降低推理力度可以带来更快的响应,并减少响应中用于推理的 token 数量。 + + 可能的值:`low`、`medium`、`high` + + + + **弃用:**请改用 `summary`。 + +模型执行的推理摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可能的值:`auto`、`concise`、`detailed` + + + + 用于响应的推理模式。 + + + + 模型执行的推理摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可能的值:`auto`、`concise`、`detailed` + + + + + + + + 一个对象,用于指定模型必须输出的格式。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出,从而确保模型匹配你提供的 JSON schema。在[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,不带其他选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 可启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,优先使用它。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具。查看 `tools` 参数以了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 响应的计费信息。 + + + + 负责为该响应付费的主体。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型未能生成响应时返回的错误对象。 + + + + 该响应的错误代码。可能的值:`server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 错误的人类可读描述。 + + + + 根据新 token 在迄今文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可以处理的、对内置工具的总调用次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + 可能的值:`response` + + + + 模型生成的内容项数组。 + +- `output` 数组中项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假设它是包含模型所生成 + 内容的 `assistant` 消息,不如考虑使用 SDK 中支持的 + `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项 +聚合后的文本输出(如果存在)。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否出现在迄今文本中对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理该请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 是否存储该响应以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都带有对应的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及所用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[详细了解提示缓存](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-mini/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-mini/code.mdx new file mode 100644 index 000000000..28cc77d10 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-mini/code.mdx @@ -0,0 +1,535 @@ +--- +title: "在 Comfy Router 中使用 GPT 5 Mini" +description: "通过 Comfy Router 调用 openai/gpt-5-mini:端点、请求结构及 Router 返回的响应。" +sidebarTitle: "GPT 5 Mini" +translationSourceHash: 0b6b3734 +translationFrom: development/comfy-router/models/openai/gpt-5-mini/code.mdx +translationBlockHashes: + "_intro": 02cc5ae0 + "Quick start": 2fdb62ed + "Schema": ce5d9df5 + "Examples": 67e6c8f1 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/gpt-5-mini.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5-mini` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `openai/gpt-5-mini` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要在模型响应中额外包含的输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 唯一无法自行提供的字段,也是下方 `required` 中的唯一条目。 + + + + 在模型上下文的首项插入一条系统(或开发者)消息。 + + + + 为一次响应生成的 token 数量上限,包含可见输出 token 与推理 token。在推理 id 上,该上限与隐藏的推理 token 共享,因此一个较小的值可能在产生任何可见文本之前就耗尽整个预算。这也正是推理冒烟用例发送 1024,而聊天用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上,该字段为可选,Router 会用路径段 `{model}` 填充它;显式传入的 `null` 也会以同样的方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。聊天层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但在此接口上它是无效的:Router 会在派发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`。openAiResponsesProxy 的 ModifyResponse 无法解码这种响应,因此流式生成会被 OpenAI 计费,却无人计量。如果需要流式输出,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限聊天层级:o 系列的推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 侧会拒绝该参数。Router 不会替它们拒绝它(关于两个层级为何共用一个 schema,请见本组件的说明),因此发送该参数的推理调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考文档。 + + + + 核采样截断值。仅限聊天层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 上下文超出模型窗口时的截断策略。与上面三个词表不同,这里的枚举会被强制执行,因为这两个值是 OpenAI 文档记载的完整集合,且至今未扩展。显式的 `null` 仍被接受,条件与上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量外层结构。它出现在本契约中,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/gpt-5-mini/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条系统(或开发者)消息插入到模型上下文的第一项。 + +当与 `previous_response_id` 一起使用时,上一个响应的 instructions +不会延续到下一个响应。这使得在新的响应中替换系统(或开发者) +消息变得非常简单。 + + + + 响应可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及之前响应的上下文超出 + 模型的上下文窗口大小,模型将通过丢弃对话中间的 + 输入项来截断响应,以适应该上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口 + 大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。使用它来 +创建多轮对话。了解更多关于 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning) +的配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning) +的推理投入程度。 +当前支持的值为 `low`、`medium` 和 `high`。降低 +推理投入可以带来更快的响应,并减少响应中用于 +推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于响应的推理模式。 + + + + 模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出, +以确保模型会匹配你提供的 JSON schema。了解更多信息,请参阅 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,它 +可确保模型生成的消息是有效的 JSON。对于支持它的模型, +推荐使用 `json_schema`。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。 +请参阅 `tools` 参数,了解如何指定模型可以调用的 +工具。 + + + + + + + + 模型响应是否在背景中运行。 + + + + 响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型无法生成响应时返回的错误对象。 + + + + 响应的错误代码。Possible values: `server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 错误的人类可读描述。 + + + + 根据新 token 在目前文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成内容的 + `assistant` 消息,不如考虑使用 SDK 中支持的 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如果存在)。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前文本中出现过对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应以优化缓存命中率。替代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测应用中可能违反 OpenAI 使用政策的用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的 token 总数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5-nano/code.mdx b/zh/development/comfy-router/models/openai/gpt-5-nano/code.mdx new file mode 100644 index 000000000..4643ca572 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5-nano/code.mdx @@ -0,0 +1,517 @@ +--- +title: "将 GPT 5 Nano 与 Comfy Router 结合使用" +description: "通过 Comfy Router 调用 openai/gpt-5-nano:端点、请求格式以及 Router 返回的响应。" +sidebarTitle: "GPT 5 Nano" +translationSourceHash: dc593fc1 +translationFrom: development/comfy-router/models/openai/gpt-5-nano/code.mdx +translationBlockHashes: + "_intro": 406e2f65 + "Quick start": 4bffdfed + "Schema": d4c8c31e + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. 由 `pnpm code-pages:gen` 从 router-schemas/openai/gpt-5-nano.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5-nano` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `openai/gpt-5-nano` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5-nano` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5-nano", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5-nano", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5-nano \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 模式 + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 传给模型的文本、图像或文件输入,用于生成响应。这是该契约中 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 将一条系统(或开发者)消息插入到模型上下文的首位。 + + + + 响应所生成 token 数量的上限,包括可见的输出 token 和推理 token。在 reasoning id 上,该上限会与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽全部预算。这也是为什么 reasoning 冒烟用例发送 1024,而 chat 用例只发送 16。 + + 范围:`1` 至 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选(OPTIONAL),Router 会使用 `{model}` 路径段为其填充;显式传入的 `null` 也会以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段是为了让发送它的调用者不被拒绝,但它在此接口上并不生效:Router 会在派发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是中继 `text/event-stream`;而 openAiResponsesProxy 的 ModifyResponse 无法解码该格式,所以流式生成会被 OpenAI 计费却无人计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)会在 OpenAI 处拒绝该参数。Router 不会替它们拒绝,原因见本组件关于两个层级为何共用同一 schema 的说明,因此发送该参数的推理调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 至 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是一个字符串模式,也可以是一个指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,条件与 `temperature` 相同。 + + 范围:`0` 至 `1` + + + + 当上下文超出模型窗口时采用的截断策略。与上述三个词表不同,这里的枚举会被强制执行,因为这两个值就是 OpenAI 记录的完整集合,且至今没有增长。显式传入 `null` 仍然会被接受,条件与其上方的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量信封。该契约中存在此字段,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用者没有理由发送它。 + + +该文档由 Router 在 `GET /v2/models/openai/gpt-5-nano/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条系统(或开发者)消息作为第一项插入模型的上下文中。 + +与 `previous_response_id` 一起使用时,上一个响应中的 instructions 不会延续到下一个响应。这样在新响应中替换系统(或开发者)消息就变得非常简单。 + + + + 一个响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该响应的模型 + + + + 控制响应中的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果当前响应及之前响应的上下文超出模型的上下文窗口大小,模型将通过丢弃对话中间部分的输入项来截断响应,以适应上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。使用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。 +当前支持的值为 `low`、`medium` 和 `high`。降低推理投入程度可以加快响应速度,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出(Structured Outputs),确保模型匹配你提供的 JSON schema。了解更多请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,优先使用它。 + + + + 约束模型响应的详尽程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。 + +可能的值:`server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应上的一组键值对。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + 可能的值:`response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成内容的 + `assistant` 消息,不如考虑在 SDK 支持的情况下使用 + `output_text` 属性。 + + + + SDK 专用的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如果存在)。 + 在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否出现在目前文本中对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 是否存储响应以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带相关的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 + 输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已被 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-5/code.mdx b/zh/development/comfy-router/models/openai/gpt-5/code.mdx new file mode 100644 index 000000000..fdb7551c6 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-5/code.mdx @@ -0,0 +1,515 @@ +--- +title: "将 GPT 5 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 openai/gpt-5:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT 5" +translationSourceHash: 0ddfae5f +translationFrom: development/comfy-router/models/openai/gpt-5/code.mdx +translationBlockHashes: + "_intro": 3fb29b32 + "Quick start": 737bc1e9 + "Schema": 7298ec4e + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-5` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `openai/gpt-5` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-5", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-5", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 插入一条 system(或 developer)消息,作为模型上下文中的第一项。 + + + + 一次响应所生成 token 数量的上限,包含可见的输出 token 与推理 token。在 reasoning 类 id 上,这个上限会与隐藏的推理 token 共享,因此一个很小的值可能会在任何可见文本出现之前就耗尽整个预算。这也是为什么 reasoning 冒烟用例发送 1024,而 chat 用例只发送 16。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上,该字段是可选的,Router 会用 `{model}` 路径段填充它;显式的 `null` 也会以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限 REASONING 层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以便日后检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但在此接口上是无效的:Router 会在分发之前将它固定为 `false`,因为这里捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码它,因此流式生成会被 OpenAI 计费,却不会有任何一方进行计量。如果你需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列 reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 侧会拒绝该参数。Router 不会替它们拒绝,原因参见本组件中关于两个层级为何共用一份 schema 的说明。因此,发送该参数的 reasoning 调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具的类别范围;可接受的形状请参阅 OpenAI 的 Responses API 参考文档。 + + + + 核采样截断值。仅限 CHAT 层级,适用条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时的截断策略。与上述三组词汇表不同,这里的枚举值确实会被强制执行,因为这两个值就是 OpenAI 文档所记载的完整集合,且至今没有扩充。显式的 `null` 仍然会被接受,适用条件与它上方的字段相同。 + + 可能的值:`auto`、`disabled` + + + + Token 用量信封。该字段之所以出现在本契约中,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +根据 Router 在 `GET /v2/models/openai/gpt-5/openapi.json` 所提供的 schema 生成,该文档也正是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将系统(或开发者)消息作为模型上下文中的第一项插入。 + +当与 `previous_response_id` 一起使用时,上一条响应中的指令不会延续到下一条响应。这使得在新的响应中替换系统(或开发者)消息变得简单。 + + + + 响应可生成 token 数量的上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果当前响应和之前响应的上下文超过模型上下文窗口大小,模型将通过丢弃对话中间的输入项来截断响应以适应上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一条响应的唯一 ID。使用此参数创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的内容。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理努力程度。目前支持的值有 `low`、`medium` 和 `high`。降低推理努力程度可以使响应更快,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程非常有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程非常有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出格式的对象。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出,确保模型匹配你提供的 JSON schema。在[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不推荐用于 gpt-4o 及更新模型:** + +设置为 `{ "type": "json_object" }` 可启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持它的模型,优先使用 `json_schema`。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择使用哪个(或哪些)工具。参见 `tools` 参数以了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 响应的计费信息。 + + + + 负责为响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型无法生成响应时返回的错误对象。 + + + + 响应的错误代码。 +Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 错误的可读描述。 + + + + 根据文本中已出现的新 token 的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应不完整原因的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 单次响应中可处理的内置工具总调用次数上限。 + + + + 可附加到该响应的一组键值对。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成 + 内容的 `assistant` 消息,不如考虑使用 SDK 中支持的 + `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` +项聚合后的文本输出(如果存在)。Python 和 JavaScript SDK 均支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在文本中出现过对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 是否存储该响应以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求使用情况。 + + + + 图像生成工具的 token 使用情况。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络搜索工具的使用情况。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带关联的对数概率。 + + + + 表示 token 使用详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[提示词缓存的更多说明](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已被 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-6-astra/code.mdx b/zh/development/comfy-router/models/openai/gpt-6-astra/code.mdx new file mode 100644 index 000000000..f5eb9c6c5 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-6-astra/code.mdx @@ -0,0 +1,531 @@ +--- +title: "将 GPT 6 Astra 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-6-astra:端点、请求结构,以及 Router 返回的响应。" +sidebarTitle: "GPT 6 Astra" +translationSourceHash: 2ffdfbf2 +translationFrom: development/comfy-router/models/openai/gpt-6-astra/code.mdx +translationBlockHashes: + "_intro": cc898a3e + "Quick start": 1c601637 + "Schema": 5fa7484e + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-6-astra.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-6-astra` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `openai/gpt-6-astra` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-6-astra` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-6-astra", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-6-astra", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-6-astra \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + 要在模型响应中包含的附加输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下面 `required` 中唯一的条目。 + + + + 将一条系统(或开发者)消息插入为模型上下文中的第一项。 + + + + 响应所生成 token 数量的上限,包括可见的输出 token 和 reasoning token。在 reasoning id 上,这一上限与隐藏的 reasoning token 共用,因此一个较小的值可能在产生任何可见文本之前就耗尽整个预算,这就是 reasoning 冒烟用例发送 1024、而 chat 用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上,此字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也会以相同方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限 REASONING 层级。reasoning 模型的配置,例如 `{"effort": "medium"}`。原样转发;有关可接受的键,请参阅 OpenAI 的 reasoning 指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储生成的响应以便日后检索。 + + + + 声明此字段是为了让发送它的调用方不被拒绝,但它在此接口上无效:Router 会在分发之前将其固定为 `false`,因为它捕获的是提供商的响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码该格式,因此流式生成会被 OpenAI 计费,却无人计量。如果需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列 reasoning id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 处会拒绝此参数。Router 不会替它们拒绝,请参阅此组件中关于两个层级为何共用一个 schema 的说明,因此发送该参数的 reasoning 调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择要使用哪个工具。可以是一个字符串模式,也可以是一个指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会缩小工具的分类范围;有关可接受的形状,请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 上下文超出模型窗口时的截断策略。与上面三个词表不同,这里的枚举会被强制执行,因为这两个值是 OpenAI 记录的完整集合,且一直没有增长。显式的 `null` 仍然被接受,条件与其上方的字段相同。 + + 可能的值:`auto`、`disabled` + + + + Token 使用情况封装。此契约上存在该字段,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。 + + +根据 Router 在 `GET /v2/models/openai/gpt-6-astra/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条系统(或开发者)消息插入模型上下文的第一个位置。 + +当与 `previous_response_id` 一起使用时,先前响应中的 instructions 不会延续到下一个响应。这使得在新响应中替换系统(或开发者)消息变得很简单。 + + + + 一次响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 模型响应所使用的截断策略。 +- `auto`:如果本次响应以及先前响应的上下文超出 + 模型的上下文窗口大小,模型将通过丢弃对话 + 中间部分的输入项来截断响应,以适应该上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口 + 大小,请求将以 400 错误失败。 + + 可选值:`auto`、`disabled` + + + + 向模型提供的上一个响应的唯一 ID。使用它可以 +创建多轮对话。了解更多关于 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理强度。 +目前支持的值为 `low`、`medium` 和 `high`。降低 +推理强度可以使响应更快,并减少响应中用于 +推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:**请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和 +理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和 +理解模型的推理过程很有用。 +取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出, +从而确保模型会匹配你提供的 JSON schema。在 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,没有任何额外选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式, +它确保模型生成的消息是有效的 JSON。对于支持 +`json_schema` 的模型,优先使用 `json_schema`。 + + + + 约束模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的一个或多个工具。 +请参阅 `tools` 参数,了解如何指定模型可以 +调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时存在。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。可能的值:`server_error`、`rate_limit_exceeded`、`invalid_prompt`、`vector_store_timeout`、`invalid_image`、`invalid_image_format`、`invalid_base64_image`、`invalid_image_url`、`image_too_large`、`image_too_small`、`image_parse_error`、`image_content_policy_violation`、`invalid_image_mode`、`image_file_too_large`、`unsupported_image_media_type`、`empty_image_file`、`failed_to_download_image`、`image_file_not_found` + + + + 对错误的易于理解的描述。 + + + + 根据新 token 在目前文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 响应不完整的原因详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可以处理的内置工具总调用次数上限。 + + + + 可以附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + 可能的值:`response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型生成内容的 `assistant` 消息, + 不如在 SDK 支持的情况下考虑使用 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如果存在)。 + Python 和 JavaScript SDK 均支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前文本中出现过对其进行惩罚。 + + + + OpenAI 用它为相似的请求缓存响应,以优化缓存命中率。它取代了 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 响应是否会被存储,以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网页搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都附带关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[详细了解提示缓存](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细分类统计。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的终端用户标识符。已由 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-image-1-5/code.mdx b/zh/development/comfy-router/models/openai/gpt-image-1-5/code.mdx new file mode 100644 index 000000000..72979621a --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-image-1-5/code.mdx @@ -0,0 +1,249 @@ +--- +title: "将 GPT Image 1.5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-image-1.5:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT Image 1.5" +translationSourceHash: aa2b43fe +translationFrom: development/comfy-router/models/openai/gpt-image-1-5/code.mdx +translationBlockHashes: + "_intro": 2c69d7b3 + "Quick start": c7d735cc + "Schema": 7f073ccc + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-1.5.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-1.5` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行同样的调用。 + +**模型 ID:** `openai/gpt-image-1.5` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1.5", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1.5", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 架构 + +### 输入 + + + 背景透明度 + + 可选值:`transparent`、`opaque` + + + + 用于图像生成的模型(例如 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + 内容审核设置 + + 可选值:`low`、`auto` + + + + 要生成的图像数量(1-10)。 + + + + JPEG 或 WebP 的压缩级别(0-100) + + + + 输出图像的格式 + + 可选值:`png`、`webp`、`jpeg` + + + + 所需图像的文本描述 + + + + 生成图像的质量 + + 可选值:`low`、`medium`、`high`、`standard`、`hd` + + + + 图像数据的响应格式 + + 可选值:`url`、`b64_json` + + + + 图像的尺寸(例如 1024x1024、1536x1024、auto) + + + + 图像的风格。此操作所支持的 gpt-image 模型并不使用该参数;它曾是 dall-e-3 专属参数,而这些 id 已在 OpenAI 于 2026-05-12 停用它们时被废弃。 + + 可选值:`vivid`、`natural` + + + + 用于终端用户监控的唯一标识符 + + +根据 Router 在 `GET /v2/models/openai/gpt-image-1.5/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + + + + + Base64 编码的图像数据 + + + + 修订后的提示词 + + + + 图像的 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成图像的背景是不透明还是透明。仅在由 fal 提供服务的分支中填充,该分支会报告 `opaque`。 + + + + 生成完成时的 Unix 时间戳,以秒为单位。声明为 `int64`,因为当前时代的 epoch 值已十分接近 2^31,若不加格式标注,许多 SDK 生成器会为其生成 32 位字段。 + + 格式:`int64` + + + + `data[].b64_json` 中字节的编码格式(例如 `png`)。在由 fal 提供服务的分支中填充;在由 OpenAI 提供服务的分支中则不存在,此时调用方请求的 `output_format` 才是权威依据。 + + + + 生成实际运行时所处的质量档位。在由 fal 提供服务的分支中能够解析出该值时会填充;否则不存在。 + + + + 生成实际运行时所处的像素尺寸,格式为 `x`。在由 fal 提供服务的分支中能够解析出该值时会填充;否则不存在。 + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-image-1/code.mdx b/zh/development/comfy-router/models/openai/gpt-image-1/code.mdx new file mode 100644 index 000000000..f07725183 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-image-1/code.mdx @@ -0,0 +1,248 @@ +--- +title: "将 GPT Image 1 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-image-1:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "GPT Image 1" +translationSourceHash: 0fc531d9 +translationFrom: development/comfy-router/models/openai/gpt-image-1/code.mdx +translationBlockHashes: + "_intro": 4c0df6e6 + "Quick start": 77f219f1 + "Schema": 500e7e87 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-1` 的 API 参考,由 Comfy Router 提供,模型源自 OpenAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-image-1` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-image-1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-1", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-1", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## 数据结构 + +### 输入 + + + 背景透明度 + + 可能的值:`transparent`、`opaque` + + + + 用于图像生成的模型(例如 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + 内容审核设置 + + 可能的值:`low`、`auto` + + + + 要生成的图像数量(1-10)。 + + + + JPEG 或 WebP 的压缩级别(0-100) + + + + 输出图像的格式 + + 可能的值:`png`、`webp`、`jpeg` + + + + 对期望图像的文本描述 + + + + 已生成图像的质量 + + 可能的值:`low`、`medium`、`high`、`standard`、`hd` + + + + 图像数据的响应格式 + + 可能的值:`url`、`b64_json` + + + + 图像尺寸(例如 1024x1024、1536x1024、auto) + + + + 图像风格。此操作所接受的 gpt-image 模型并不使用该参数;它曾是 dall-e-3 专属参数,而这些 ID 已在 OpenAI 于 2026-05-12 将其停用时被弃用。 + + 可能的值:`vivid`、`natural` + + + + 用于终端用户监控的唯一标识符 + + +该文档由 Router 在 `GET /v2/models/openai/gpt-image-1/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 校验调用时所依据的文档相同。 + +### 输出 + + + + + + + Base64 编码的图像数据 + + + + 修订后的提示词 + + + + 图像的 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 已生成图像的背景是不透明还是透明。仅在由 fal 提供服务的分支中填充,该分支报告 `opaque`。 + + + + 生成完成时的 Unix 时间戳(以秒为单位)。声明为 `int64`,因为当前 epoch 值已足够接近 2^31,未格式化的 `integer` 会在许多 SDK 生成器中产生 32 位字段。 + + 格式:`int64` + + + + `data[].b64_json` 中字节的编码(例如 `png`)。在由 fal 提供服务的分支中填充;在由 OpenAI 提供服务的分支中缺失,此时以调用方请求的 `output_format` 为准。 + + + + 该次生成实际运行所用的质量档位。在由 fal 提供服务的分支中,若能解析出该值时填充;否则缺失。 + + + + 该次生成实际运行所用的像素尺寸,格式为 `x`。在由 fal 提供服务的分支中,若能解析出该值时填充;否则缺失。 + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + diff --git a/zh/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx b/zh/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx new file mode 100644 index 000000000..a9ce86dc9 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx @@ -0,0 +1,249 @@ +--- +title: "将 GPT Image 2.5 Flare 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 openai/gpt-image-2.5-flare:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT Image 2.5 Flare" +translationSourceHash: a3bd711d +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-flare/code.mdx +translationBlockHashes: + "_intro": c2dfdd54 + "Quick start": 36a7ad58 + "Schema": eb1113b3 + "Examples": 7b3879cc +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/gpt-image-2.5-flare.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2.5-flare` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `openai/gpt-image-2.5-flare` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-flare", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-flare", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## Schema + +### 输入 + + + 背景透明度 + + 可选值:`transparent`、`opaque` + + + + 用于图像生成的模型(例如 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + 内容审核设置 + + 可选值:`low`、`auto` + + + + 要生成的图像数量(1-10)。 + + + + JPEG 或 WebP 的压缩级别(0-100) + + + + 输出图像的格式 + + 可选值:`png`、`webp`、`jpeg` + + + + 所需图像的文本描述 + + + + 生成图像的质量 + + 可选值:`low`、`medium`、`high`、`standard`、`hd` + + + + 图像数据的响应格式 + + 可选值:`url`、`b64_json` + + + + 图像的尺寸(例如 1024x1024、1536x1024、auto) + + + + 图像风格。该操作所接受的 gpt-image 模型并不使用此参数;它曾是 dall-e-3 独有的参数,而这些模型 ID 已在 OpenAI 于 2026-05-12 关停它们时被弃用。 + + 可选值:`vivid`、`natural` + + + + 用于最终用户监控的唯一标识符 + + +根据 Router 在 `GET /v2/models/openai/gpt-image-2.5-flare/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + + + + + Base64 编码的图像数据 + + + + 修订后的提示词 + + + + 图像的 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成图像的背景是不透明还是透明。仅在 fal 提供的分支上填充,该分支会报告 `opaque`。 + + + + 生成完成时的 Unix 时间戳(以秒为单位)。声明为 `int64`,因为当前时代的纪元值已接近 2^31,未做格式限定的 `integer` 会在许多 SDK 生成器中生成 32 位字段。 + + 格式:`int64` + + + + `data[].b64_json` 中字节的编码(例如 `png`)。在 fal 提供的分支上填充;在 OpenAI 提供的分支上缺失,此时调用方请求的 `output_format` 是权威的。 + + + + 生成实际运行的质量档位。当 fal 提供的分支能够解析出该值时填充;否则缺失。 + + + + 生成实际运行的像素尺寸,格式为 `x`。当 fal 提供的分支能够解析出该值时填充;否则缺失。 + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx b/zh/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx new file mode 100644 index 000000000..b7f030786 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx @@ -0,0 +1,249 @@ +--- +title: "通过 Comfy Router 使用 GPT Image 2.5 Sunburst" +description: "通过 Comfy Router 调用 openai/gpt-image-2.5-sunburst:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "GPT Image 2.5 Sunburst" +translationSourceHash: 4dfd7fed +translationFrom: development/comfy-router/models/openai/gpt-image-2-5-sunburst/code.mdx +translationBlockHashes: + "_intro": 91f42876 + "Quick start": 5c62befd + "Schema": 88886616 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-2.5-sunburst.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2.5-sunburst` 的 API 参考文档,该模型由 Comfy Router 提供、来源于 OpenAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起相同的调用。 + +**模型 ID:** `openai/gpt-image-2.5-sunburst` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2.5-sunburst", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2.5-sunburst", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2.5-sunburst \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## Schema + +### 输入 + + + 背景透明度 + + 可选值:`transparent`、`opaque` + + + + 用于图像生成的模型(例如 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + 内容审核设置 + + 可选值:`low`、`auto` + + + + 要生成的图像数量(1-10)。 + + + + JPEG 或 WebP 的压缩级别(0-100) + + + + 输出图像的格式 + + 可选值:`png`、`webp`、`jpeg` + + + + 期望图像的文字描述 + + + + 生成图像的质量 + + 可选值:`low`、`medium`、`high`、`standard`、`hd` + + + + 图像数据的响应格式 + + 可选值:`url`、`b64_json` + + + + 图像的尺寸(例如 1024x1024、1536x1024、auto) + + + + 图像风格。此操作所接纳的 gpt-image 模型并不使用该参数;它原本是 dall-e-3 独有的参数,而这些 id 已在 OpenAI 于 2026-05-12 关停它们时退役。 + + 可选值:`vivid`、`natural` + + + + 用于终端用户监控的唯一标识符 + + +根据 Router 在 `GET /v2/models/openai/gpt-image-2.5-sunburst/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + Base64 编码的图像数据 + + + + 修订后的提示词 + + + + 图像的 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成图像的背景是不透明还是透明。仅在 fal 提供服务的分支上填充,该分支报告 `opaque`。 + + + + Generation 完成时的 Unix 时间戳,单位为秒。声明为 `int64`,因为当今的 epoch 值非常接近 2^31,未格式化的 `integer` 会在许多 SDK 生成器中生成 32 位字段。 + + 格式:`int64` + + + + `data[].b64_json` 中字节的编码格式(例如 `png`)。在 fal 提供服务的分支上填充;在 OpenAI 提供服务的分支上缺失,此时以调用方请求的 `output_format` 为准。 + + + + 本次生成实际运行的质量层级。在 fal 提供服务的分支上、且能够解析出该值时填充;否则缺失。 + + + + 本次生成实际运行的像素尺寸,格式为 `x`。在 fal 提供服务的分支上、且能够解析出该值时填充;否则缺失。 + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/gpt-image-2/code.mdx b/zh/development/comfy-router/models/openai/gpt-image-2/code.mdx new file mode 100644 index 000000000..ef2d3a148 --- /dev/null +++ b/zh/development/comfy-router/models/openai/gpt-image-2/code.mdx @@ -0,0 +1,248 @@ +--- +title: "将 GPT Image 2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/gpt-image-2:端点、请求结构,以及 Router 返回的响应。" +sidebarTitle: "GPT Image 2" +translationSourceHash: 3f7d4810 +translationFrom: development/comfy-router/models/openai/gpt-image-2/code.mdx +translationBlockHashes: + "_intro": 846b7fa3 + "Quick start": 28ebfa70 + "Schema": ca8ae8e5 + "Examples": 7b3879cc +--- +{/* GENERATED FILE. Generated from router-schemas/openai/gpt-image-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/gpt-image-2` 的 API 参考,该模型由 OpenAI 提供,并通过 Comfy Router 服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/gpt-image-2` + +**端点:** `POST https://api.comfy.org/v2/models/openai/gpt-image-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/gpt-image-2", + { + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/gpt-image-2", { + n: 1, + prompt: "a red circle", + quality: "low", + size: "1024x1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/gpt-image-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"a red circle\", \"quality\": \"low\", \"size\": \"1024x1024\"}" +``` + + +## Schema + +### 输入 + + + 背景透明度 + + 可选值:`transparent`、`opaque` + + + + 用于图像生成的模型(例如 gpt-image-1、gpt-image-1.5、gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst) + + + + 内容审核设置 + + 可选值:`low`、`auto` + + + + 要生成的图像数量(1-10)。 + + + + JPEG 或 WebP 的压缩级别(0-100) + + + + 输出图像的格式 + + 可选值:`png`、`webp`、`jpeg` + + + + 对所需图像的文本描述 + + + + 生成图像的质量 + + 可选值:`low`、`medium`、`high`、`standard`、`hd` + + + + 图像数据的响应格式 + + 可选值:`url`、`b64_json` + + + + 图像的尺寸(例如 1024x1024、1536x1024、auto) + + + + 图像风格。此操作所接受的 gpt-image 模型均不使用该参数;它曾是 dall-e-3 独有的参数,而 OpenAI 于 2026-05-12 关停这些模型 ID 后,该参数已随之作废。 + + 可选值:`vivid`、`natural` + + + + 用于终端用户监控的唯一标识符 + + +由 Router 在 `GET /v2/models/openai/gpt-image-2/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前校验调用时所依据的同一份文档。 + +### 输出 + + + + + + + Base64 编码的图像数据 + + + + 修订后的提示词 + + + + 图像的 URL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成图像的背景是不透明还是透明。仅在由 fal 提供服务的分支中填充,该分支报告 `opaque`。 + + + + 生成完成时的 Unix 时间戳(秒)。声明为 `int64`,因为当前的 epoch 值已接近 2^31,若使用未格式化的 `integer`,许多 SDK 生成器会生成 32 位字段。 + + 格式:`int64` + + + + `data[].b64_json` 中字节的编码格式(例如 `png`)。在由 fal 提供服务的分支中填充;在由 OpenAI 提供服务的分支中缺省,此时以调用方请求的 `output_format` 为准。 + + + + 生成实际运行时所使用的质量档位。在由 fal 提供服务的分支中,若能够解析出该值时填充;否则缺省。 + + + + 生成实际运行时所使用的像素尺寸,格式为 `x`。在由 fal 提供服务的分支中,若能够解析出该值时填充;否则缺省。 + + +## 示例 {#examples} + +### 输入 + +```json +{ + "n": 1, + "prompt": "a red circle", + "quality": "low", + "size": "1024x1024" +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "data": [ + { + "b64_json": "PGJhc2U2ND4=" + } + ], + "usage": { + "input_tokens": 12, + "output_tokens": 1056, + "total_tokens": 1068 + } +} +``` + + diff --git a/zh/development/comfy-router/models/openai/o1-pro/code.mdx b/zh/development/comfy-router/models/openai/o1-pro/code.mdx new file mode 100644 index 000000000..a090d5e9b --- /dev/null +++ b/zh/development/comfy-router/models/openai/o1-pro/code.mdx @@ -0,0 +1,515 @@ +--- +title: "将 o1-pro 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/o1-pro:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "o1-pro" +translationSourceHash: e2e4d3ac +translationFrom: development/comfy-router/models/openai/o1-pro/code.mdx +translationBlockHashes: + "_intro": 2e79c0c5 + "Quick start": d5afb203 + "Schema": 5f93e7dc + "Examples": 67e6c8f1 +--- +{/* GENERATED FILE. Generated from router-schemas/openai/o1-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/o1-pro` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是在原始 HTTP 上执行同样的调用。 + +**模型 ID:** `openai/o1-pro` + +**端点:** `POST https://api.comfy.org/v2/models/openai/o1-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1-pro", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1-pro", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要在模型响应中一并包含的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法代为提供的字段,也是下方 `required` 中唯一的条目。 + + + + 将系统(或开发者)消息插入为模型上下文中的第一项。 + + + + 为一次响应生成的 token 数量上限,包括可见的输出 token 和推理 token。对于推理 id,该上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽整个预算,这也是推理冒烟用例发送 1024、而聊天用例发送 16 的原因。 + + Range: `1` to `…` + + + + OpenAI 模型标识符。在 Comfy Router 中该字段是 OPTIONAL(可选)的,Router 会从 `{model}` 路径段填充它;显式传入 `null` 也会以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限 REASONING 层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参见 OpenAI 的推理指南。聊天层级的 id 会忽略该字段。 + + + + OpenAI 是否存储已生成的响应以便之后检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但它在此接口上无效:Router 会在派发前将其固定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码这种流,所以流式生成会被 OpenAI 计费,却无人计量。如果你需要流式传输,请改用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 CHAT 层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)会在 OpenAI 侧拒绝该参数。Router 不会替它们拒绝(原因见本组件关于两个层级共用一套 schema 的说明),因此发送该参数的推理调用会得到 OpenAI 自身的错误响应。 + + Range: `0` to `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是指明某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参见 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 CHAT 层级,条件与 `temperature` 相同。 + + Range: `0` to `1` + + + + 上下文超出模型窗口时的截断策略。与上面三类词汇表不同,此处的枚举确实会被强制执行,因为这两个值就是 OpenAI 文档中的完整集合,且至今没有增加。显式传入 `null` 仍会被接受,条件与上方各字段相同。 + + Possible values: `auto`, `disabled` + + + + Token 用量封装。它出现在本契约中,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,所以调用方没有理由发送它。 + + +本页内容根据 Router 在 `GET /v2/models/openai/o1-pro/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### Output + + + 以系统(或开发者)消息的形式插入到模型上下文的第一个位置。 + +当与 `previous_response_id` 一起使用时,上一个响应的 instructions 不会延续到下一个响应。这使得在新响应中替换系统(或开发者)消息变得很简单。 + + + + 一次响应可生成的 token 数量上限,包括可见输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过 nucleus sampling 控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果此响应以及之前响应的上下文超过模型的上下文窗口大小,模型将通过丢弃对话中间位置的输入项来截断响应,以使其适应上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求将失败并返回 400 错误。 + + 可能的值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被渲染回模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +限制[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。目前支持的值为 `low`、`medium` 和 `high`。降低推理投入程度可以带来更快的响应,并且响应中用于推理的 token 更少。 + + 可能的值:`low`、`medium`、`high` + + + + **弃用:**请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可能的值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可能的值:`auto`、`concise`、`detailed` + + + + + + + + 一个对象,用于指定模型必须输出的格式。 + +配置 `{ "type": "json_schema" }` 会启用 Structured Outputs,从而确保模型匹配你提供的 JSON schema。更多内容请参阅 [Structured Outputs 指南](https://platform.openai.com/docs/guides/structured-outputs)。 + +默认格式为 `{ "type": "text" }`,不带任何附加选项。 + +**不建议用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,更推荐使用它。 + + + + 限制模型响应的详细程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的一个或多个工具。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时出现。 + + + + 创建此响应时的 Unix 时间戳(以秒为单位)。 + + + + 模型生成响应失败时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 错误的可读描述。 + + + + 根据新 token 在目前已生成的文本中出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何未完成的详情。 + + + + 响应未完成的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可处理的内置工具总调用次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果,前提是请求了受审核的补全。 + + + + 此资源的对象类型,始终为 `response`。 + + Possible values: `response` + + + + 由模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含模型 + 生成内容的 `assistant` 消息,不如在 SDK 支持的情况下 + 使用 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 +`output_text` 项聚合后的文本输出(如果存在)。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前的文本中出现对其进行惩罚。 + + + + OpenAI 使用它来缓存相似请求的响应,以优化缓存命中率。替代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于服务该请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都附带相关联的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的 token 总数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[有关提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已被 `safety_identifier` 和 `prompt_cache_key` 替换。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/o1/code.mdx b/zh/development/comfy-router/models/openai/o1/code.mdx new file mode 100644 index 000000000..e435063f3 --- /dev/null +++ b/zh/development/comfy-router/models/openai/o1/code.mdx @@ -0,0 +1,536 @@ +--- +title: "搭配 Comfy Router 使用 o1" +description: "通过 Comfy Router 调用 openai/o1:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "o1" +translationSourceHash: c28bee49 +translationFrom: development/comfy-router/models/openai/o1/code.mdx +translationBlockHashes: + "_intro": e4f64988 + "Quick start": 194e7dcc + "Schema": c257f6a0 + "Examples": 67e6c8f1 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/o1.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/o1` 的 API 参考文档,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起相同的调用。 + +**模型 ID:** `openai/o1` + +**端点:** `POST https://api.comfy.org/v2/models/openai/o1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o1", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o1", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### Input + + + 要包含在模型响应中的额外输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是 Router 无法提供的唯一字段,也是下方 `required` 中唯一的条目。 + + + + 将一条系统(或开发者)消息插入为模型上下文中的第一项。 + + + + 为响应生成的 token 数量上限,包括可见的输出 token 和推理 token。在推理类 id 上,该上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽整个预算,这就是推理冒烟用例发送 1024、而 chat 用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也会以同样方式替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。chat 层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段是为了让发送它的调用方不被拒绝,但它在此接口上不生效:Router 会在分发之前将其固定为 `false`,因为它捕获的是提供商响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码该响应,因此流式生成会被 OpenAI 计费却无人计量。如果需要流式,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限 chat 层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 会拒绝该参数。Router 不会代它们拒绝,关于两个层级为何共用同一个 schema 的说明见本组件的注释,因此发送该参数的推理调用会由 OpenAI 自身的错误作答。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是命名某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截断值。仅限 chat 层级,条款与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型窗口时采用的截断策略。与上面的三个词表不同,这里的枚举是强制校验的,因为这两个值是 OpenAI 记录的完整集合,而且一直没有增加。显式的 `null` 仍然可以接受,条款与上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量信封。该契约中出现它,是因为 v1 操作在请求体上声明了它;OpenAI 是在响应中填充它,因此调用方没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/o1/openapi.json` 提供的 schema 生成,请求到达提供商之前,Router 会依据同一份文档校验调用。### 输出 + + + 插入一条系统(或开发者)消息,作为模型上下文中的第一条内容。 + +当与 `previous_response_id` 一起使用时,上一个响应的 instructions +不会延续到下一个响应。这样可以轻松地在新的响应中替换 +系统(或开发者)消息。 + + + + 一次响应可生成的 token 数量上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样(nucleus sampling)控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及之前响应的上下文超过 + 模型的上下文窗口大小,模型将截断 + 响应以适应上下文窗口,方式是丢弃对话 + 中间的输入项。 +- `disabled`(默认):如果模型响应将超过模型的 + 上下文窗口大小,请求将失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用它来 +创建多轮对话。了解更多关于 +[对话状态](https://platform.openai.com/docs/guides/conversation-state)的内容。 + + + + **仅 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的 +配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅 o 系列模型** + +约束[推理模型](https://platform.openai.com/docs/guides/reasoning)的 +推理投入程度。 +目前支持的值为 `low`、`medium` 和 `high`。降低 +推理投入可以带来更快的响应,以及响应中用于 +推理的 token 更少。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +可取 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于 +调试和理解模型的推理过程很有用。 +可取 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个用于指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出 +(Structured Outputs),这能确保模型匹配你提供的 JSON schema。在 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,不带任何其他选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +将其设为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,这能 +确保模型生成的消息是有效 JSON。对于支持 `json_schema` +的模型,优先使用它。 + + + + 约束模型响应的详尽程度。可取 `low`、`medium` 或 `high`。 + + + + 模型在生成响应时应该如何选择要使用的工具(一个或多个)。 +关于如何指定模型可以调用的工具,请参阅 `tools` 参数。 + + + + + + + + 模型响应是否在后台运行。 + + + + 响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 `completed` 时出现。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 模型无法生成响应时返回的错误对象。 + + + + 该响应的错误代码。Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前已生成文本中出现的频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可处理的内置工具调用总次数的上限。 + + + + 可附加到该响应的一组键值对。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假设它是包含模型生成 + 内容的 `assistant` 消息,不如考虑使用 SDK 中受支持的 + `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项聚合后的文本输出 +(如果存在)。在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在目前已生成的文本中出现对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。替代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 用于帮助检测可能违反 OpenAI 使用政策的应用用户的稳定标识符。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索工具用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都附带相关的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[详细了解提示缓存](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/o3/code.mdx b/zh/development/comfy-router/models/openai/o3/code.mdx new file mode 100644 index 000000000..ab7eb1742 --- /dev/null +++ b/zh/development/comfy-router/models/openai/o3/code.mdx @@ -0,0 +1,524 @@ +--- +title: "将 o3 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 openai/o3:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "o3" +translationSourceHash: 1ad89234 +translationFrom: development/comfy-router/models/openai/o3/code.mdx +translationBlockHashes: + "_intro": 65fe84c3 + "Quick start": 6577da9c + "Schema": 2f985532 + "Examples": 67e6c8f1 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/o3.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/o3` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的相同调用。 + +**模型 ID:** `openai/o3` + +**端点:** `POST https://api.comfy.org/v2/models/openai/o3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o3", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o3", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## 架构 + +### 输入 + + + 要在模型响应中额外包含的输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 唯一无法提供的字段,也是下方 `required` 中唯一的条目。 + + + + 在模型的上下文首位插入一条 system(或 developer)消息。 + + + + 一次响应所生成 token 数量的上限,包括可见的输出 token 和推理 token。在推理 id 上,该上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽整个预算。这正是推理冒烟用例发送 1024、而聊天用例发送 16 的原因。 + + 范围:`1` 到 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也以同样方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行执行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;接受的键请参见 OpenAI 的推理指南。聊天层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供后续检索。 + + + + 声明该字段只是为了让发送它的调用方不被拒绝,但它在当前接口上是无效的:Router 会在分发之前将其固定为 `false`,因为它捕获的是提供商的响应,而不是转发 `text/event-stream`,而 openAiResponsesProxy 的 ModifyResponse 无法解码该流,因此流式生成会由 OpenAI 计费,却没有任何一方进行计量。如果需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅聊天层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 处会拒绝该参数。Router 不会替它们拒绝,原因请见本组件关于两个层级共用同一 schema 的说明,因此发送该参数的推理调用会由 OpenAI 自身的错误来回应。 + + 范围:`0` 到 `2` + + + + 输出格式配置,例如用于结构化输出的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是指定某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会收窄工具分类;接受的形状请参见 OpenAI 的 Responses API 参考。 + + + + 核采样截止值。仅聊天层级,适用条件与 `temperature` 相同。 + + 范围:`0` 到 `1` + + + + 当上下文超出模型的窗口时采用的截断策略。与上面三个词汇表不同,这里的枚举确实会被强制执行,因为这两个值就是 OpenAI 文档所记录的完整集合,且至今没有扩充。显式的 `null` 仍然被接受,适用条件与上面的各字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。本契约中包含它,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。 + + +根据 Router 在 `GET /v2/models/openai/o3/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + 将一条 system(或 developer)消息插入到模型上下文的第一个位置。 + +当与 `previous_response_id` 一起使用时,上一个响应的指令不会延续到下一个响应。这样可以轻松地在新的响应中替换 system(或 developer)消息。 + + + + 一次响应可生成 token 数量的上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应以及此前响应的上下文超过模型的上下文窗口大小,模型将通过丢弃对话中间位置的输入项来截断响应,使其适应上下文窗口。 +- `disabled`(默认):如果模型响应将超过模型的上下文窗口大小,请求将以 400 错误失败。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。使用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被渲染回模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +限制[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。 +当前支持的值为 `low`、`medium` 和 `high`。降低推理投入可以带来更快的响应,并在响应中减少用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程非常有用。 +可取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程非常有用。 +可取值为 `auto`、`concise` 或 `detailed`。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个对象,用于指定模型必须输出的格式。 + +配置 `{ "type": "json_schema" }` 可启用结构化输出(Structured Outputs), +确保模型匹配你提供的 JSON schema。请在 +[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)中了解更多。 + +默认格式为 `{ "type": "text" }`,无任何附加选项。 + +**不建议用于 gpt-4o 及更新版本的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,它 +确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型, +优先使用 `json_schema`。 + + + + 限制模型响应的详细程度。可取 `low`、`medium` 或 `high`。 + + + + 模型在生成响应时应如何选择要使用的工具(一个或多个)。请参阅 `tools` 参数,了解如何指定模型可以调用的工具。 + + + + + + + + 模型响应是否在后台运行。 + + + + 响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此响应完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时出现。 + + + + 此响应创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型生成响应失败时返回的错误对象。 + + + + 响应的错误代码。 + +Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在目前文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + 可能的值:`max_output_tokens`、`content_filter` + + + + 一次响应中可处理的内置工具调用总数上限。 + + + + 可附加到响应的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + 可能的值:`response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于模型的响应。 +- 与其访问 `output` 数组中的第一项并假定它是包含 + 模型生成内容的 `assistant` 消息,你可以考虑在 SDK 支持的情况下 + 使用 `output_text` 属性。 + + + + 仅限 SDK 的便捷属性,包含 `output` 数组中所有 `output_text` 项 +聚合后的文本输出(如果存在)。 +在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已出现在目前文本中对其进行惩罚。 + + + + 由 OpenAI 用于缓存相似请求的响应,以优化缓存命中率。替代 `user` 字段。 + + + + 提示缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用程序用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态,为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + 可能的值:`completed`、`failed`、`in_progress`、`cancelled`、`queued`、`incomplete` + + + + 响应是否存储以供稍后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网页搜索工具用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个 token 都带有对应的对数概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的总 token 数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[有关提示缓存的更多信息](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细明细。 + + + + 推理 token 的数量。 + + + + 所使用的 token 总数。 + + + + 已弃用的最终用户标识符。已被 `safety_identifier` 和 `prompt_cache_key` 取代。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/openai/o4-mini/code.mdx b/zh/development/comfy-router/models/openai/o4-mini/code.mdx new file mode 100644 index 000000000..e3a77a0ab --- /dev/null +++ b/zh/development/comfy-router/models/openai/o4-mini/code.mdx @@ -0,0 +1,516 @@ +--- +title: "搭配 Comfy Router 使用 o4-mini" +description: "通过 Comfy Router 调用 openai/o4-mini:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "o4-mini" +translationSourceHash: 13134b80 +translationFrom: development/comfy-router/models/openai/o4-mini/code.mdx +translationBlockHashes: + "_intro": 03d40f5d + "Quick start": ae3ead9e + "Schema": 14c35480 + "Examples": 67e6c8f1 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/openai/o4-mini.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`openai/o4-mini` 的 API 参考,由 Comfy Router 从 OpenAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `openai/o4-mini` + +**端点:** `POST https://api.comfy.org/v2/models/openai/o4-mini` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "openai/o4-mini", + { + "input": "Reply with the single word: ok", + "max_output_tokens": 1024, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("openai/o4-mini", { + input: "Reply with the single word: ok", + max_output_tokens: 1024, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/openai/o4-mini \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" +``` + + +## Schema + +### 输入 + + + 要包含在模型响应中的附加输出数据。 + + + + 提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 唯一无法提供的字段,也是下方 `required` 中唯一的条目。 + + + + 在模型的上下文中插入一条系统(或开发者)消息,作为第一项内容。 + + + + 为响应生成的 token 数量上限,包括可见的输出 token 和推理 token。在推理 id 上,该上限与隐藏的推理 token 共享,因此一个较小的值可能在产生任何可见文本之前就耗尽整个预算:这正是推理冒烟用例发送 1024,而聊天用例只发送 16 的原因。 + + 范围:`1` 至 `…` + + + + OpenAI 模型标识符。在 Comfy Router 上该字段为可选,Router 会从 `{model}` 路径段填充它;显式的 `null` 也会以相同方式被替换。发送与路径不一致的值会被拒绝。 + + + + 是否允许模型并行运行工具调用。 + + + + 上一个响应的 ID,用于多轮对话。 + + + + 仅限推理层级。推理模型的配置,例如 `{"effort": "medium"}`。原样转发;可接受的键请参阅 OpenAI 的推理指南。聊天层级的 id 会忽略它。 + + + + OpenAI 是否存储已生成的响应以供之后检索。 + + + + 声明该字段是为了让发送它的调用方不会被拒绝,但它在此接口上是无效的:Router 会在分发之前将其确定为 `false`,因为它捕获的是提供商的响应,而不是转发 `text/event-stream`;openAiResponsesProxy 的 ModifyResponse 无法解码后者,因此流式生成会被 OpenAI 计费,却没有任何人对其进行计量。如果需要流式传输,请使用 `POST /proxy/openai/v1/responses`。 + + + + 采样温度。仅限聊天层级:o 系列推理 id(`o1`、`o1-pro`、`o3`、`o4-mini`)在 OpenAI 处会拒绝此参数。Router 不会代它们拒绝该参数(关于两个层级为何共享同一个 schema,请参阅本组件的说明),因此发送该参数的推理调用会由 OpenAI 自身的错误来应答。 + + 范围:`0` 至 `2` + + + + 输出格式配置,例如用于 Structured Outputs 的 `{"format": {"type": "json_schema", ...}}`。原样转发。 + + + + 模型应如何选择使用哪个工具。可以是字符串模式,也可以是命名某个工具的对象。 + + + + 模型可以调用的工具定义。Router 不会缩小工具的类别范围;可接受的形状请参阅 OpenAI 的 Responses API 参考。 + + + + 核采样截止值。仅限聊天层级,条件与 `temperature` 相同。 + + 范围:`0` 至 `1` + + + + 当上下文超出模型窗口时采用的截断策略。与上面三组词表不同,这里的枚举值确实会被强制校验,因为这两个值是 OpenAI 文档中记载的完整集合,且至今没有增加。显式的 `null` 仍然被接受,条件与它上面的字段相同。 + + 可能的值:`auto`、`disabled` + + + + token 用量封装。它出现在本契约中,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。 + + +由 Router 在 `GET /v2/models/openai/o4-mini/openapi.json` 提供的 schema 生成,该文档也正是请求到达提供商之前 Router 用来校验调用的同一份文档。### 输出 + + + 将系统(或开发者)消息插入到模型上下文的第一个位置。 + +与 `previous_response_id` 一起使用时,上一个响应的 instructions 不会延续到下一个响应。这使得在新的响应中替换系统(或开发者)消息变得非常简单。 + + + + 一次响应可生成的 token 数上限,包括可见的输出 token 和[推理 token](https://platform.openai.com/docs/guides/reasoning)。 + + + + 用于生成该响应的模型 + + + + 控制响应的随机性 + + 范围:`0` 到 `2` + + + + 通过核采样控制响应的多样性 + + 范围:`0` 到 `1` + + + + 用于模型响应的截断策略。 +- `auto`:如果本次响应及此前响应的上下文超出模型的上下文窗口大小,模型将通过丢弃对话中间的输入项来截断响应,以适应上下文窗口。 +- `disabled`(默认):如果模型响应将超出模型的上下文窗口大小,请求会失败并返回 400 错误。 + + 可选值:`auto`、`disabled` + + + + 模型上一个响应的唯一 ID。用它来创建多轮对话。了解更多关于[对话状态](https://platform.openai.com/docs/guides/conversation-state)的信息。 + + + + **仅限 o 系列模型** + +[推理模型](https://platform.openai.com/docs/guides/reasoning)的配置选项。 + + + + 控制在后续轮次中哪些推理项会被回传给模型,例如 `auto`、`current_turn` 或 `all_turns`。 + + + + **仅限 o 系列模型** + +限制[推理模型](https://platform.openai.com/docs/guides/reasoning)的推理投入程度。目前支持的值为 `low`、`medium` 和 `high`。降低推理投入程度可以让响应更快,并减少响应中用于推理的 token 数量。 + + 可选值:`low`、`medium`、`high` + + + + **已弃用:** 请改用 `summary`。 + +模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + 用于该响应的推理模式。 + + + + 模型所执行推理的摘要。这对于调试和理解模型的推理过程很有用。取值为 `auto`、`concise` 或 `detailed` 之一。 + + 可选值:`auto`、`concise`、`detailed` + + + + + + + + 一个指定模型必须输出的格式的对象。 + +配置 `{ "type": "json_schema" }` 会启用结构化输出,可确保模型符合你提供的 JSON schema。请参阅[结构化输出指南](https://platform.openai.com/docs/guides/structured-outputs)了解更多。 + +默认格式为 `{ "type": "text" }`,不带任何额外选项。 + +**不推荐用于 gpt-4o 及更新的模型:** + +设置为 `{ "type": "json_object" }` 会启用较旧的 JSON 模式,可确保模型生成的消息是有效的 JSON。对于支持 `json_schema` 的模型,推荐使用它。 + + + + 限制模型响应的详尽程度。取值为 `low`、`medium` 或 `high` 之一。 + + + + 模型在生成响应时应如何选择要使用的一个或多个工具。关于如何指定模型可以调用的工具,请参阅 `tools` 参数。 + + + + + + + + 模型响应是否在后台运行。 + + + + 该响应的计费信息。 + + + + 负责为该响应付费的一方。 + + + + 此 Response 完成时的 Unix 时间戳(以秒为单位)。仅在状态为 `completed` 时出现。 + + + + 此 Response 创建时的 Unix 时间戳(以秒为单位)。 + + + + 当模型未能生成 Response 时返回的错误对象。 + + + + 该响应的错误代码。 +Possible values: `server_error`, `rate_limit_exceeded`, `invalid_prompt`, `vector_store_timeout`, `invalid_image`, `invalid_image_format`, `invalid_base64_image`, `invalid_image_url`, `image_too_large`, `image_too_small`, `image_parse_error`, `image_content_policy_violation`, `invalid_image_mode`, `image_file_too_large`, `unsupported_image_media_type`, `empty_image_file`, `failed_to_download_image`, `image_file_not_found` + + + + 对错误的人类可读描述。 + + + + 根据新 token 在截至目前文本中已有的出现频率对其进行惩罚。 + + + + 此 Response 的唯一标识符。 + + + + 关于响应为何不完整的详情。 + + + + 响应不完整的原因。 + + Possible values: `max_output_tokens`, `content_filter` + + + + 一次响应中可处理的内置工具调用总次数上限。 + + + + 可附加到响应上的键值对集合。 + + + + 响应输入和输出的审核结果(如果请求了审核补全)。 + + + + 此资源的对象类型,始终设置为 `response`。 + + Possible values: `response` + + + + 模型生成的内容项数组。 + +- `output` 数组中各项的长度和顺序取决于 + 模型的响应。 +- 与其访问 `output` 数组中的第一项,并假定它是包含 + 模型生成内容的 `assistant` 消息,不如考虑使用 SDK 中 + 受支持的 `output_text` 属性。 + + + + 仅 SDK 提供的便捷属性,包含 `output` 数组中所有 `output_text` 项的聚合文本输出(如有)。 + 在 Python 和 JavaScript SDK 中受支持。 + + + + 是否允许模型并行运行工具调用。 + + + + 根据新 token 是否已在截至目前文本中出现过对其进行惩罚。 + + + + OpenAI 用于缓存相似请求的响应以优化缓存命中率。会替代 `user` 字段。 + + + + prompt 缓存的保留策略,例如 `in_memory` 或 `24h`。 + + + + 一个稳定的标识符,用于帮助检测你的应用中可能违反 OpenAI 使用政策的用户。 + + + + 用于处理请求的处理层级,例如 `auto`、`default`、`flex`、`scale` 或 `priority`。 + + + + 响应生成的状态。取值为 `completed`、`failed`、`in_progress`、`cancelled`、`queued` 或 `incomplete` 之一。 + + Possible values: `completed`, `failed`, `in_progress`, `cancelled`, `queued`, `incomplete` + + + + 响应是否会被存储以便之后通过 API 检索。 + + + + 按内置工具细分的 token 和请求用量。 + + + + 图像生成工具的 token 用量。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索工具的用量。 + + + + + + + + 在每个 token 位置返回的最可能 token 的最大数量,每个都带有相关的 log 概率。 + + + + 表示 token 用量详情,包括输入 token、输出 token、 +输出 token 的细分以及使用的 token 总数。 + + + + 输入 token 的数量。 + + + + 输入 token 的详细细分。 + + + + 写入缓存的输入 token 数量。 + + 从缓存中检索到的 token 数量。 +[关于提示缓存的更多说明](https://platform.openai.com/docs/guides/prompt-caching)。 + + + + 输出 token 的数量。 + + + + 输出 token 的详细细分。 + + + + 推理 token 的数量。 + + + + 使用的 token 总数。 + + + + 已弃用的最终用户标识符。已替换为 `safety_identifier` 和 `prompt_cache_key`。 + + +## 示例 + +### 输入 + +```json +{ + "input": "Reply with the single word: ok", + "max_output_tokens": 1024 +} +``` + +### 输出 + +```json +{ + "completed_at": 1767225601, + "created_at": 1767225600, + "id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f", + "object": "response", + "output": [ + { + "content": [ + { + "annotations": [], + "text": "ok", + "type": "output_text" + } + ], + "id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f", + "role": "assistant", + "status": "completed", + "type": "message" + } + ], + "output_text": "ok", + "status": "completed", + "usage": { + "input_tokens": 14, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 2, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 16 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/pruna/p-video-2/code.mdx b/zh/development/comfy-router/models/pruna/p-video-2/code.mdx new file mode 100644 index 000000000..b6cc7c639 --- /dev/null +++ b/zh/development/comfy-router/models/pruna/p-video-2/code.mdx @@ -0,0 +1,184 @@ +--- +title: "结合 Comfy Router 使用 P Video 2" +description: "通过 Comfy Router 调用 pruna/p-video-2:介绍端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "P Video 2" +translationSourceHash: b0e8a66d +translationFrom: development/comfy-router/models/pruna/p-video-2/code.mdx +translationBlockHashes: + "_intro": fd2e661c + "Quick start": cabedd05 + "Schema": 51d0cc63 + "Examples": 0d85c9fe +--- +{/* GENERATED FILE. Generated from router-schemas/pruna/p-video-2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`pruna/p-video-2` 的 API 参考文档,由 Pruna 通过 Comfy Router 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `pruna/p-video-2` + +**端点:** `POST https://api.comfy.org/v2/models/pruna/p-video-2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "pruna/p-video-2", + { + "input": { + "aspect_ratio": "16:9", + "draft": False, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("pruna/p-video-2", { + input: { + aspect_ratio: "16:9", + draft: false, + duration: 2, + fps: 24, + prompt: "A single red maple leaf resting on a plain white background.", + resolution: "720p", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/pruna/p-video-2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"aspect_ratio\":\"16:9\",\"draft\":false,\"duration\":2,\"fps\":24,\"prompt\":\"A single red maple leaf resting on a plain white background.\",\"resolution\":\"720p\"}}" +``` + + +## Schema + +### 输入 + + + P-Video-2 生成参数。生成按已完成视频的秒数计费,以返回的文件为准,费率由 `resolution` 和 `draft` 决定。安全过滤始终开启;请求中的 `disable_safety_filter` 值会被忽略。 + + + + 宽高比:16:9、9:16、4:3、3:4、3:2、2:3 或 1:1。当设置了 `image` 时忽略。 + + + + 用于条件化生成的输入音频 URI(flac、mp3 或 wav)。输出时长跟随音频。 + + + + 更快、质量更低的预览,按 draft 费率计费。 + + + + 所生成视频的时长,单位为秒(1-20)。省略时,模型会根据提示词选择长度,最长 20 秒。当设置了 `audio` 时忽略。 + + 范围:`1` 到 `20` + + + + 帧率:24 或 48。 + + + + 用于图生视频的输入图像 URI(jpg、jpeg、png 或 webp)。 + + + + 最后一帧的参考图像 URI。 + + + + 用于视频生成的文本提示词。 + + + + 在生成之前重写提示词。当需要通过 `seed` 复现结果时,请将其禁用。 + + + + 输出分辨率:720p 或 1080p。 + + + + 保存带音频的视频。 + + + + 用于可复现生成的随机种子。省略时随机。 + + +由 Router 在 `GET /v2/models/pruna/p-video-2/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + 报错信息。当状态为 failed 时存在。 + + + + 已完成视频的 URL。当状态为 succeeded 时存在。 + + + + 人类可读的进度信息。 + + + + 预测状态:starting、processing、succeeded、failed 或 canceled。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "aspect_ratio": "16:9", + "draft": false, + "duration": 2, + "fps": 24, + "prompt": "A single red maple leaf resting on a plain white background.", + "resolution": "720p" + } +} +``` + +### 输出 + +```json +{ + "generation_url": "https://example.invalid/pruna/p-video-2/output.mp4", + "status": "succeeded" +} +``` + + + diff --git a/zh/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx b/zh/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx new file mode 100644 index 000000000..8f50da310 --- /dev/null +++ b/zh/development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx @@ -0,0 +1,286 @@ +--- +title: "搭配 Comfy Router 使用 Qwen Image 3.0 Pro" +description: "通过 Comfy Router 调用 qwen/qwen-image-3.0-pro:端点、请求格式以及 Router 返回的响应。" +sidebarTitle: "Qwen Image 3.0 Pro" +translationSourceHash: caba1a44 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0-pro/code.mdx +translationBlockHashes: + "_intro": b9aa2049 + "Quick start": dee41ecf + "Schema": 3517aa0a + "Examples": a4380dd1 +--- +{/* GENERATED FILE. Generated from router-schemas/qwen/qwen-image-3.0-pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`qwen/qwen-image-3.0-pro` 的 API 参考文档,由 Comfy Router 从 Qwen 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `qwen/qwen-image-3.0-pro` + +**端点:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0-pro", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0-pro", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## Schema + +### 输入 + + + 包含请求消息的输入参数对象 + + + + 请求内容数组。仅支持单轮对话,因此该数组必须恰好包含一个对象 + + + + 消息内容数组。文生图包含一个 text 对象;图像编辑包含 1-3 个 image 对象和一个 text 对象 + + + + 输入图像的 URL 或 Base64 编码数据。图像编辑支持 1-3 张图像 + + + + 描述要生成或编辑的图像内容、风格和构图的正面提示词 + + + + 消息发送者的角色。必须设置为 user + + 可选值:`user` + + + + 用于多模态图像生成与编辑的模型 ID。可选值为 qwen-image-3.0-pro 和 qwen-image-3.0。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/qwen/\{model} 的 `{model}` 路径段中填充它,所以 Router 调用方会省略该字段;而直接以 v1 调用 /proxy/ 路由时必须提供它。 + + + + 用于控制图像生成的附加参数 + + + + 输出图像的数量。范围为 1-6,默认为 1 + + 范围:`1` 到 `6` + + + + 描述你不希望出现在图像中的内容的负面提示词 + + + + 是否启用提示词智能改写。默认为 true + + + + 提示词改写方法,direct(默认,支持 T2I 和 I2I)或 agent(仅支持 T2I) + + 可选值:`direct`、`agent` + + + + 用于控制随机性的随机数种子。范围 [0, 2147483647] + + 范围:`0` 到 `2147483647` + + + + 输出图像分辨率,格式为 宽*高,例如 1024*1024。API 接受的像素面积介于 262144 (512*512) 与 6553600 (2560*2560) 之间,宽高比介于 1:8 与 8:1 之间。若未指定,模型会根据提示词自动推荐分辨率 + + + + 是否添加水印。默认为 false + + +本文档根据 Router 在 `GET /v2/models/qwen/qwen-image-3.0-pro/openapi.json` 提供的 schema 生成,该 schema 也是请求到达提供商之前 Router 校验调用时所依据的同一份文档。 + +### 输出 + + + 失败请求的错误码(请求成功时不返回) + + + + 失败请求的详细信息(请求成功时不返回) + + + + 包含模型生成结果 + + + + 结果选项列表 + + + + 任务停止的原因。任务正常完成时该值为 stop + + + + 模型返回的消息 + + + + 包含已生成图像信息的消息内容 + + + + 已生成图像的 URL,格式为 PNG。该链接有效期为 24 小时 + + + + 代替图像返回的文本元素。仅带有此字段的元素不会产出任何资源,因此调用方应依据 `image` 而非内容元素是否存在来判断是否完成 + + + + 消息的角色。固定为 assistant + + + + 唯一请求标识符 + + + + 本次调用的资源使用情况。仅在成功时返回 + + + + 请求中的输入图像数量。文生图返回 0 + + + + 输入图像计费档位,qima_input_1k 或 qima_input_2k,由输出分辨率的像素面积决定 + + + + 最终输出图像的高度(像素) + + + + 实际返回的输出图像数量 + + + + 输出图像计费档位,qima_output_1k 或 qima_output_2k,由输出分辨率的像素面积决定 + + + + 最终输出图像的宽度(像素) + + +## 示例 + +### 输入 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 输出 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + diff --git a/zh/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx b/zh/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx new file mode 100644 index 000000000..4c051f1cf --- /dev/null +++ b/zh/development/comfy-router/models/qwen/qwen-image-3-0/code.mdx @@ -0,0 +1,287 @@ +--- +title: "使用 Qwen Image 3.0 搭配 Comfy Router" +description: "通过 Comfy Router 调用 qwen/qwen-image-3.0:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Qwen Image 3.0" +translationSourceHash: cfa02806 +translationFrom: development/comfy-router/models/qwen/qwen-image-3-0/code.mdx +translationBlockHashes: + "_intro": e007ab60 + "Quick start": 10fc21cc + "Schema": baa6f997 + "Examples": a4380dd1 +--- +{/* GENERATED FILE. Generated from router-schemas/qwen/qwen-image-3.0.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`qwen/qwen-image-3.0` 的 API 参考,该模型由 Comfy Router 提供,来自 Qwen。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `qwen/qwen-image-3.0` + +**端点:** `POST https://api.comfy.org/v2/models/qwen/qwen-image-3.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "qwen/qwen-image-3.0", + { + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background.", + }, + ], + "role": "user", + }, + ], + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("qwen/qwen-image-3.0", { + input: { + messages: [ + { + content: [ + { + text: "A single red maple leaf on a plain white background.", + }, + ], + role: "user", + }, + ], + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/qwen/qwen-image-3.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"messages\":[{\"content\":[{\"text\":\"A single red maple leaf on a plain white background.\"}],\"role\":\"user\"}]}}" +``` + + +## Schema + +### 输入 + + + 包含请求消息的输入参数对象 + + + + 请求内容数组。仅支持单轮对话,因此该数组必须恰好包含一个对象 + + + + 消息内容数组。文生图包含一个 text 对象;图像编辑包含 1-3 个图像对象和一个 text 对象 + + + + 输入图像的 URL 或 Base64 编码数据。图像编辑支持 1-3 张图像 + + + + 正面提示词,描述要生成或编辑的图像内容、风格和构图 + + + + 消息发送者的角色。必须设置为 user + + Possible values: `user` + + + + 用于多模态图像生成和编辑的模型 ID。可用值为 qwen-image-3.0-pro 和 qwen-image-3.0。它不在本 schema 的 `required` 列表中,因为 Comfy Router 会从 /v2/models/qwen/\{model} 的 `{model}` 路径段中填充它,所以 Router 调用方会省略它;而直接向 /proxy/ 路由发起的 v1 调用则必须提供它。 + + + + 用于控制图像生成的附加参数 + + + + 输出图像的数量。范围 1-6,默认为 1 + + Range: `1` to `6` + + + + 负面提示词,描述你不希望在图像中出现的内容 + + + + 是否启用智能提示词重写。默认为 true + + + + 提示词重写方法,direct(默认,T2I 和 I2I 均支持)或 agent(仅 T2I) + + Possible values: `direct`, `agent` + + + + 用于控制随机性的随机数种子。范围 [0, 2147483647] + + Range: `0` to `2147483647` + + + + 输出图像分辨率,格式为 width*height,例如 1024*1024。API 接受的像素面积介于 262144 (512*512) 和 6553600 (2560*2560) 之间,宽高比介于 1:8 和 8:1 之间。如果未指定,模型会根据提示词自动推荐分辨率 + + + + 是否添加水印。默认为 false + + +本文档生成自 Router 在 `GET /v2/models/qwen/qwen-image-3.0/openapi.json` 提供的 schema,它也是请求到达提供商之前 Router 用来校验调用的同一份文档。 + +### 输出 + + + 失败请求的错误码(请求成功时不返回) + + + + 失败请求的详细信息(请求成功时不返回) + + + + 包含模型生成结果 + + + + 结果选项列表 + + + + 任务停止的原因。任务正常完成时该值为 stop + + + + 模型返回的消息 + + + + 包含已生成图像信息的消息内容 + + + + 已生成图像的 URL,PNG 格式。链接有效期为 24 小时 + + + + 代替图像返回的文本元素。仅携带该字段的元素不会产生任何资产,因此调用方应依据 `image` 判断是否完成,而不是依据是否存在内容元素 + + + + 消息的角色。固定为 assistant + + + + 唯一请求标识符 + + + + 本次调用的资源用量。仅在成功时返回 + + + + 请求中的输入图像数量。文生图返回 0 + + + + 输入图像的计费档位,qima_input_1k 或 qima_input_2k,由输出分辨率的像素面积决定 + + + + 最终输出图像的高度(像素) + + + + 实际返回的输出图像数量 + + + + 输出图像的计费档位,qima_output_1k 或 qima_output_2k,由输出分辨率的像素面积决定 + + + + 最终输出图像的宽度(像素) + + +## 示例 + +### 输入 + +```json +{ + "input": { + "messages": [ + { + "content": [ + { + "text": "A single red maple leaf on a plain white background." + } + ], + "role": "user" + } + ] + } +} +``` + +### 输出 + +```json +{ + "output": { + "choices": [ + { + "finish_reason": "stop", + "message": { + "content": [ + { + "image": "https://example.invalid/qwen/generated.png" + } + ], + "role": "assistant" + } + } + ] + }, + "request_id": "9f2c1b3a-5d4e-4a67-8b90-1c2d3e4f5a6b", + "usage": { + "input_image_count": 0, + "output_height": 512, + "output_image_count": 1, + "output_image_type": "qima_output_1k", + "output_width": 512 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv2/code.mdx b/zh/development/comfy-router/models/recraft/recraftv2/code.mdx new file mode 100644 index 000000000..7e3853d30 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv2/code.mdx @@ -0,0 +1,178 @@ +--- +title: "配合 Comfy Router 使用 Recraft V2" +description: "通过 Comfy Router 调用 recraft/recraftv2:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V2" +translationSourceHash: 8215b336 +translationFrom: development/comfy-router/models/recraft/recraftv2/code.mdx +translationBlockHashes: + "_intro": 711eec4f + "Quick start": e5c05b86 + "Schema": 7c25b55c + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv2` 的 API 参考,由 Comfy Router 提供,来源于 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `recraft/recraftv2` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv2", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv2", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在 simple 级别,人物以静态、干净的风格直视相机。dynamic 和 eccentric 级别则引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色数组 + + + + + + + + 不嵌入文字版式 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受 enum 约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写,也就是 Comfy Router 以 `recraft/` 形式寻址的那一组,包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一写出,而不是通过引用点名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 GET /openapi 提供的规范中剪除,若指向它就会在所提供的文档中形成悬空指针。四种 `recraftv4_styles*` 拼写还额外要求 `style_id`,参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四种 `recraftv4_styles*` 模型要求此字段必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 生成一个,该端点由同一代理在相同凭据下提供。此路由上没有任何机制强制这一配对关系:请求体会原样转发给 Recraft,因此不带 style_id 的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +本文档依据 Router 在 `GET /v2/models/recraft/recraftv2/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前也会用同一份文档校验调用。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv3/code.mdx b/zh/development/comfy-router/models/recraft/recraftv3/code.mdx new file mode 100644 index 000000000..08712ca11 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv3/code.mdx @@ -0,0 +1,178 @@ +--- +title: "使用 Comfy Router 调用 Recraft V3" +description: "通过 Comfy Router 调用 recraft/recraftv3:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V3" +translationSourceHash: 05db64a5 +translationFrom: development/comfy-router/models/recraft/recraftv3/code.mdx +translationBlockHashes: + "_intro": de70f54d + "Quick start": 0e77fb0e + "Schema": 49f16357 + "Examples": 5c6fff21 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/recraft/recraftv3.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv3` 的 API 参考,由 Comfy Router 提供,来自 Recraft。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `recraft/recraftv3` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv3` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv3", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv3", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv3 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在简单的级别上,人物以静态、简洁的风格直视相机。动态和怪诞的级别则引入动感与创造力。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文字排版 + + + + 用于生成的模型(例如 "recraftv3")。此字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写(即 Comfy Router 以 `recraft/` 寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。此处将它们逐一列出而不是以引用方式命名,是因为声明它们的 RecraftGenerationModel 组件没有任何地方对其进行 `$ref` 引用,因此会从 GET /openapi 提供的规范中被剪除,若在提供的文档中指向它将产生悬空指针。四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型**必填**:Recraft 会拒绝那些没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 生成一个,该代理使用相同的凭证提供此接口。此路由上没有任何机制强制这一配对关系:请求体会原样转发给 Recraft,因此缺少它的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +源自 Router 在 `GET /v2/models/recraft/recraftv3/openapi.json` 提供的 schema,即它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 此次生成所使用的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx new file mode 100644 index 000000000..d21949827 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "将 Recraft V4.1 Pro Vector 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_pro_vector:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Pro Vector" +translationSourceHash: 333d4843 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro-vector/code.mdx +translationBlockHashes: + "_intro": e13c9640 + "Quick start": 8fca5324 + "Schema": c1492000 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_pro_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_pro_vector` 的 API 参考,由 Comfy Router 从 Recraft 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `recraft/recraftv4_1_pro_vector` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在简单的级别上,人物以静态、干净的风格直视相机。动态和古怪的级别会引入运动感和创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文字布局 + + + + 用于生成的模型(例如 "recraftv3")。此字段并不限定为枚举值:代理会原样转发调用方发送的内容。Comfy 提供的拼写,即 Comfy Router 以 `recraft/` 寻址的那一组,包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将其逐一列出而不以引用的方式命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方通过 `$ref` 引用,因此会从 GET /openapi 所提供的规范中被剪除,指向它的指针在所提供的文档中会成为悬空引用。这四种 `recraftv4_styles*` 拼写还额外要求 `style_id`,详情见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应再提供 style。四种 `recraftv4_styles*` 模型**要求**必须提供:Recraft 会拒绝没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 生成一个,该端点由同一代理使用相同凭据提供。此路由上没有任何机制强制校验这种配对关系,请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +本文档根据 Router 在 `GET /v2/models/recraft/recraftv4_1_pro_vector/openapi.json` 提供的 schema 生成,这与请求到达提供商之前用于校验调用的文档为同一份。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数量 + + + + 生成图像信息的数组 + + + + 生成图像的唯一标识符 + + + + 访问生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx new file mode 100644 index 000000000..bac532edb --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "将 Recraft V4.1 Pro 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_pro:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Pro" +translationSourceHash: 3de4d0c4 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-pro/code.mdx +translationBlockHashes: + "_intro": d23b84cb + "Quick start": 9f2d5923 + "Schema": 2f41a4b9 + "Examples": 5c6fff21 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/recraft/recraftv4_1_pro.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 Recraft 提供的 `recraft/recraftv4_1_pro` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是同样的调用,但通过原生 HTTP 发起。 + +**模型 ID:** `recraft/recraftv4_1_pro` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 已生成图像的控制参数 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、干净的风格直视相机。动态和古怪级别会引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 一组偏好的颜色 + + + + + + + + 不要嵌入文字版式 + + + + 用于生成的模型(例如 "recraftv3")。此字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 随附提供的拼写(即 Comfy Router 以 `recraft/` 形式寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一写出,而不是按引用命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此已从 GET /openapi 所提供的规范中剪除,指向它的指针会在所提供的文档中悬空。另外,四种 `recraftv4_styles*` 拼写还要求提供 `style_id`,参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 应用于已生成图像的风格(例如 "digital_illustration") + + + + 应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四种 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 获取一个,该接口由同一代理以相同凭据提供。此路由不会强制校验这种配对关系:请求体会原样转发给 Recraft,因此不带该项的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +该文档由 Router 在 `GET /v2/models/recraft/recraftv4_1_pro/openapi.json` 处提供的 schema 生成,Router 会在请求到达提供商之前用它校验调用。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx new file mode 100644 index 000000000..4eacbc9a3 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx @@ -0,0 +1,177 @@ +--- +title: "通过 Comfy Router 使用 Recraft V4.1 Utility Pro Vector" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_utility_pro_vector:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Utility Pro Vector" +translationSourceHash: aa6c4d7e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro-vector/code.mdx +translationBlockHashes: + "_intro": 1ee48b43 + "Quick start": 644e3b95 + "Schema": ddc74cf2 + "Examples": 5c6fff21 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/recraft/recraftv4_1_utility_pro_vector.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_pro_vector` 的 API 参考,由 Comfy Router 从 Recraft 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。下面的 Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `recraft/recraftv4_1_utility_pro_vector` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### Input + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、简洁的风格直视相机。动态和古怪的级别则会引入动感与创意。 + + 范围:`0` 至 `5` + + + + RGB 颜色值 + + + + + + + + 首选颜色的数组 + + + + + + + + 不嵌入文本排版 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受枚举约束:代理会原样转发调用方发送的任何内容。Comfy 提供的拼写,也就是 Comfy Router 以 `recraft/` 形式寻址的集合,包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一列出而非按引用命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方以 `$ref` 引用,因此会从 GET /openapi 所提供的规范中被剪除,指向它的指针在所提供的文档中就会悬空。四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 至 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 要应用于已生成图像的风格(例如 "digital_illustration") + + + + 要应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,同一代理以相同凭据提供该接口。此路由不会强制校验这种配对关系:请求体会原样转发给 Recraft,因此缺少该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +由 Router 在 `GET /v2/models/recraft/recraftv4_1_utility_pro_vector/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### Output + + + 生成创建时的 Unix 时间戳 + + + + 用于本次生成所消耗的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx new file mode 100644 index 000000000..f6f44885e --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx @@ -0,0 +1,177 @@ +--- +title: "将 Recraft V4.1 Utility Pro 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_utility_pro:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Utility Pro" +translationSourceHash: 748ad94e +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-pro/code.mdx +translationBlockHashes: + "_intro": abd5502a + "Quick start": 53f9b90e + "Schema": fcf4a5c5 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_pro` 的 API 参考文档,由 Recraft 通过 Comfy Router 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `recraft/recraftv4_1_utility_pro` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 已生成图像的控制项 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、干净的风格直视相机。动态和怪诞级别则引入运动感与创造力。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好的颜色数组 + + + + + + + + 不嵌入文字版式 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受 enum 约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写(即 Comfy Router 以 `recraft/` 形式寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里直接列出这些值,而不是通过引用来命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 GET /openapi 所提供的规范中被裁掉,指向它的指针在所提供的文档中会悬空。四个 `recraftv4_styles*` 拼写还额外需要 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 应用于已生成图像的风格(例如 "digital_illustration") + + + + 应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 创建一个,同一个代理会以相同的凭据提供该端点。此路由不会强制校验这种配对关系:请求体会原样转发给 Recraft,因此不带该参数的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_1_utility_pro/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx new file mode 100644 index 000000000..1f5cda081 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx @@ -0,0 +1,177 @@ +--- +title: "使用 Recraft V4.1 Utility Vector 搭配 Comfy Router" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_utility_vector:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Utility Vector" +translationSourceHash: a4f3c412 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility-vector/code.mdx +translationBlockHashes: + "_intro": 996cbb6d + "Quick start": a5357e10 + "Schema": 7877c6fc + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility_vector` 的 API 参考,由 Comfy Router 从 Recraft 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起相同的调用。 + +**Model ID:** `recraft/recraftv4_1_utility_vector` + +**Endpoint:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### Input + + + 已生成图像的控件 + + + + 定义图像的艺术基调。在 simple 级别下,人物以静态、干净的风格直视相机。dynamic 和 eccentric 级别则引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文本版式 + + + + 用于生成的模型(例如 "recraftv3")。此字段并不限定为枚举:代理会原样转发调用方发送的内容。Comfy 所提供的拼写(即 Comfy Router 以 `recraft/` 形式寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一写出而不是以引用的方式指名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 `GET /openapi` 所提供的规范中被裁剪掉,指向它的指针就会在所提供的文档中悬空。四个 `recraftv4_styles*` 拼写还额外需要 `style_id`,请参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 应用于已生成图像的样式(例如 "digital_illustration") + + + + 要应用于已生成图像的样式 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应再提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝缺少 style_id 或样式引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,同一个代理在相同凭据下提供该端点。此路由上没有任何机制强制这一配对关系:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_1_utility_vector/openapi.json` 提供的 schema 生成,它也是 Router 在请求到达提供商之前用来校验调用的同一份文档。 + +### Output + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx new file mode 100644 index 000000000..57aa5b4ab --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx @@ -0,0 +1,178 @@ +--- +title: "将 Recraft V4.1 Utility 与 Comfy Router 搭配使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_utility:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Utility" +translationSourceHash: 490ee1f0 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-utility/code.mdx +translationBlockHashes: + "_intro": 840be098 + "Quick start": 5eee19b5 + "Schema": 1f2be5cd + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_utility.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_utility` 的 API 参考,由 Comfy Router 提供,模型来自 Recraft。 + +## Quick start {#quick-start} + +在 [Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**Model ID:** `recraft/recraftv4_1_utility` + +**Endpoint:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_utility` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_utility", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_utility", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_utility \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 用于已生成图像的控制项 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、简洁的风格直视相机。动态和古怪的级别会引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 一个偏好颜色的数组 + + + + + + + + 不嵌入文本版式 + + + + 用于生成的模型(例如 "recraftv3")。此字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写(即 Comfy Router 以 `recraft/` 寻址的那一组)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一写出,而不是通过引用命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 `GET /openapi` 所提供的规范中被裁剪掉,所以指向它的指针在所提供的文档中会是悬空的。四种 `recraftv4_styles*` 拼写还额外要求 `style_id`,请参阅该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 要应用于已生成图像的风格(例如 "digital_illustration") + + + + 要应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四种 `recraftv4_styles*` 模型将其标记为必填:Recraft 会拒绝那些不带 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,该端点由同一个代理在相同凭据下提供。此路由上没有任何机制强制这一配对:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +内容根据 Router 在 `GET /v2/models/recraft/recraftv4_1_utility/openapi.json` 所提供的架构生成,这也是请求到达提供商之前它所依据的同一份校验调用文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所消耗的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx new file mode 100644 index 000000000..b8785b4dc --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "结合 Comfy Router 使用 Recraft V4.1 Vector" +description: "通过 Comfy Router 调用 recraft/recraftv4_1_vector:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1 Vector" +translationSourceHash: 663bb105 +translationFrom: development/comfy-router/models/recraft/recraftv4-1-vector/code.mdx +translationBlockHashes: + "_intro": 60d9fc16 + "Quick start": aea4706b + "Schema": 9668bdeb + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1_vector` 的 API 参考文档,由 Comfy Router 提供服务,模型来自 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `recraft/recraftv4_1_vector` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 架构 + +### 输入 + + + 生成图像的控制项 + + + + 定义图像的艺术基调。在简单级别,人物以静态、简洁的风格直视相机。动态和夸张级别则会引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 一组偏好的颜色 + + + + + + + + 不嵌入文本排版 + + + + 用于生成的模型(例如 "recraftv3")。此字段**不**受枚举约束:代理会原样转发调用方发送的任何内容。Comfy 随附的拼写(即 Comfy Router 以 `recraft/` 形式寻址的那一组)为 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一列出,而不是通过引用来命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因而会从 GET /openapi 所提供的规范中被裁剪掉,所以指向它的指针在所提供的文档中会悬空。四个 `recraftv4_styles*` 拼写还额外需要 `style_id`,请参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型**必填**该字段:Recraft 会拒绝不带 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 创建一个,该接口由同一个代理在相同的凭证下提供。此路由上没有任何机制强制这一配对:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_1_vector/openapi.json` 所提供的架构生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数量 + + + + 生成图像信息的数组 + + + + 生成图像的唯一标识符 + + + + 访问生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-1/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-1/code.mdx new file mode 100644 index 000000000..03d69edc8 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-1/code.mdx @@ -0,0 +1,177 @@ +--- +title: "搭配 Comfy Router 使用 Recraft V4.1" +description: "通过 Comfy Router 调用 recraft/recraftv4_1:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4.1" +translationSourceHash: 381c3166 +translationFrom: development/comfy-router/models/recraft/recraftv4-1/code.mdx +translationBlockHashes: + "_intro": 35b040e2 + "Quick start": 4cdf273e + "Schema": 939c5675 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_1.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_1` 的 API 参考文档,由 Comfy Router 提供,模型来自 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `recraft/recraftv4_1` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_1` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_1", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_1", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_1 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、干净的风格直视相机。动态与怪诞级别则会引入动感和创意。 + + 范围:`0` 至 `5` + + + + RGB 颜色值 + + + + + + + + 一组首选颜色 + + + + + + + + 不嵌入文本版式 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 自带的拼写,即 Comfy Router 以 `recraft/` 形式寻址的集合,包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一列出,而不是通过引用指名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方以 `$ref` 引用,因此会从 `GET /openapi` 所提供的规范中被裁剪掉,若使用指向它的指针,就会在所服务的文档中悬空。四个 `recraftv4_styles*` 拼写还额外要求提供 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 至 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应再提供 style。四个 `recraftv4_styles*` 模型要求必须提供该项:Recraft 会拒绝没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 创建一个,该端点由同一代理使用相同凭据提供。此路由上没有任何机制强制这种配对:请求体会原样转发给 Recraft,因此不带该项的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +本文档根据 Router 在 `GET /v2/models/recraft/recraftv4_1/openapi.json` 提供的 schema 生成,它也是 Router 在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-pro/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-pro/code.mdx new file mode 100644 index 000000000..c856eb8f1 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "在 Comfy Router 中使用 Recraft V4 Pro" +description: "通过 Comfy Router 调用 recraft/recraftv4_pro:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4 Pro" +translationSourceHash: bb249fa1 +translationFrom: development/comfy-router/models/recraft/recraftv4-pro/code.mdx +translationBlockHashes: + "_intro": bcf3db7b + "Quick start": 740394ca + "Schema": 1cc0dc86 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_pro.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_pro` 的 API 参考,由 Comfy Router 从 Recraft 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的相同调用。 + +**模型 ID:** `recraft/recraftv4_pro` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的艺术基调。在较低的级别下,人物以静态、干净利落的风格直视相机。动态和古怪的级别会引入动感与创造力。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文字排版 + + + + 用于生成的模型(例如 "recraftv3")。此字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 内置的拼写方式(即 Comfy Router 以 `recraft/` 形式寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们完整列出而非通过引用命名,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 GET /openapi 提供的规范中被裁剪掉,指向它的指针在所提供的文档中将会悬空。其中四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,该接口由同一个代理使用相同的凭据提供。此路由不会强制校验这种配对关系:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会送达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_pro/openapi.json` 提供的 schema 生成,该文档也正是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成所使用的积分数 + + + + 生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx new file mode 100644 index 000000000..75755bc04 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "将 Recraft V4 Styles Pro Vector 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_styles_pro_vector:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4 Styles Pro Vector" +translationSourceHash: 40752aaa +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro-vector/code.mdx +translationBlockHashes: + "_intro": 5d5ca072 + "Quick start": 27b0d8b1 + "Schema": b37c67d0 + "Examples": 5c6fff21 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/recraft/recraftv4_styles_pro_vector.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles_pro_vector` 的 API 参考文档,由 Comfy Router 提供,模型来自 Recraft。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `recraft/recraftv4_styles_pro_vector` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 生成图像的控制参数 + + + + 定义图像的artistic风格基调。在 simple 级别下,人物以静态、干净的风格直视相机。dynamic 和 eccentric 级别则引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 首选颜色的数组 + + + + + + + + 不嵌入文本布局 + + + + 用于生成的模型(例如 "recraftv3")。此字段并未限制为枚举值:代理会原样转发调用方发送的任何内容。Comfy 提供的拼写(即 Comfy Router 以 `recraft/` 寻址的集合)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。它们在此逐一写出,而不是通过引用名称列出,因为声明它们的 RecraftGenerationModel 组件没有被任何地方通过 `$ref` 引用,因此已从 GET /openapi 所提供的规范中裁剪掉,指向它的指针在所提供的文档中会变成悬空引用。四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型必填:Recraft 会拒绝不带 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,该端点由同一代理使用相同凭据提供。此路由不会强制校验这一配对关系:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_styles_pro_vector/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 生成所使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx new file mode 100644 index 000000000..76f49ee17 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx @@ -0,0 +1,178 @@ +--- +title: "将 Recraft V4 Styles Pro 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 recraft/recraftv4_styles_pro:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4 Styles Pro" +translationSourceHash: 1fcaf25c +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-pro/code.mdx +translationBlockHashes: + "_intro": 62caf367 + "Quick start": ade5d4ae + "Schema": 05ebdd18 + "Examples": 5c6fff21 +--- +{/* 生成文件。由 `pnpm code-pages:gen` 从 router-schemas/recraft/recraftv4_styles_pro.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles_pro` 的 API 参考,由 Comfy Router 从 Recraft 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `recraft/recraftv4_styles_pro` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 已生成图像的控制参数 + + + + 定义图像的艺术基调。在简单级别,人物以静态、干净的风格直视相机。动态与 eccentric 级别则引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文本排版 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受枚举约束:代理会原样转发调用方发送的任何内容。Comfy 随附的拼写(即 Comfy Router 以 `recraft/` 寻址的那一组)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一列出,而不是通过引用命名,因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref`,因此在 GET /openapi 提供的规范中会被裁剪掉,指向它的指针会在所提供的文档中悬空。这四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,请参阅该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的大小(例如 "1024x1024") + + + + 应用于已生成图像的风格(例如 "digital_illustration") + + + + 应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应再提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,该代理以相同的凭据提供此接口。此路由不会强制这种配对关系:请求体会原样转发给 Recraft,因此缺少该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +根据 Router 在 `GET /v2/models/recraft/recraftv4_styles_pro/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 本次生成使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx new file mode 100644 index 000000000..817c295d0 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx @@ -0,0 +1,178 @@ +--- +title: "使用 Recraft V4 Styles Vector 与 Comfy Router" +description: "通过 Comfy Router 调用 recraft/recraftv4_styles_vector:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Recraft V4 Styles Vector" +translationSourceHash: b134e87f +translationFrom: development/comfy-router/models/recraft/recraftv4-styles-vector/code.mdx +translationBlockHashes: + "_intro": 15b084fb + "Quick start": 8bf59c8c + "Schema": 2e061fe2 + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles_vector.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles_vector` 的 API 参考,该模型由 Comfy Router 提供,来自 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起相同的调用。 + +**模型 ID:** `recraft/recraftv4_styles_vector` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles_vector", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles_vector", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles_vector \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 模式 + +### 输入 + + + 生成图像的控制项 + + + + 定义图像的艺​​术基调。在简单级别下,人物以静态且干净的风格直视相机。动态和古怪的级别会引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文本布局 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写(也就是 Comfy Router 以 `recraft/` 寻址的那一组)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一写出,而不是通过引用来命名,因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因此会从 GET /openapi 所提供的规范中被裁剪掉,指向它的指针会在所提供的文档中悬空。这四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 生成图像的尺寸(例如 "1024x1024") + + + + 应用于生成图像的风格(例如 "digital_illustration") + + + + 应用于生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。这四个 `recraftv4_styles*` 模型要求必填该字段:Recraft 会拒绝没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 生成一个,该代理在同一凭据下提供此接口。此路由上没有任何机制强制这种配对,请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +由 Router 在 `GET /v2/models/recraft/recraftv4_styles_vector/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 此次生成使用的积分数量 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 用于访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4-styles/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4-styles/code.mdx new file mode 100644 index 000000000..90b7ea4ce --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4-styles/code.mdx @@ -0,0 +1,177 @@ +--- +title: "使用 Recraft V4 Styles 搭配 Comfy Router" +description: "通过 Comfy Router 调用 recraft/recraftv4_styles:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Recraft V4 Styles" +translationSourceHash: 6921e08b +translationFrom: development/comfy-router/models/recraft/recraftv4-styles/code.mdx +translationBlockHashes: + "_intro": f35eca87 + "Quick start": b8651bb0 + "Schema": 9b9320da + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4_styles.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4_styles` 的 API 参考文档,由 Comfy Router 提供服务,源自 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `recraft/recraftv4_styles` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4_styles` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4_styles", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4_styles", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4_styles \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 已生成图像的控制项 + + + + 定义图像的艺术基调。在 simple 级别下,人物以静态、干净的风格直视相机。dynamic 和 eccentric 级别则会引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 偏好颜色的数组 + + + + + + + + 不嵌入文本排版 + + + + 用于生成的模型(例如 "recraftv3")。此字段并未约束为枚举值:代理会原样转发调用方发送的内容。Comfy 所提供的拼写,也就是 Comfy Router 以 `recraft/` 寻址的那一组,包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 以及 recraftv4_styles_pro_vector。此处直接写出这些名称,而不是按引用指明,是因为声明它们的 RecraftGenerationModel 组件没有被任何地方 `$ref` 引用,因而会从 GET /openapi 所提供的规范中被裁剪掉,指向它的指针在所提供文档中会成为悬空指针。四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,详见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 应用于已生成图像的风格(例如 "digital_illustration") + + + + 要应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应再提供 style。四个 `recraftv4_styles*` 模型均必填:Recraft 会拒绝没有 style_id 或风格引用的请求。可通过 `POST /proxy/recraft/styles` 生成一个,该端点由同一个代理使用相同的凭据提供。此路由上没有任何机制强制这一配对关系:请求体会原样转发给 Recraft,因此不带 style_id 的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +本文档由 Router 在 `GET /v2/models/recraft/recraftv4_styles/openapi.json` 提供的 schema 生成,也是在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 生成创建时的 Unix 时间戳 + + + + 生成所使用的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + diff --git a/zh/development/comfy-router/models/recraft/recraftv4/code.mdx b/zh/development/comfy-router/models/recraft/recraftv4/code.mdx new file mode 100644 index 000000000..8b7480904 --- /dev/null +++ b/zh/development/comfy-router/models/recraft/recraftv4/code.mdx @@ -0,0 +1,178 @@ +--- +title: "搭配 Comfy Router 使用 Recraft V4" +description: "通过 Comfy Router 调用 recraft/recraftv4:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Recraft V4" +translationSourceHash: a459e810 +translationFrom: development/comfy-router/models/recraft/recraftv4/code.mdx +translationBlockHashes: + "_intro": fad0b1c2 + "Quick start": abde0945 + "Schema": f8f3705d + "Examples": 5c6fff21 +--- +{/* GENERATED FILE. Generated from router-schemas/recraft/recraftv4.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`recraft/recraftv4` 的 API 参考,由 Comfy Router 提供,来自 Recraft。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `recraft/recraftv4` + +**端点:** `POST https://api.comfy.org/v2/models/recraft/recraftv4` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "recraft/recraftv4", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("recraft/recraftv4", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/recraft/recraftv4 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 架构 + +### 输入 + + + 已生成图像的控制参数 + + + + 定义图像的艺术基调。在简单级别下,人物以静态、干净的方式直视相机。动态和怪诞级别则引入动感与创意。 + + 范围:`0` 到 `5` + + + + RGB 颜色值 + + + + + + + + 首选颜色的数组 + + + + + + + + 不要嵌入文本布局 + + + + 用于生成的模型(例如 "recraftv3")。该字段不受枚举约束:代理会原样转发调用方发送的内容。Comfy 提供的拼写(即 Comfy Router 以 `recraft/` 寻址的那一组)包括 recraftv2、recraftv3、recraftv4、recraftv4_pro、recraftv4_1、recraftv4_1_utility、recraftv4_1_pro、recraftv4_1_utility_pro、recraftv4_styles、recraftv4_styles_pro、recraftv4_1_vector、recraftv4_1_utility_vector、recraftv4_1_pro_vector、recraftv4_1_utility_pro_vector、recraftv4_styles_vector 和 recraftv4_styles_pro_vector。这里将它们逐一列出,而不是通过引用命名,因为声明它们的 RecraftGenerationModel 组件没有被任何内容 `$ref` 引用,因此会从 GET /openapi 所提供的规范中裁剪掉,指向它的指针在所提供的文档中会悬空。四个 `recraftv4_styles*` 拼写还额外要求 `style_id`,请参见该字段。 + + + + 要生成的图像数量 + + 范围:`1` 到 `6` + + + + 描述要生成图像的文本提示词 + + + + 已生成图像的尺寸(例如 "1024x1024") + + + + 要应用于已生成图像的风格(例如 "digital_illustration") + + + + 要应用于已生成图像的风格 ID(例如 "123e4567-e89b-12d3-a456-426614174000")。如果提供了 style_id,则不应提供 style。四个 `recraftv4_styles*` 模型要求必填:Recraft 会拒绝不带 style_id 或风格引用的请求。可使用 `POST /proxy/recraft/styles` 生成一个,该接口由同一代理使用相同的凭据提供服务。此路由上没有任何机制强制这种配对:请求体会原样转发给 Recraft,因此不带该字段的 `recraftv4_styles*` 调用会到达合作伙伴并返回 4xx。 + + +本文档根据 Router 在 `GET /v2/models/recraft/recraftv4/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 创建该次生成时的 Unix 时间戳 + + + + 该次生成所使用的积分数 + + + + 已生成图像信息的数组 + + + + 已生成图像的唯一标识符 + + + + 访问已生成图像的 URL + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "created": 1767225600, + "credits": 1, + "data": [ + { + "image_id": "3f7a1b28-5c0d-4e91-8a6f-1b2c3d4e5f60", + "url": "https://example.invalid/recraft/recraftv3/generated.png" + } + ] +} +``` + + + diff --git a/zh/development/comfy-router/models/runway/aleph2/code.mdx b/zh/development/comfy-router/models/runway/aleph2/code.mdx new file mode 100644 index 000000000..776c5fc16 --- /dev/null +++ b/zh/development/comfy-router/models/runway/aleph2/code.mdx @@ -0,0 +1,174 @@ +--- +title: "将 Aleph 2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 runway/aleph2:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Aleph 2" +translationSourceHash: 583a548e +translationFrom: development/comfy-router/models/runway/aleph2/code.mdx +translationBlockHashes: + "_intro": c0d540d3 + "Quick start": b9ab4ba4 + "Schema": cb584483 + "Examples": 5512235a +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/runway/aleph2.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`runway/aleph2` 的 API 参考,由 Comfy Router 从 Runway 提供。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `runway/aleph2` + +**端点:** `POST https://api.comfy.org/v2/models/runway/aleph2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/aleph2", + { + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/aleph2", { + promptText: "recolor the scene in cool blue tones", + videoUri: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/aleph2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"recolor the scene in cool blue tones\", \"videoUri\": \"https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4\"}" +``` + + +## Schema {#schema} + +### 输入 + + + 影响内容审核系统行为的设置。 + + + + 当设置为 `low` 时,内容审核系统对于阻止生成包含可识别公众人物的内容会不那么严格。 + + 可能的值:`auto`、`low` + + + + 放置在输入视频中特定时间点的定时引导图像。最多 5 个关键帧。 + + + + 用于生成的模型。在 Comfy Router 路由 `POST /v2/models/runway/{model}` 上,该字段由路径提供,禁止发送;在 v1 的 `POST /proxy/runway/video_to_video` 路由上,该字段为必填,且限定为 RunwayVideoToVideoModelEnum(`aleph2`)。 + + + + 一个最多包含 5 个图像关键帧的列表,用于在视频中的特定时间点引导编辑。 + + + + 该图像在输出视频中应用的位置。 + + + + 包含编码图像的 HTTPS URL、Runway 或 data URI。 + + + + 一个非空字符串,最多 1000 个字符,描述输出中应出现的内容。 + + + + 用于生成的随机种子。 + + 范围:`0` 到 `4294967295` + + 格式:`int64` + + + + 要编辑的输入视频(HTTPS URL、Runway 上传 URI 或 data URI)。时长必须不超过 30 秒。 + + +由 Router 在 `GET /v2/models/runway/aleph2/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 任务创建时间戳 + + 格式:`date-time` + + + + 任务 ID + + + + 已完成生成的资源 URL。对于 `runway/gen4_turbo` 和 `runway/aleph2`,每个元素都是一个视频 URL。任务成功终止后提供;该列表就是结果本身。 + + + + 介于 0 和 1 之间的浮点值,表示任务的进度。仅在状态为 RUNNING 时可用。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + Runway 任务可能的状态。 + + 可能的值:`SUCCEEDED`、`RUNNING`、`FAILED`、`PENDING`、`CANCELLED`、`THROTTLED` + + +## 示例 + +### 输入 + +```json +{ + "promptText": "recolor the scene in cool blue tones", + "videoUri": "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4" +} +``` + +### 输出 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/zh/development/comfy-router/models/runway/gen4-image/code.mdx b/zh/development/comfy-router/models/runway/gen4-image/code.mdx new file mode 100644 index 000000000..44f737e74 --- /dev/null +++ b/zh/development/comfy-router/models/runway/gen4-image/code.mdx @@ -0,0 +1,147 @@ +--- +title: "通过 Comfy Router 使用 Gen 4 Image" +description: "通过 Comfy Router 调用 runway/gen4_image:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Gen 4 Image" +translationSourceHash: d0d00b89 +translationFrom: development/comfy-router/models/runway/gen4-image/code.mdx +translationBlockHashes: + "_intro": cb3c6faa + "Quick start": eb67adf8 + "Schema": d889abf3 + "Examples": 291dbf54 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/runway/gen4_image.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`runway/gen4_image` 的 API 参考,由 Comfy Router 从 Runway 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `runway/gen4_image` + +**端点:** `POST https://api.comfy.org/v2/models/runway/gen4_image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_image", + { + "promptText": "a red circle", + "ratio": "1024:1024", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_image", { + promptText: "a red circle", + ratio: "1024:1024", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"promptText\": \"a red circle\", \"ratio\": \"1024:1024\"}" +``` + + +## Schema + +### Input + + + 用于生成的模型。在 Comfy Router 路由 `POST /v2/models/runway/{model}` 上,此字段由路径提供,且绝不能发送;在 v1 `POST /proxy/runway/text_to_image` 路由上,该字段为必填,且限制为 `gen4_image`。 + + + + 用于图像生成的文本提示词 + + + + 可能的值:`1920:1080`, `1080:1920`, `1024:1024`, `1360:768`, `1080:1080`, `1168:880`, `1440:1080`, `1080:1440`, `1808:768`, `2112:912` + + + + 用于引导生成的参考图像数组 + + + + 包含编码图像的 HTTPS URL 或 data URI + + +由 Router 在 `GET /v2/models/runway/gen4_image/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前它用于校验调用的同一份文档。 + +### Output + + + 任务创建时间戳 + + 格式:`date-time` + + + + 任务 ID + + + + 已完成生成的资源网址:对于 `runway/gen4_image`,每个元素都是一个 IMAGE URL。任务成功终止后才会出现;此列表就是结果。 + + + + 介于 0 和 1 之间的浮点值,表示任务的进度。仅在状态为 RUNNING 时可用。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + Runway 任务可能的状态。 + + 可能的值:`SUCCEEDED`, `RUNNING`, `FAILED`, `PENDING`, `CANCELLED`, `THROTTLED` + + +## 示例 + +### 输入 + +```json +{ + "promptText": "a red circle", + "ratio": "1024:1024" +} +``` + +### 输出 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_image/generated.png" + ], + "status": "SUCCEEDED" +} +``` + + diff --git a/zh/development/comfy-router/models/runway/gen4-turbo/code.mdx b/zh/development/comfy-router/models/runway/gen4-turbo/code.mdx new file mode 100644 index 000000000..f39474be8 --- /dev/null +++ b/zh/development/comfy-router/models/runway/gen4-turbo/code.mdx @@ -0,0 +1,162 @@ +--- +title: "将 Gen 4 Turbo 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 runway/gen4_turbo:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Gen 4 Turbo" +translationSourceHash: 5c15b939 +translationFrom: development/comfy-router/models/runway/gen4-turbo/code.mdx +translationBlockHashes: + "_intro": 2edfaa1c + "Quick start": fcdc7564 + "Schema": 5def72fe + "Examples": c4244e75 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/runway/gen4_turbo.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`runway/gen4_turbo` 的 API 参考文档,由 Comfy Router 提供,模型来自 Runway。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `runway/gen4_turbo` + +**端点:** `POST https://api.comfy.org/v2/models/runway/gen4_turbo` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "runway/gen4_turbo", + { + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("runway/gen4_turbo", { + duration: 5, + promptImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + ratio: "1280:720", + seed: 42, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/runway/gen4_turbo \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 5, \"promptImage\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==\", \"ratio\": \"1280:720\", \"seed\": 42}" +``` + + +## Schema + +### 输入 + + + 可能的值:`5`、`10` + + + + 用于生成的模型。在 Comfy Router 路由 `POST /v2/models/runway/{model}` 上,该字段由路径提供,因此不得发送;在 v1 的 `POST /proxy/runway/image_to_video` 路由上,该字段为必填,且被限制为 RunwayModelEnum(`gen4_turbo`)。 + + + + 用于视频生成的图像。可以是单个 URI,也可以是带有位置信息的图像对象数组。 + + + + 用于生成的文本提示词 + + + + 可能的值:`1280:720`、`720:1280`、`1104:832`、`832:1104`、`960:960`、`1584:672`、`1280:768`、`768:1280` + + + + 用于生成的随机种子 + + 范围:`0` 到 `4294967295` + + 格式:`int64` + + +该文档由 Router 在 `GET /v2/models/runway/gen4_turbo/openapi.json` 提供的 Schema 生成,Router 在请求到达提供商之前校验调用时使用的正是同一份文档。 + +### 输出 + + + 任务创建时间戳 + + 格式:`date-time` + + + + 任务 ID + + + + 已完成生成的资源 URL。对于 `runway/gen4_turbo` 和 `runway/aleph2`,每个元素都是一个视频 URL。任务成功终止后即会出现;该列表就是结果本身。 + + + + 介于 0 和 1 之间的浮点值,表示任务的进度。仅在状态为 RUNNING 时可用。 + + 范围:`0` 到 `1` + + 格式:`float` + + + + Runway 任务的可能状态。 + + 可能的值:`SUCCEEDED`、`RUNNING`、`FAILED`、`PENDING`、`CANCELLED`、`THROTTLED` + + +## 示例 + +### 输入 + +```json +{ + "duration": 5, + "promptImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAC2klEQVR42u3TQQ0AQAgEMeTgX8W5gi8OjoROVgGhUdLhwgkEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAAkACQAJAAkACQAJAAkACQAJAAkACQAFjSy7SPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8IIAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABIAEgASABIAEgASABIAEgASABIAEgASABIAAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAadSRm+WukYdfewAAAABJRU5ErkJggg==", + "ratio": "1280:720", + "seed": 42 +} +``` + +### 输出 + +```json +{ + "createdAt": "2027-01-01T00:00:00Z", + "id": "5f7c1b28-9a03-4e61-8d2f-1b2c3d4e5f60", + "output": [ + "https://example.invalid/runway/gen4_turbo/generated.mp4" + ], + "status": "SUCCEEDED" +} +``` + + + diff --git a/zh/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx b/zh/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx new file mode 100644 index 000000000..203bfebad --- /dev/null +++ b/zh/development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx @@ -0,0 +1,171 @@ +--- +title: "使用混元 3D Part 配合 Comfy Router" +description: "通过 Comfy Router 调用 tencent/hunyuan-3d-part:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "混元 3D Part" +translationSourceHash: 48dc2ff1 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-part/code.mdx +translationBlockHashes: + "_intro": 55a0b224 + "Quick start": 2774fcbb + "Schema": 24e6a64b + "Examples": ee4faeb5 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/tencent/hunyuan-3d-part.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-part` 的 API 参考,由 Comfy Router 从 Tencent 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原生 HTTP 发起同样的调用。 + +**模型 ID:** `tencent/hunyuan-3d-part` + +**端点:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-part` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-part", + { + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-part", { + File: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-part \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}}" +``` + + +## Schema + +### 输入 + + + 用于组件生成的 3D 文件输入 + + + + 3D 文件格式类型 + + 可选值:`FBX` + + + + 待拆分为组件的 3D 文件的 URL + + 格式:`uri` + + +该文档由 Router 在 `GET /v2/models/tencent/hunyuan-3d-part/openapi.json` 提供的 schema 生成,与请求到达提供商之前 Router 用于校验调用的文档为同一份。 + +### 输出 + + + + + + + Tencent 的错误码,文档说明无错误时为空字符串。一旦存在 `Status`,Router 便不再读取该字段。 + + + + Tencent 的报错信息,文档说明无错误时为空字符串。一旦存在 `Status`,Router 便不再读取该字段。 + + + + Tencent 自己的请求标识符,用于向 Tencent 排查问题。它既不是任务ID,也不是资产。 + + + + 已完成任务生成的 3D 文件。在 Router 返回的文档中该字段存在且非空;至少一个条目携带可获取的 `Url`。这些链接由 Tencent 提供,文档说明有效期为 24 小时。 + + + + 预览图像 URL + + 格式:`uri` + + + + 3D 文件格式 + + 可选值:`GLB`、`OBJ` + + + + 文件 URL(有效期 24 小时) + + 格式:`uri` + + + + 可选值:`DONE` + + +## 示例 + +### 输入 + +```json +{ + "File": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + } +} +``` + +### 输出 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-part/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-part/parts.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx b/zh/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx new file mode 100644 index 000000000..fe3ef8f00 --- /dev/null +++ b/zh/development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx @@ -0,0 +1,183 @@ +--- +title: "通过 Comfy Router 使用混元3D智能拓扑" +description: "通过 Comfy Router 调用 tencent/hunyuan-3d-smart-topology:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "混元3D智能拓扑" +translationSourceHash: f777e523 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-smart-topology/code.mdx +translationBlockHashes: + "_intro": d7aa51d0 + "Quick start": 8de9c627 + "Schema": 31015a4b + "Examples": 6f3af127 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-smart-topology.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-smart-topology` 的 API 参考,由 Comfy Router 提供,模型来源为 Tencent。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的同一调用。 + +**模型 ID:** `tencent/hunyuan-3d-smart-topology` + +**端点:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-smart-topology", + { + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-smart-topology", { + File3D: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-smart-topology \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## Schema + +### 输入 + + + 多边形减面级别。 + + 可选值:`high`、`medium`、`low` + + + + 用于智能拓扑的 3D 文件输入 + + + + 3D 文件格式类型 + + 可选值:`OBJ`、`GLB` + + + + 需要重新拓扑的 3D 文件网址 + + 格式:`uri` + + + + 输出网格的多边形类型。默认为三角形。 + + 可选值:`triangle`、`quadrilateral` + + +该内容由 Router 在 `GET /v2/models/tencent/hunyuan-3d-smart-topology/openapi.json` 提供的 schema 生成,也是请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + 腾讯的错误码,文档说明在无错误时为空字符串。一旦存在 `Status`,Router 便不再读取该字段。 + + + + 腾讯的报错信息,文档说明在无错误时为空字符串。一旦存在 `Status`,Router 便不再读取该字段。 + + + + 腾讯自己的请求标识符,用于向腾讯排查问题。它既不是任务ID,也不是资产。 + + + + 已完成任务生成的 3D 文件。在 Router 返回的文档中该字段存在且非空;至少一个条目带有可获取的 `Url`。这些链接由腾讯提供,文档说明有效期为 24 小时。 + + + + 预览图像网址 + + 格式:`uri` + + + + 3D 文件格式 + + 可选值:`GLB`、`OBJ` + + + + 文件网址(有效期 24 小时) + + 格式:`uri` + + + + 可选值:`DONE` + + +## 示例 + +### 输入 + +```json +{ + "File3D": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 输出 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-smart-topology/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-smart-topology/retopologised.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx b/zh/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx new file mode 100644 index 000000000..acae86900 --- /dev/null +++ b/zh/development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx @@ -0,0 +1,197 @@ +--- +title: "使用 Comfy Router 调用混元3D 纹理编辑" +description: "通过 Comfy Router 调用 tencent/hunyuan-3d-texture-edit:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "混元3D 纹理编辑" +translationSourceHash: 7c8d6684 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-texture-edit/code.mdx +translationBlockHashes: + "_intro": d89c092e + "Quick start": 0d5af5f1 + "Schema": e475b723 + "Examples": d9b41615 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/tencent/hunyuan-3d-texture-edit.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-texture-edit` 的 API 参考,由 Comfy Router 从腾讯提供。 + + + +## 快速开始 {#quick-start} + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 与 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `tencent/hunyuan-3d-texture-edit` + +**端点:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-texture-edit", + { + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + "Prompt": "a kitten", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-texture-edit", { + File3D: { + Type: "FBX", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx", + }, + Prompt: "a kitten", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-texture-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File3D\": {\"Type\":\"FBX\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx\"}, \"Prompt\": \"a kitten\"}" +``` + + +## 数据结构 + +### 输入 + + + 是否启用 PBR 纹理参数;仅在使用 Prompt 时支持。 + + + + 用于纹理编辑的 3D 文件输入 + + + + 3D 文件格式类型 + + 可选值:`FBX` + + + + 需要编辑纹理的 3D 文件的 URL + + 格式:`uri` + + + + 参考图像:Base64 数据或图片网址 + + + + Base64 编码的图像。每边分辨率 128-4096,转换后的 Base64 小于 10MB。格式为 jpg、jpeg、png。 + + + + 图片网址。如果同时提供 Base64 和 Url,以 Url 为准。 + + 格式:`uri` + + + + 描述纹理编辑。Image 或 Prompt 必须提供其一,两者不能同时提供。 + + +由 Router 在 `GET /v2/models/tencent/hunyuan-3d-texture-edit/openapi.json` 提供的数据结构生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + + + + + 腾讯的错误码,无错误时文档标注为空字符串。只要存在 `Status`,Router 就不会读取它。 + + + + 腾讯的报错信息,无错误时文档标注为空字符串。只要存在 `Status`,Router 就不会读取它。 + + + + 腾讯自己的请求标识符,用于与腾讯联合排查问题。它既不是任务ID,也不是资源。 + + + + 已完成任务生成的 3D 文件。在 Router 返回的文档中存在且非空;至少一个条目带有可获取的 `Url`。这些链接属于腾讯,文档标注其有效期为 24 小时。 + + + + 预览图像网址 + + 格式:`uri` + + + + 3D 文件格式 + + 可选值:`GLB`、`OBJ` + + + + 文件网址(有效期 24 小时) + + 格式:`uri` + + + + 可选值:`DONE` + + +## 示例 + +### 输入 + +```json +{ + "File3D": { + "Type": "FBX", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.fbx" + }, + "Prompt": "a kitten" +} +``` + +### 输出 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-texture-edit/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-texture-edit/retextured.glb" + } + ], + "Status": "DONE" + } +} +``` + + diff --git a/zh/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx b/zh/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx new file mode 100644 index 000000000..bcd390dbd --- /dev/null +++ b/zh/development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx @@ -0,0 +1,171 @@ +--- +title: "通过 Comfy Router 使用混元 3D Uv" +description: "通过 Comfy Router 调用 tencent/hunyuan-3d-uv:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "混元 3D Uv" +translationSourceHash: 41573987 +translationFrom: development/comfy-router/models/tencent/hunyuan-3d-uv/code.mdx +translationBlockHashes: + "_intro": cc16c86e + "Quick start": d368c7e6 + "Schema": 925d33c0 + "Examples": dcaa8745 +--- +{/* GENERATED FILE. Generated from router-schemas/tencent/hunyuan-3d-uv.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`tencent/hunyuan-3d-uv` 的 API 参考文档,该模型来自腾讯,由 Comfy Router 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `tencent/hunyuan-3d-uv` + +**端点:** `POST https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "tencent/hunyuan-3d-uv", + { + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("tencent/hunyuan-3d-uv", { + File: { + Type: "GLB", + Url: "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/tencent/hunyuan-3d-uv \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"File\": {\"Type\":\"GLB\",\"Url\":\"https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb\"}}" +``` + + +## 架构 + +### 输入 + + + 用于 UV 展开的 3D 文件输入 + + + + 3D 文件格式类型 + + 可能的值:`FBX`、`OBJ`、`GLB` + + + + 需要进行 UV 展开的 3D 文件的 URL + + 格式:`uri` + + +由 Router 在 `GET /v2/models/tencent/hunyuan-3d-uv/openapi.json` 提供的架构生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + + + + + 腾讯的错误码,文档中记载无错误时为空字符串。一旦存在 `Status`,Router 就不会读取它。 + + + + 腾讯的报错信息,文档中记载无错误时为空字符串。一旦存在 `Status`,Router 就不会读取它。 + + + + 腾讯自己的请求标识,用于向腾讯排查问题。它既不是任务 ID,也不是资产。 + + + + 已完成任务生成的 3D 文件。在 Router 返回的文档中存在且非空;至少有一个条目带有可获取的 `Url`。这些链接来自腾讯自身,文档中记载其有效期为 24 小时。 + + + + 预览图像网址 + + 格式:`uri` + + + + 3D 文件格式 + + 可能的值:`GLB`、`OBJ` + + + + 文件网址(有效期 24 小时) + + 格式:`uri` + + + + 可能的值:`DONE` + + +## 示例 + +### 输入 + +```json +{ + "File": { + "Type": "GLB", + "Url": "https://vcg-test-1258344699.cos.ap-guangzhou.myqcloud.com/test/3d/test.glb" + } +} +``` + +### 输出 + +```json +{ + "Response": { + "ErrorCode": "", + "ErrorMessage": "", + "RequestId": "9a1c0d4e-77b2-4e0c-8f2e-2f9a1c0d4e77", + "ResultFile3Ds": [ + { + "PreviewImageUrl": "https://example.invalid/tencent/hunyuan-3d-uv/preview.png", + "Type": "GLB", + "Url": "https://example.invalid/tencent/hunyuan-3d-uv/unwrapped.glb" + } + ], + "Status": "DONE" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx new file mode 100644 index 000000000..8aa4bd8b7 --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx @@ -0,0 +1,240 @@ +--- +title: "配合 Comfy Router 使用 Veo 2.0 Generate 001" +description: "通过 Comfy Router 调用 veo/veo-2.0-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 2.0 Generate 001" +translationSourceHash: 7d6a780f +translationFrom: development/comfy-router/models/veo/veo-2-0-generate-001/code.mdx +translationBlockHashes: + "_intro": 0db7d712 + "Quick start": f29101c0 + "Schema": fb4a9a14 + "Examples": cfcc0f09 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-2.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-2.0-generate-001` 的 API 参考文档,由 Comfy Router 提供,来源于 Veo。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `veo/veo-2.0-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/veo/veo-2.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-2.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-2.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 6, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-2.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":6,\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 用于引导视频生成的可选图像 + + + + 格式:`byte` + + + + + + + + + + + + 视频的文本描述 + + + + + + + + + + + + + + + + + + + + + + + + 控制已生成视频中的人物。`dont_allow`、`allow_adult` 和 `allowAll` 是 Vertex AI 自身的拼写,也是 VeoGenVidRequest 为同一字段发布的取值。`ALLOW` 和 `BLOCK` 是为了兼容在此组件由 Router 编写之前基于它生成的客户端而保留的,详见 Veo2GenVidRequest 顶部的说明。 + + 可能的值:`ALLOW`、`BLOCK`、`dont_allow`、`allow_adult`、`allowAll` + + + + + + + + 格式:`uint32` + + + + 用于上传视频的可选 Cloud Storage URI + + +根据 Router 在 `GET /v2/models/veo/veo-2.0-generate-001/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 操作是否已完成 + + + + 错误详情,操作失败时出现 + + + + gRPC 错误码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,当 done 为是时出现 + + + + + + + + 被 Responsible AI 策略过滤的视频数量 + + + + 视频被 Responsible AI 策略过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 6, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/zh/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx new file mode 100644 index 000000000..3f90955ff --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx @@ -0,0 +1,391 @@ +--- +title: "将 Veo 3.0 Fast Generate 001 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 veo/veo-3.0-fast-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 3.0 Fast Generate 001" +translationSourceHash: a31a905f +translationFrom: development/comfy-router/models/veo/veo-3-0-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": a97006f3 + "Quick start": 0698269f + "Schema": 9ed9aea3 + "Examples": 88e27039 +--- +{/* 生成文件。由 `pnpm code-pages:gen` 从 router-schemas/veo/veo-3.0-fast-generate-001.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-fast-generate-001` 的 API 参考,该模型由 Comfy Router 提供,来自 Veo。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `veo/veo-3.0-fast-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 相机运动类型。需要提供图像。 + + 可选值:`fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + 可选的引导视频生成的首帧图像 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 可选的尾帧图像。与 image 配合使用,可在首帧和尾帧之间生成视频。受 Veo 3.0+ 模型支持。 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 用于视频编辑的可选遮罩。应用于输入视频。 + + + + Base64 编码的遮罩字节数据 + + 格式:`byte` + + + + 遮罩文件的 Cloud Storage URI + + + + 遮罩的应用方式 + + 可选值:`insert`、`remove`、`remove_static`、`outpaint` + + + + 遮罩的 MIME 类型(image/png、image/jpeg、image/webp 或视频格式) + + + + 要生成的视频的文本描述 + + + + 用于引导视频生成的可选参考图像。最多支持 3 张素材图像或 1 张风格图像。受 Veo 3.1 模型支持(预览)。 + + + + + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 参考图像的可选标识符 + + + + 参考图像的类型 + + 可选值:`asset`、`style` + + + + 用于视频扩展或编辑的可选输入视频。与 image 和 referenceImages 不兼容。 + + + + Base64 编码的视频字节数据 + + 格式:`byte` + + + + 输入视频的 Cloud Storage URI + + + + 视频的 MIME 类型 + + 可选值:`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 已生成视频的宽高比。默认值:16:9 + + 可选值:`16:9`、`9:16` + + + + 视频压缩质量。默认值:optimized + + 可选值:`optimized`、`lossless` + + + + 已生成视频的目标时长(秒)。Veo 2:5-8。Veo 3/3.1:4、6 或 8。默认值:8 + + + + 自动改进提示词以获得更高质量。默认为 true。 + + + + 已生成视频的帧率(每秒帧数) + + + + 是否在生成视频的同时生成音频。默认为 true。受 Veo 3.0+ 模型支持。 + + + + 描述已生成视频中应避免出现内容的文本 + + + + 控制已生成视频中的人物。默认值:allow_adult + + 可选值:`dont_allow`、`allow_adult`、`allowAll` + + + + 用于进度更新的 Cloud Pub/Sub 主题(projects/\{project}/topics/\{topic}) + + + + 输入图像的调整大小方式。默认值:pad + + 可选值:`pad`、`crop` + + + + 输出视频分辨率。受 Veo 3.0+ 模型支持。默认值:720p + + 可选值:`720p`、`1080p`、`4k` + + + +要生成的视频数量。如果未指定,则生成 1 个视频。 + + 范围:`1` 到 `4` + + + + 用于确定性输出的随机种子。如果 sampleCount > 1,每个视频使用不同的种子。 + + 格式:`uint32` + + + + 用于保存已生成视频的云端存储 URI (gs://) + + + + 视频生成请求的操作类型 + + 可能的值:`textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +本文档根据 Router 在 `GET /v2/models/veo/veo-3.0-fast-generate-001/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前 Router 用于校验调用的同一份文档。### 输出 + + + 操作是否已完成 + + + + 错误详情,操作失败时存在 + + + + gRPC 错误码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,当 done 为 true 时存在 + + + + + + + + 被负责任的 AI 政策过滤掉的视频数量 + + + + 视频被负责任的 AI 政策过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/zh/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx new file mode 100644 index 000000000..040dd26e1 --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "搭配 Comfy Router 使用 Veo 3.0 Generate 001" +description: "通过 Comfy Router 调用 veo/veo-3.0-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 3.0 Generate 001" +translationSourceHash: 56aa1769 +translationFrom: development/comfy-router/models/veo/veo-3-0-generate-001/code.mdx +translationBlockHashes: + "_intro": c87da726 + "Quick start": 69eae087 + "Schema": e9acd9e6 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.0-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.0-generate-001` 的 API 参考,由 Comfy Router 提供,来源为 Veo。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段通过原始 HTTP 执行相同的调用。 + +**模型 ID:** `veo/veo-3.0-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/veo/veo-3.0-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.0-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.0-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.0-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 相机运动类型。需要提供图像。 + + 可选值:`fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + 可选的用于引导视频生成的首帧图像 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 可选的尾帧图像。与 image 配合使用,可在首帧与尾帧之间生成视频。受 Veo 3.0+ 模型支持。 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 用于视频编辑的可选遮罩。作用于输入视频。 + + + + Base64 编码的遮罩字节 + + 格式:`byte` + + + + 遮罩文件的 Cloud Storage URI + + + + 遮罩的应用方式 + + 可选值:`insert`、`remove`、`remove_static`、`outpaint` + + + + 遮罩的 MIME 类型(image/png、image/jpeg、image/webp 或视频格式) + + + + 要生成的视频的文本描述 + + + + 用于引导视频生成的可选参考图像。最多支持 3 张素材图像或 1 张风格图像。受 Veo 3.1 模型(预览)支持。 + + + + + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可选值:`image/jpeg`、`image/png` + + + + 参考图像的可选标识符 + + + + 参考图像的类型 + + 可选值:`asset`、`style` + + + + 用于视频扩展或编辑的可选输入视频。与 image 和 referenceImages 不兼容。 + + + + Base64 编码的视频字节 + + 格式:`byte` + + + + 输入视频的 Cloud Storage URI + + + + 视频的 MIME 类型 + + 可选值:`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 已生成视频的宽高比。默认:16:9 + + 可选值:`16:9`、`9:16` + + + + 视频压缩质量。默认:optimized + + 可选值:`optimized`、`lossless` + + + + 已生成视频的目标时长(秒)。Veo 2:5-8。Veo 3/3.1:4、6 或 8。默认:8 + + + + 自动优化提示词以获得更高质量。默认为 true。 + + + + 已生成视频的帧率,单位为每秒帧数 + + + + 是否在生成视频的同时生成音频。默认为 true。受 Veo 3.0+ 模型支持。 + + + + 描述已生成视频中需要避免的内容的文本 + + + + 控制已生成视频中的人物。默认:allow_adult + + 可选值:`dont_allow`、`allow_adult`、`allowAll` + + + + 用于进度更新的 Cloud Pub/Sub 主题(projects/\{project}/topics/\{topic}) + + + + 输入图像的调整大小方式。默认:pad + + 可选值:`pad`、`crop` + + + + 输出视频分辨率。受 Veo 3.0+ 模型支持。默认:720p + + 可选值:`720p`、`1080p`、`4k` + + + + 要生成的视频数量。如果未指定,则生成 1 个视频。 + + 范围:`1` 到 `4` + + + + 用于确定性输出的随机种子。如果 sampleCount > 1,则每个视频使用不同的种子。 + + 格式:`uint32` + + + + 用于保存已生成视频的 Cloud Storage URI(gs://) + + + + 视频生成请求的操作类型 + + 可能的值:`textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +根据 Router 在 `GET /v2/models/veo/veo-3.0-generate-001/openapi.json` 所提供的 schema 生成,这也是 Router 在请求到达提供商之前校验调用时所依据的同一份文档。### 输出 + + + 操作是否已完成 + + + + 错误详情,操作失败时存在 + + + + gRPC 错误代码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,done 为是时存在 + + + + + + + + 被负责任 AI 策略过滤的视频数量 + + + + 视频被负责任 AI 策略过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/zh/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx new file mode 100644 index 000000000..4a2a18921 --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx @@ -0,0 +1,391 @@ +--- +title: "将 Veo 3.1 Fast Generate 001 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 veo/veo-3.1-fast-generate-001:endpoint、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 3.1 Fast Generate 001" +translationSourceHash: 57aa0fe0 +translationFrom: development/comfy-router/models/veo/veo-3-1-fast-generate-001/code.mdx +translationBlockHashes: + "_intro": 25f9d753 + "Quick start": 690fb658 + "Schema": 7a21ed84 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-fast-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.1-fast-generate-001` 的 API 参考文档,由 Comfy Router 从 Veo 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**Model ID:** `veo/veo-3.1-fast-generate-001` + +**Endpoint:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-fast-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-fast-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-fast-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 相机运动类型。需要提供图像。 + + 可能的值:`fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + 可选的首帧图像,用于引导视频生成 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 可选的末帧图像。与 image 一起使用,可在首帧与末帧之间生成视频。受 Veo 3.0+ 模型支持。 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 用于视频编辑的可选遮罩。应用于输入视频。 + + + + Base64 编码的遮罩字节 + + 格式:`byte` + + + + 遮罩文件的 Cloud Storage URI + + + + 遮罩的应用方式 + + 可能的值:`insert`、`remove`、`remove_static`、`outpaint` + + + + 遮罩的 MIME 类型(image/png、image/jpeg、image/webp 或视频格式) + + + + 要生成的视频的文本描述 + + + + 用于引导视频生成的可选参考图像。最多支持 3 张素材图像或 1 张风格图像。受 Veo 3.1 模型(预览)支持。 + + + + + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 参考图像的可选标识符 + + + + 参考图像的类型 + + 可能的值:`asset`、`style` + + + + 用于视频扩展或编辑的可选输入视频。与 image 和 referenceImages 不兼容。 + + + + Base64 编码的视频字节 + + 格式:`byte` + + + + 输入视频的 Cloud Storage URI + + + + 视频的 MIME 类型 + + 可能的值:`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 已生成视频的宽高比。默认值:16:9 + + 可能的值:`16:9`、`9:16` + + + + 视频压缩质量。默认值:optimized + + 可能的值:`optimized`、`lossless` + + + + 已生成视频的目标时长(秒)。Veo 2:5-8。Veo 3/3.1:4、6 或 8。默认值:8 + + + + 自动改进提示词以获得更高质量。默认为 true。 + + + + 已生成视频的帧率,单位为帧/秒 + + + + 是否在生成视频的同时生成音频。默认为 true。受 Veo 3.0+ 模型支持。 + + + + 描述已生成视频中应避免出现哪些内容的文本 + + + + 控制已生成视频中的人物。默认值:allow_adult + + 可能的值:`dont_allow`、`allow_adult`、`allowAll` + + + + 用于进度更新的 Cloud Pub/Sub 主题(projects/\{project}/topics/\{topic}) + + + + 输入图像的调整大小方式。默认值:pad + + 可能的值:`pad`、`crop` + + + + 输出视频分辨率。受 Veo 3.0+ 模型支持。默认值:720p + + 可能的值:`720p`、`1080p`、`4k` + + + + 要生成的视频数量。如果未指定,则生成 1 个视频。 + + 范围:`1` 到 `4` + + + + 用于确定性输出的随机种子。如果 sampleCount > 1,则每个视频使用不同的种子。 + + 格式:`uint32` + + + + 用于保存已生成视频的云端存储 URI(gs://) + + + + 视频生成请求的操作类型 + + 可选值:`textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +本文档根据 Router 在 `GET /v2/models/veo/veo-3.1-fast-generate-001/openapi.json` 提供的 schema 生成,该文档也正是请求到达提供商之前 Router 用于校验调用的同一份文档。### 输出 + + + 操作是否已完成 + + + + 错误详情,操作失败时存在 + + + + gRPC 错误码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,当 done 为是时存在 + + + + + + + + 被负责任 AI 政策过滤的视频数量 + + + + 视频被负责任 AI 政策过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + diff --git a/zh/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx new file mode 100644 index 000000000..7527aae67 --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "使用 Comfy Router 调用 Veo 3.1 Generate 001" +description: "通过 Comfy Router 调用 veo/veo-3.1-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 3.1 Generate 001" +translationSourceHash: 82b6c3ea +translationFrom: development/comfy-router/models/veo/veo-3-1-generate-001/code.mdx +translationBlockHashes: + "_intro": 0925e6d2 + "Quick start": 14060114 + "Schema": bc219941 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.1-generate-001` 的 API 参考,由 Comfy Router 从 Veo 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段则是通过原始 HTTP 发起同样的调用。 + +**模型 ID:** `veo/veo-3.1-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## Schema {#schema} + +### 输入 {#input} + + + + + + + 相机运动类型。需要提供图像。 + + 可能的值:`fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + 可选的起始帧图像,用于引导视频生成 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 可选的结束帧图像。与 image 一起使用,可在首帧与末帧之间生成视频。由 Veo 3.0+ 模型支持。 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 用于视频编辑的可选遮罩。应用于输入视频。 + + + + Base64 编码的遮罩字节数据 + + 格式:`byte` + + + + 遮罩文件的 Cloud Storage URI + + + + 遮罩的应用方式 + + 可能的值:`insert`、`remove`、`remove_static`、`outpaint` + + + + 遮罩的 MIME 类型(image/png、image/jpeg、image/webp 或视频格式) + + + + 要生成的视频的文本描述 + + + + 用于引导视频生成的可选参考图像。最多支持 3 张素材图像或 1 张风格图像。由 Veo 3.1 模型(预览)支持。 + + + + + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 参考图像的可选标识符 + + + + 参考图像的类型 + + 可能的值:`asset`、`style` + + + + 用于视频扩展或编辑的可选输入视频。与 image 和 referenceImages 不兼容。 + + + + Base64 编码的视频字节数据 + + 格式:`byte` + + + + 输入视频的 Cloud Storage URI + + + + 视频的 MIME 类型 + + 可能的值:`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 生成视频的宽高比。默认值:16:9 + + 可能的值:`16:9`、`9:16` + + + + 视频压缩质量。默认值:optimized + + 可能的值:`optimized`、`lossless` + + + + 生成视频的目标时长(秒)。Veo 2:5-8。Veo 3/3.1:4、6 或 8。默认值:8 + + + + 自动优化提示词以获得更高质量。默认为是。 + + + + 生成视频的帧率,单位为每秒帧数 + + + + 是否随视频一起生成音频。默认为是。由 Veo 3.0+ 模型支持。 + + + + 描述在生成视频中应避免出现的内容的文本 + + + + 控制生成视频中的人物。默认值:allow_adult + + 可能的值:`dont_allow`、`allow_adult`、`allowAll` + + + + 用于进度更新的 Cloud Pub/Sub 主题(projects/\{project}/topics/\{topic}) + + + + 输入图像的调整大小方式。默认值:pad + + 可能的值:`pad`、`crop` + + + + 输出视频分辨率。由 Veo 3.0+ 模型支持。默认值:720p + + 可能的值:`720p`、`1080p`、`4k` + + + + 要生成的视频数量。如果未指定,则生成 1 个视频。 + + 范围:`1` 到 `4` + + + + 用于确定性输出的随机种子。如果 sampleCount > 1,则每个视频使用不同的种子。 + + 格式:`uint32` + + + + 用于保存已生成视频的 Cloud Storage URI(gs://) + + + + 视频生成请求的操作类型 + + 可选值:`textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +该文档由 Router 在 `GET /v2/models/veo/veo-3.1-generate-001/openapi.json` 提供,同样也是请求到达提供商之前用于校验调用的文档。### 输出 + + + 操作是否已完成 + + + + 错误详情,操作失败时存在 + + + + gRPC 错误码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,当 done 为是时存在 + + + + + + + + 被负责任 AI 策略过滤的视频数量 + + + + 视频被负责任 AI 策略过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/zh/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx b/zh/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx new file mode 100644 index 000000000..3156424be --- /dev/null +++ b/zh/development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx @@ -0,0 +1,392 @@ +--- +title: "使用 Comfy Router 调用 Veo 3.1 Lite Generate 001" +description: "通过 Comfy Router 调用 veo/veo-3.1-lite-generate-001:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Veo 3.1 Lite Generate 001" +translationSourceHash: b1314fef +translationFrom: development/comfy-router/models/veo/veo-3-1-lite-generate-001/code.mdx +translationBlockHashes: + "_intro": 17d94e61 + "Quick start": c437f227 + "Schema": bf6fab55 + "Examples": 88e27039 +--- +{/* GENERATED FILE. Generated from router-schemas/veo/veo-3.1-lite-generate-001.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`veo/veo-3.1-lite-generate-001` 的 API 参考文档,由 Comfy Router 从 Veo 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一个调用。 + +**模型 ID:** `veo/veo-3.1-lite-generate-001` + +**端点:** `POST https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "veo/veo-3.1-lite-generate-001", + { + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": False, + "sampleCount": 1, + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("veo/veo-3.1-lite-generate-001", { + instances: [ + { + prompt: "a single red maple leaf falling onto still water, slow motion", + }, + ], + parameters: { + durationSeconds: 4, + generateAudio: false, + sampleCount: 1, + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/veo/veo-3.1-lite-generate-001 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"instances\": [{\"prompt\":\"a single red maple leaf falling onto still water, slow motion\"}], \"parameters\": {\"durationSeconds\":4,\"generateAudio\":false,\"sampleCount\":1}}" +``` + + +## Schema + +### 输入 + + + + + + + 相机运动类型。需要提供图像。 + + 可能的值:`fixed`、`pan_left`、`pan_right`、`tilt_up`、`tilt_down`、`truck_left`、`truck_right`、`pedestal_up`、`pedestal_down`、`push_in`、`pull_out` + + + + 可选的用于引导视频生成的初始帧图像 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 可选的尾帧图像。与 image 配合使用,可在首帧与尾帧之间生成视频。受 Veo 3.0+ 模型支持。 + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 用于视频编辑的可选遮罩。应用于输入视频。 + + + + Base64 编码的遮罩字节 + + 格式:`byte` + + + + 遮罩文件的 Cloud Storage URI + + + + 遮罩的应用方式 + + 可能的值:`insert`、`remove`、`remove_static`、`outpaint` + + + + 遮罩的 MIME 类型(image/png、image/jpeg、image/webp 或视频格式) + + + + 要生成视频的文本描述 + + + + 用于引导视频生成的可选参考图像。最多支持 3 张资产图像或 1 张风格图像。受 Veo 3.1 模型(预览)支持。 + + + + + + + + Base64 编码的图像数据 + + 格式:`byte` + + + + 图像的 Cloud Storage URI + + + + 图像的 MIME 类型(image/jpeg 或 image/png) + + 可能的值:`image/jpeg`、`image/png` + + + + 参考图像的可选标识符 + + + + 参考图像的类型 + + 可能的值:`asset`、`style` + + + + 用于视频扩展或编辑的可选输入视频。与 image 和 referenceImages 不兼容。 + + + + Base64 编码的视频字节 + + 格式:`byte` + + + + 输入视频的 Cloud Storage URI + + + + 视频的 MIME 类型 + + 可能的值:`video/mov`、`video/mpeg`、`video/mp4`、`video/mpg`、`video/avi`、`video/wmv`、`video/mpegps`、`video/x-flv` + + + + + + + + 已生成视频的宽高比。默认值:16:9 + + 可能的值:`16:9`、`9:16` + + + + 视频压缩质量。默认值:optimized + + 可能的值:`optimized`、`lossless` + + + + 已生成视频的目标时长(秒)。Veo 2:5-8。Veo 3/3.1:4、6 或 8。默认值:8 + + + + 自动优化提示词以获得更高质量。默认为 是。 + + + + 已生成视频的帧率(帧/秒) + + + + 是否在生成视频的同时生成音频。默认为 是。受 Veo 3.0+ 模型支持。 + + + + 描述已生成视频中应避免出现内容的文本 + + + + 控制已生成视频中的人物。默认值:allow_adult + + 可能的值:`dont_allow`、`allow_adult`、`allowAll` + + + + 用于接收进度更新的 Cloud Pub/Sub 主题(projects/\{project}/topics/\{topic}) + + + + 输入图像的大小调整方式。默认值:pad + + 可能的值:`pad`、`crop` + + + + 输出视频分辨率。受 Veo 3.0+ 模型支持。默认值:720p + + 可能的值:`720p`、`1080p`、`4k` + + + + 要生成的视频数量。如果未指定,则生成 1 个视频。 + + 范围:`1` 到 `4` + + + + 用于确定性输出的随机种子。如果 sampleCount > 1,则为每个视频使用不同的种子。 + + 格式:`uint32` + + + + 用于保存已生成视频的 Cloud Storage URI(gs://) + + + + 视频生成请求的操作类型 + + 可能的值:`textToVideo`、`imageToVideo`、`referenceToVideo`、`edit`、`extend`、`upscale` + + +根据 Router 在 `GET /v2/models/veo/veo-3.1-lite-generate-001/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + 操作是否已完成 + + + + 错误详情,仅在操作失败时存在 + + + + gRPC 错误代码 + + + + 报错信息 + + + + 操作资源名称 + + + + 预测响应,当 done 为 true 时存在 + + + + + + + + 被责任 AI 政策过滤掉的视频数量 + + + + 视频被责任 AI 政策过滤的原因 + + + + + + + + Base64 编码的视频内容 + + + + 已生成视频的 Cloud Storage URI + + + + 视频 MIME 类型(video/mp4) + + +## 示例 + +### 输入 + +```json +{ + "instances": [ + { + "prompt": "a single red maple leaf falling onto still water, slow motion" + } + ], + "parameters": { + "durationSeconds": 4, + "generateAudio": false, + "sampleCount": 1 + } +} +``` + +### 输出 + +```json +{ + "done": true, + "name": "projects/example-project/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001/operations/1a2b3c4d", + "response": { + "@type": "type.googleapis.com/cloud.ai.large_models.vision.GenerateVideoResponse", + "raiMediaFilteredCount": 0, + "videos": [ + { + "gcsUri": "https://storage.googleapis.com/EXAMPLE_BUCKET/veo/USER_ID/REQUEST_ID/sample_0.mp4", + "mimeType": "video/mp4" + } + ] + } +} +``` + + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx new file mode 100644 index 000000000..d2a101bda --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx @@ -0,0 +1,426 @@ +--- +title: "通过 Comfy Router 使用 HappyHorse 1.0 I2V" +description: "通过 Comfy Router 以 HTTP 调用 wan/happyhorse-1.0-i2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果形状" +sidebarTitle: "HappyHorse 1.0 I2V" +translationSourceHash: e2663082 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-i2v/code.mdx +translationBlockHashes: + "_intro": 24c1988d + "Quick start": 810ab797 + "Schema": 7ad667d0 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 I2V 的 API 参考。HappyHorse 1.0 图生视频可将静止的首帧制作成动画,并在同一次处理中渲染同步音频。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `wan/happyhorse-1.0-i2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 填写基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图像网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + 用于 wan2.7 和 wan3.0 模型的媒体资产列表。指定用于视频生成的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大 1)、last_frame(最大 1)、reference_image(最大 10)、 + reference_video(最多 5 段,总时长 \<= 15s)、reference_audio(最多 5 段, + 总时长 \<= 15s)、file(最大 1,不能与 link 一起使用)、link(最大 1,不能 + 与 file 一起使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定提示词中资产的引用顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 媒体文件的网址(公开的 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带有多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 media +数组中对应顺序的媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5s,两个视频每个最大 2.5s,三个视频按比例更短。 +计费:按实际使用的参考时长计费。 + + + + 视频效果模板名称。可选。当前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不约束该参数:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。直接通过 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受写法的枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`, `origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 区间内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 区间内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 区间内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型 + 选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的画面比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位取默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图自动推荐 +合适的画面比例。 + + 可选值:`adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +由于分辨率档位决定计费费率,该代理会拒绝既未提供 resolution +也未提供 size 的视频生成请求。 + + 可选值:`480P`, `720P`, `1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在 prompt_extend 启用时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不含 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标志,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/happyhorse-1.0-i2v/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能重写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 请求失败时的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 请求失败的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能重写后的实际提示词(如果已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的图片网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的比例,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 请求失败时的错误码,在信封的根层级报告,而不是在 `output` 下(请求成功时不返回)。 + + + + 请求失败的详细信息,在信封的根层级报告,而不是在 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前,请先阅读此项。 + + +## 示例 {#examples} + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx new file mode 100644 index 000000000..70495520c --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "使用 HappyHorse 1.0 R2V 搭配 Comfy Router" +description: "通过 Comfy Router 以 HTTP 调用 wan/happyhorse-1.0-r2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段与结果形状" +sidebarTitle: "HappyHorse 1.0 R2V" +translationSourceHash: 03ea8ead +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-r2v/code.mdx +translationBlockHashes: + "_intro": c9fdbfc5 + "Quick start": 477da529 + "Schema": 604ab7a9 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 R2V 的 API 参考。HappyHorse 1.0 参考生视频可让一张或多张参考图像中的主体在新场景中保持一致性,并在提示词中以 character1、character2 等方式进行引用。 + +## 快速开始 {#quick-start} + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发出相同的调用。 + +**模型 ID:** `wan/happyhorse-1.0-r2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图像的网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最大 1)、last_frame(最大 1)、reference_image(最大 10)、 + reference_video(最多 5 段,总时长 \<= 15 秒)、reference_audio(最多 5 段, + 总时长 \<= 15 秒)、file(最多 1 个,不能与 link 一起使用)、link(最多 1 个,不能 + 与 file 一起使用)。在同一请求中,reference_*/file/link 类型与 first_frame/last_frame 类型 + 互斥。数组顺序定义了提示词中资产的引用 + 顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中出现的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:“Character1 在路边唱歌,Character2 在旁边跳舞” +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等,按 media 数组中的 +对应顺序指代媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5 秒,两个视频各最大 2.5 秒,三个视频按比例更短。 +计费:根据实际使用的参考时长计费。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不对其进行约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接以 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时则必须提供,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 已生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15 秒) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入视频总时长 + + 输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型 + 选择合适的时长 + + 取值范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 已生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位设置默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体的比例和意图 +自动推荐合适的宽高比。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +该内容由 Router 在 `GET /v2/models/wan/happyhorse-1.0-r2v/openapi.json` 提供的 schema 生成,也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能重写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能重写后的实际提示词(如果启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成视频生成任务的视频 URL。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒,无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,报告在响应信封的根层级而不是 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应信封的根层级而不是 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此内容。 + + +## 示例 {#examples} + +### 输入 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx new file mode 100644 index 000000000..7f3e05280 --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx @@ -0,0 +1,422 @@ +--- +title: "使用 Comfy Router 调用 HappyHorse 1.0 T2V" +description: "通过 Comfy Router 以 HTTP 调用 wan/happyhorse-1.0-t2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果结构" +sidebarTitle: "HappyHorse 1.0 T2V" +translationSourceHash: 8e898153 +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-t2v/code.mdx +translationBlockHashes: + "_intro": 7555288c + "Quick start": 88660925 + "Schema": 3037f420 + "Examples": 12f77722 +--- +{/* 生成文件。请编辑此目录中的 code.yaml 并运行 `pnpm code-pages:gen`。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 T2V 的 API 参考。HappyHorse 1.0 文生视频仅凭一个提示词即可生成带同步音频的短视频。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行同一调用。 + +**模型 ID:** `wan/happyhorse-1.0-t2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。支持的 type 值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 个片段,总时长 \<= 15s)、reference_audio(最多 5 个片段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定了提示中资产的引用顺序(图像 1、视频 1、音频 1……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的网址(公开 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中出现的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带有多个参考视频的 wan2.6-r2v,请使用 'character1'、'character2' 等,按参考视频的顺序指代主体。 +示例:“Character1 在路边唱歌,Character2 在旁边跳舞” +对于 wan3.0-video 的参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等,按 media 数组中的 +对应顺序指代媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频网址。包含 1-3 个视频网址的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频按比例更短。 +计费:按实际使用的参考时长计算。 + + + + 视频特效模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数将被忽略。 + + + + 要调用的模型 ID。本组件不对其做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接对 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起 v1 调用时必须提供,可接受的拼写枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可能的值:`auto`、`origin` + + + + 生成的视频时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入视频 + 总时长 + 输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型 + 选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成的视频比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体素材的比例和 +意图自动推荐合适的宽高比。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围: `0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值: `multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/happyhorse-1.0-t2v/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(如果已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在信封的根层级(ROOT),而不是 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在信封的根层级(ROOT),而不是 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx new file mode 100644 index 000000000..e265c4002 --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx @@ -0,0 +1,437 @@ +--- +title: "使用 Comfy Router 调用 HappyHorse 1.0 Video Edit" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/happyhorse-1.0-video-edit 的 Python、TypeScript 和 cURL 代码片段,以及请求字段与结果结构" +sidebarTitle: "HappyHorse 1.0 视频编辑" +translationSourceHash: 7bbd47ee +translationFrom: development/comfy-router/models/wan/happyhorse-1-0-video-edit/code.mdx +translationBlockHashes: + "_intro": 43ae28bb + "Quick start": 83992b09 + "Schema": 7f54592c + "Examples": a41df668 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.0 Video Edit 的 API 参考。HappyHorse 1.0 视频编辑可根据文本指令重写现有的视频片段,并可选地由参考图像进行引导。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `wan/happyhorse-1.0-video-edit` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.0-video-edit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.0-video-edit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.0-video-edit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\"}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图像 URL 或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成所需的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 个片段,总时长 \<= 15s)、reference_audio(最多 5 个片段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定了提示词中各资产的引用顺序(Image 1、Video 1、Audio 1、……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词用于描述你不希望在视频画面中出现的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带有多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最长 5s,两个视频各最长 2.5s,三个视频按比例更短。 +计费:按实际使用的参考时长计算。 + + + + 视频效果模板名称。可选。当前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型的 ID。此组件上不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略它。直接以 v1 方式调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可能的值:`auto`、`origin` + + + + 生成的视频时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 区间内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 区间内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 区间内的整数;有视频输入时, + 输入视频总时长 + 输出视频时长不得超过 30 秒;-1 表示启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能重写。默认为 true + + + + 生成视频的比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图 +自动推荐合适的比例。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/happyhorse-1.0-video-edit/openapi.json` 提供的 schema 生成,该文档也是 Router 在请求到达提供商之前用于校验调用的同一文档。### 输出 + + + + + + + 智能重写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能重写后的实际提示词(如果启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成视频生成任务的视频 URL。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在响应信封的根层级而非 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应信封的根层级而非 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先读取此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P" + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx new file mode 100644 index 000000000..3b2cfadcc --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx @@ -0,0 +1,426 @@ +--- +title: "将 HappyHorse 1.1 I2V 与 Comfy Router 配合使用" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/happyhorse-1.1-i2v 的 Python、TypeScript 与 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "HappyHorse 1.1 I2V" +translationSourceHash: 8fa3c9fe +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-i2v/code.mdx +translationBlockHashes: + "_intro": df62101a + "Quick start": 804bc637 + "Schema": b49a9a2c + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 I2V 的 API 参考。HappyHorse 1.1 图生视频可为静止的首帧添加动画,并在同一次生成中渲染同步的对白、特效和音乐。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `wan/happyhorse-1.1-i2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 架构 + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + 适用于 wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15s)、reference_audio(最多 5 段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序定义了提示词中资产的引用顺序(图像 1、视频 1、音频 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公网 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带多个参考视频的 wan2.6-r2v,请按照参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用“图像 1”“视频 1”“音频 1”等来指代媒体数组中 +对应顺序的媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频时长:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频按比例更短。 +计费:按实际使用的参考时长计算。 + + + + 视频特效模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。该组件不作约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接以 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受拼写的枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15 秒) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 启用智能时长模式, + 由模型选择合适的时长 + + 取值范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供该参数,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体的比例和意图 +自动推荐合适的比例。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +本代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围: `0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single: 单镜头视频(默认) +- multi: 多镜头视频 + + 可选值: `multi`、`single` + + + + 视频分辨率,格式为宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V: 480P (480*832, 832*480, 624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088 + 1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632 + + + + 是否添加水印标志,水印位于右下角 + + +生成自 Router 在 `GET /v2/models/wan/happyhorse-1.1-i2v/openapi.json` 提供的 schema,该文档也是请求到达提供商之前 Router 用于校验调用的同一文档。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 与 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 与 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 与 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 与 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在响应封装的 ROOT 层级而非 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应封装的 ROOT 层级而非 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx new file mode 100644 index 000000000..dd436664d --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "通过 Comfy Router 使用 HappyHorse 1.1 R2V" +description: "通过 Comfy Router 以 HTTP 调用 wan/happyhorse-1.1-r2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "HappyHorse 1.1 R2V" +translationSourceHash: bcc3fe39 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-r2v/code.mdx +translationBlockHashes: + "_intro": 9cfab6c4 + "Quick start": 85fe82b4 + "Schema": 6abf7a04 + "Examples": a91cb6b1 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 R2V 的 API 参考。HappyHorse 1.1 参考生视频可在新场景中保持最多九张参考图像的主体一致,在提示词中分别以 character1、character2 等指代。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `wan/happyhorse-1.1-r2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片 URL 或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成所需的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 个片段,总时长 \<= 15s)、reference_audio(最多 5 个片段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一次请求中互斥。数组顺序决定了提示词中资产的引用 + 顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代 +主体。例如:“Character1 在路边唱歌,Character2 在旁边跳舞” +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 media 数组中 +对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频按比例更短。 +计费:按实际使用的参考时长计费。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数将被忽略。 + + + + 要调用的模型 ID。在此组件上不受约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略它。直接对 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起 v1 调用时则必须提供它,可接受拼写的枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 表示启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的宽高比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位取默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体比例和意图 +自动推荐合适的宽高比例。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/happyhorse-1.1-r2v/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档完全相同。### 输出 + + + + + + + 智能改写后的实际提示词(视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(视频任务) + + + + 图像生成任务的结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败的任务数量 + + + + 成功的任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒,无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在信封的根层级而非 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在信封的根层级而非 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx b/zh/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx new file mode 100644 index 000000000..97b9ee7b5 --- /dev/null +++ b/zh/development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx @@ -0,0 +1,423 @@ +--- +title: "使用 Comfy Router 调用 HappyHorse 1.1 T2V" +description: "通过 Comfy Router 以 HTTP 调用 wan/happyhorse-1.1-t2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果结构" +sidebarTitle: "HappyHorse 1.1 T2V" +translationSourceHash: d2a04691 +translationFrom: development/comfy-router/models/wan/happyhorse-1-1-t2v/code.mdx +translationBlockHashes: + "_intro": 9a8430cd + "Quick start": fe1ffe46 + "Schema": 42258343 + "Examples": 12f77722 +--- +{/* 生成文件。请编辑此目录中的 code.yaml 并运行 `pnpm code-pages:gen`。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +HappyHorse 1.1 T2V 的 API 参考。HappyHorse 1.1 文生视频仅凭一段提示词,即可生成带有同步对白、特效与音乐的短视频。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原生 HTTP 进行的相同调用。 + +**模型 ID:** `wan/happyhorse-1.1-t2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/happyhorse-1.1-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/happyhorse-1.1-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 填写基础信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15 秒)、reference_audio(最多 5 段, + 总时长 \<= 15 秒)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。在同一次请求中,reference_*/file/link 类型与 first_frame/last_frame 类型 + 互斥。数组顺序决定了素材在提示词中的引用顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 “character1”“character2” 等来指代主体。 +例如:“Character1 在路边唱歌,Character2 在一旁跳舞” +对于 wan3.0-video 参考模式,请使用 “Image 1”“Video 1”“Audio 1” 等,按 media 数组中 +的对应顺序来指代媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频时长:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最长 5s,两个视频各最长 2.5s,三个视频则按比例更短。 +计费:按实际使用的参考时长计算。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。本组件不对此进行约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接通过 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 则必须提供该字段,可接受的拼写枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时, + 输入视频总时长 + 输出视频时长不得超过 30 秒;-1 表示启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的画面比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,若未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体的比例和意图 +自动推荐合适的画面比例。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅支持 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +本代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/happyhorse-1.1-t2v/openapi.json` 所提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能重写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频网址 + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能重写后的实际提示词(如果已启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的网址地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务的数量 + + + + 成功任务的数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成视频生成任务的视频网址。连线有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的比例,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,在信封的根层级报告,而不是在 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,在信封的根层级报告,而不是在 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx b/zh/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx new file mode 100644 index 000000000..ea557eece --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx @@ -0,0 +1,335 @@ +--- +title: "通过 Comfy Router 使用 Wan 2.5 I2I Preview" +description: "通过 Comfy Router 调用 wan/wan2.5-i2i-preview:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Wan 2.5 I2I Preview" +translationSourceHash: 69f17d11 +translationFrom: development/comfy-router/models/wan/wan2-5-i2i-preview/code.mdx +translationBlockHashes: + "_intro": 54209465 + "Quick start": abe86d7a + "Schema": c8fca9d2 + "Examples": 3d10fc60 +--- +{/* GENERATED FILE. Generated from router-schemas/wan/wan2.5-i2i-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-i2i-preview` 的 API 参考,由 Comfy Router 提供,来源于 Wan。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 片段则是通过原生 HTTP 执行的同一调用。 + +**模型 ID:** `wan/wan2.5-i2i-preview` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2i-preview", + { + "input": { + "images": ["https://example.invalid/red-maple-leaf.png"], + "prompt": "Make the leaf golden.", + }, + "parameters": { + "n": 1, + "size": "768*768", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-i2i-preview", { + input: { + images: ["https://example.invalid/red-maple-leaf.png"], + prompt: "Make the leaf golden.", + }, + parameters: { + n: 1, + size: "768*768", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"images\":[\"https://example.invalid/red-maple-leaf.png\"],\"prompt\":\"Make the leaf golden.\"}, \"parameters\": {\"n\":1,\"size\":\"768*768\"}}" +``` + + +## 架构 + +### 输入 + + + 输入基本信息,例如提示词、图像等。 + + + + 用于图生图生成的图像 URL 数组 + + + + 反向提示词,用于描述你不希望在图像中出现的内容 + + + + 正向提示词,用于描述期望的图像元素和视觉特征。支持中英文,长度不超过 2000 个字符 + + + + 用于图生图生成时要调用的模型 ID。本组件不对其进行约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它。直接以 v1 方式调用 `POST /proxy/wan/api/v1/services/aigc/image2image/image-synthesis` 时必须提供它,可接受写法的枚举定义在该操作自身的组件 `WanImage2ImageGenerationRequest` 上。 + + + + 图像处理参数 + + + + 生成图像的数量。范围 1-4,默认为 1 + + 范围:`1` 到 `4` + + + + 用于控制随机性的随机数种子。范围 [0, 2147483647] + + 范围:`0` 到 `2147483647` + + + + 输出图像分辨率,格式为 宽度*高度。默认为 1280*1280。API 接受的像素面积介于 589824(768*768)与 1638400(1280*1280)之间,宽高比介于 1:4 与 4:1 之间 + + + + 是否在右下角添加水印标志 + + +本页内容由 Router 在 `GET /v2/models/wan/wan2.5-i2i-preview/openapi.json` 提供的 schema 生成,在请求到达提供商之前,Router 也依据同一份文档对调用进行校验。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带有音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败的任务数量 + + + + 成功的任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长(秒)(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长(秒),无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长(秒)(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长(秒)(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在响应信封的根层级而非 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应信封的根层级而非 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此字段。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "images": [ + "https://example.invalid/red-maple-leaf.png" + ], + "prompt": "Make the leaf golden." + }, + "parameters": { + "n": 1, + "size": "768*768" + } +} +``` + +### 输出 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx b/zh/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx new file mode 100644 index 000000000..5288bdbb7 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx @@ -0,0 +1,427 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.5 I2V Preview" +description: "通过 Comfy Router 以 HTTP 调用 wan/wan2.5-i2v-preview 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果结构" +sidebarTitle: "Wan 2.5 I2V Preview" +translationSourceHash: 11676d6d +translationFrom: development/comfy-router/models/wan/wan2-5-i2v-preview/code.mdx +translationBlockHashes: + "_intro": 92f3b1d3 + "Quick start": a48b510f + "Schema": affcfad3 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.5 I2V 预览的 API 参考。Wan 2.5 图生视频可将一张静态首帧图像转换为一段短视频,其中的运动与相机运镜由提示词描述。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `wan/wan2.5-i2v-preview` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-i2v-preview", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-i2v-preview", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-i2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + 用于 wan2.7 和 wan3.0 模型的媒体资产列表。指定用于视频生成的参考素材(图像、音频、视频)。 +每个元素包含一个 type 字段和一个 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最大 1 个)、last_frame(最大 1 个)、reference_image(最大 10 个)、 + reference_video(最大 5 段,总时长 \<= 15s)、reference_audio(最大 5 段, + 总时长 \<= 15s)、file(最大 1 个,不能与 link 一起使用)、link(最大 1 个,不能 + 与 file 一起使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定了提示词中资产的引用 + 顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的网址(公开的 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带有多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等 +来指代主体。示例:"Character1 在路边唱歌,Character2 在旁边跳舞"。 +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中对应顺序的媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5s,两个视频每个最大 2.5s,三个视频按比例减少。 +计费:按实际使用的参考时长计算。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填入它,因此 Router 调用方可省略该字段。直接以 v1 方式调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供该字段,可接受拼写的枚举定义在该操作自有的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可能的值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时, + 输入视频总时长 + 输出视频时长不得超过 30 秒;-1 启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位使用默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的 +比例和意图自动推荐合适的比例。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率级别。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费标准。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可能的值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的尺寸因模型而异: +wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.5-i2v-preview/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能重写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的结果列表 + + + + 智能重写后的实际提示词(如已启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的图片网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败的任务数量 + + + + 成功的任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,返回在响应封套的根层级,而不是 `output` 之下(请求成功时不返回)。 + + + + 失败请求的详细信息,返回在响应封套的根层级,而不是 `output` 之下(请求成功时不返回)。在改用 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx b/zh/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx new file mode 100644 index 000000000..1995f6af1 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx @@ -0,0 +1,330 @@ +--- +title: "将 Wan 2.5 T2I Preview 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 wan/wan2.5-t2i-preview:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Wan 2.5 T2I Preview" +translationSourceHash: 51b71001 +translationFrom: development/comfy-router/models/wan/wan2-5-t2i-preview/code.mdx +translationBlockHashes: + "_intro": bdf16bb7 + "Quick start": e89c207d + "Schema": 579649db + "Examples": e420aca1 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/wan/wan2.5-t2i-preview.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`wan/wan2.5-t2i-preview` 的 API 参考,由 Comfy Router 从 Wan 提供服务。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `wan/wan2.5-t2i-preview` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2i-preview", + { + "input": { + "prompt": "A single red maple leaf on a plain white background.", + }, + "parameters": { + "n": 1, + "size": "1280*1280", + }, + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wan/wan2.5-t2i-preview", { + input: { + prompt: "A single red maple leaf on a plain white background.", + }, + parameters: { + n: 1, + size: "1280*1280", + }, +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2i-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"A single red maple leaf on a plain white background.\"}, \"parameters\": {\"n\":1,\"size\":\"1280*1280\"}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 反向提示词,用于描述你不希望在图像中出现的内容 + + + + 正向提示词,用于描述期望的图像元素和视觉特征。支持中文和英文,长度不超过 800 个字符 + + + + 调用文生图生成时使用的模型 ID。此组件不对其做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它。直接以 v1 方式调用 `POST /proxy/wan/api/v1/services/aigc/text2image/image-synthesis` 时必须提供该值,可接受的拼写枚举定义在该操作自身的组件 `WanImageGenerationRequest` 上。 + + + + 图像处理参数 + + + + 生成图像的数量。范围 1-4,默认为 4 + + 范围:`1` 到 `4` + + + + 启用提示词智能改写。默认为 true + + + + 用于控制随机性的随机数种子。范围 [0, 2147483647] + + 范围:`0` 到 `2147483647` + + + + 输出图像的分辨率,格式为 width*height。默认为 1280*1280。API 接受的像素面积在 1638400(1280*1280)到 2073600(1440*1440)之间,宽高比在 1:4 到 4:1 之间,因此 768*2700 是有效的 + + + + 是否在右下角添加水印标识 + + +由 Router 在 `GET /v2/models/wan/wan2.5-t2i-preview/openapi.json` 提供的 schema 生成,该文档与请求到达提供商之前用于校验调用的文档相同。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(如果启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长(秒)(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长(秒),无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长(秒)(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长(秒)(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,报告在响应外层的根层级(ROOT),而非 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应外层的根层级(ROOT),而非 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "A single red maple leaf on a plain white background." + }, + "parameters": { + "n": 1, + "size": "1280*1280" + } +} +``` + +### 输出 + +```json +{ + "output": { + "end_time": "2027-01-01T00:00:12.000Z", + "results": [ + { + "actual_prompt": "a single red maple leaf resting on still water, shallow depth of field, soft morning light", + "orig_prompt": "a single red maple leaf resting on still water", + "url": "https://example.invalid/wan/generated-1.png" + }, + { + "code": "DataInspectionFailed", + "message": "This candidate was rejected; the task as a whole succeeded.", + "orig_prompt": "a single red maple leaf resting on still water" + } + ], + "scheduled_time": "2027-01-01T00:00:01.000Z", + "submit_time": "2027-01-01T00:00:00.000Z", + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_metrics": { + "FAILED": 1, + "SUCCEEDED": 1, + "TOTAL": 2 + }, + "task_status": "SUCCEEDED" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "image_count": 1, + "size": "1280*1280" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx b/zh/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx new file mode 100644 index 000000000..afc9be9df --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx @@ -0,0 +1,424 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.5 T2V Preview" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.5-t2v-preview 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果结构" +sidebarTitle: "Wan 2.5 T2V Preview" +translationSourceHash: 8b4019e8 +translationFrom: development/comfy-router/models/wan/wan2-5-t2v-preview/code.mdx +translationBlockHashes: + "_intro": 09319905 + "Quick start": 8d9cb70e + "Schema": d747859e + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.5 T2V Preview 的 API 参考。Wan 2.5 文生视频仅凭提示词即可生成一段短视频,无需参考图像或视频。 + +## 快速开始 + +在[您的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `wan/wan2.5-t2v-preview` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.5-t2v-preview", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.5-t2v-preview", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.5-t2v-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### Input + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图像 URL 或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 值因模型而异: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15s)、reference_audio(最多 5 段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序定义了提示词中资产的引用顺序 + (Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于使用多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:“Character1 在路边唱歌,Character2 在旁边跳舞” +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。包含 1-3 个视频 URL 的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5s,两个视频每个最大 2.5s,三个视频按比例减少。 +计费:基于实际使用的参考时长。 + + + + 视频效果模板名称。可选。当前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。在此组件上不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可能的值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认值为 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位设置默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图 +自动推荐合适的宽高比。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标志,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.5-t2v-preview/openapi.json` 提供的 schema 生成,Router 会在请求到达提供商之前,依据同一份文档校验调用。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频网址 + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的图片网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频网址。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒,无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,在响应信封的根层级(ROOT)而非 `output` 之下报告(请求成功时不返回)。 + + + + 失败请求的详细信息,在响应信封的根层级(ROOT)而非 `output` 之下报告(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留,请及时下载视频。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-6-i2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-6-i2v/code.mdx new file mode 100644 index 000000000..74d4c6f43 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-6-i2v/code.mdx @@ -0,0 +1,425 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.6 I2V" +description: "通过 Comfy Router 以 HTTP 调用 wan/wan2.6-i2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果形状" +sidebarTitle: "Wan 2.6 I2V" +translationSourceHash: d02cf0cb +translationFrom: development/comfy-router/models/wan/wan2-6-i2v/code.mdx +translationBlockHashes: + "_intro": 13e5c8cc + "Quick start": 64466010 + "Schema": 85b61b37 + "Examples": 2b581e5f +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.6 I2V 的 API 参考。Wan 2.6 图生视频可将静止的首帧制作成动画,支持 720P 或 1080P,时长最长 15 秒。 + +## 快速开始 + +在 [Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起同样的调用。 + +**模型 ID:** `wan/wan2.6-i2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.6-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + img_url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"img_url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 架构 + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15 秒)、reference_audio(最多 5 段, + 总时长 \<= 15 秒)、file(最多 1 个,不能与 link 一起使用)、link(最多 1 个,不能 + 与 file 一起使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序定义了提示词中资产的参考顺序(图像 1、视频 1、音频 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中出现的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多可支持 20,000 个字符;超出限制的内容会被截断)。 +对于使用多个参考视频的 wan2.6-r2v,请按照参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5 秒,两个视频各最大 2.5 秒,三个视频按比例减少。 +计费:基于实际使用的参考时长。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。本组件不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接向 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起 v1 调用时则必须提供,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成的视频时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15 秒) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入视频总时长 + + 输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型选择合适 + 的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体的比例和意图自动推荐 +合适的宽高比。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率等级。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +本代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.6-i2v/openapi.json` 提供的 schema 生成,该文档也是请求到达提供商之前 Router 用于校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,报告在响应封装的根层级而非 `output` 之下(请求成功时不返回)。 + + + + 失败请求的详细信息,报告在响应封装的根层级而非 `output` 之下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "img_url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如果需要保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-6-r2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-6-r2v/code.mdx new file mode 100644 index 000000000..d31c137e1 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-6-r2v/code.mdx @@ -0,0 +1,428 @@ +--- +title: "通过 Comfy Router 使用 Wan 2.6 R2V" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.6-r2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果结构" +sidebarTitle: "Wan 2.6 R2V" +translationSourceHash: 6d5ca4d7 +translationFrom: development/comfy-router/models/wan/wan2-6-r2v/code.mdx +translationBlockHashes: + "_intro": e8706b25 + "Quick start": b9e4a192 + "Schema": 2f56f8e9 + "Examples": dd88ebee +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.6 R2V 的 API 参考。Wan 2.6 参考生视频可将一到三个参考视频中的主体带入新的场景,并在提示词中以 character1、character2 等加以指代。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的相同调用。 + +**模型 ID:** `wan/wan2.6-r2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.6-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + reference_video_urls: ["https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4"], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"reference_video_urls\":[\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 数据结构 + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图像网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成所需的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v: first_frame, last_frame, driving_audio, first_clip +- wan2.7-r2v: reference_image, reference_video +- wan2.7-videoedit: video, reference_image +- wan3.0-video: first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15s)、reference_audio(最多 5 段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 一起使用)、link(最多 1 个,不能 + 与 file 一起使用)。在同一请求中,reference_*/file/link 类型与 first_frame/last_frame + 类型互斥。数组顺序决定了提示词中资产的引用顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的网址(公开的 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来引用主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 的参考模式,请按 media 数组中的对应顺序使用 'Image 1'、'Video 1'、'Audio 1' 等 +来引用媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频时长:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频按比例更短。 +计费:基于实际使用的参考时长。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。本组件不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充该值,因此 Router 调用方可以省略它。以 v1 方式直接调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供该值,可接受拼写的枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频总时长不得超过 30 秒;-1 会启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 至 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的画面比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图自动推荐 +合适的画面比例。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +本代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在 prompt_extend 启用时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.6-r2v/openapi.json` 提供的 schema 生成,与请求到达提供商之前用于校验调用的文档相同。### Output + + + + + + + 智能改写后的实际提示词(视频任务) + + + + 带有音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,在信封的根层级(ROOT)报告,而不是在 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,在信封的根层级(ROOT)报告,而不是在 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "reference_video_urls": [ + "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-6-t2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-6-t2v/code.mdx new file mode 100644 index 000000000..62b933f3e --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-6-t2v/code.mdx @@ -0,0 +1,422 @@ +--- +title: "通过 Comfy Router 使用 Wan 2.6 T2V" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.6-t2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "Wan 2.6 T2V" +translationSourceHash: 67885546 +translationFrom: development/comfy-router/models/wan/wan2-6-t2v/code.mdx +translationBlockHashes: + "_intro": 2f5a31f7 + "Quick start": b90dbbd9 + "Schema": 5a150e56 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.6 T2V 的 API 参考。Wan 2.6 文生视频仅凭提示词即可生成一段短视频,支持 720P 或 1080P,时长最长 15 秒。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发出的同一调用。 + +**模型 ID:** `wan/wan2.6-t2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.6-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.6-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.6-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.6-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图像网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1)、last_frame(最多 1)、reference_image(最多 10)、 + reference_video(最多 5 个片段,总时长 \<= 15s)、reference_audio(最多 5 个片段, + 总时长 \<= 15s)、file(最多 1,不能与 link 同时使用)、link(最多 1,不能 + 与 file 同时使用)。在同一请求中,reference_*/file/link 类型与 first_frame/last_frame 类型 + 互斥。数组的顺序决定了提示词中资产的引用顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的网址(公开的 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +例如:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频时长:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最长 5s,两个视频各最长 2.5s,三个视频按比例更短。 +计费:基于实际使用的参考时长。 + + + + 视频效果模板名称。可选。当前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不对其进行约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段填充它,因此 Router 调用方会省略它。直接以 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 中。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频中的原始音频 + + 可能的值:`auto`、`origin` + + + + 生成的视频时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入视频 + 总时长 + 输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位给出默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图自动推荐 +合适的宽高比。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅支持 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +该代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.6-t2v/openapi.json` 提供的 schema 生成,Router 在请求到达提供商之前,会用同一份文档校验调用。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频网址 + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的结果列表 + + + + 智能改写后的实际提示词(若启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的图片网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELED`, `UNKNOWN` + + + + 已完成的视频生成任务的视频网址。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒,无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,位于响应包的根层级而不是 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,位于响应包的根层级而不是 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-7-i2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-7-i2v/code.mdx new file mode 100644 index 000000000..3d5c711c7 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-7-i2v/code.mdx @@ -0,0 +1,442 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.7 I2V" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.7-i2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "Wan 2.7 I2V" +translationSourceHash: ea6272b5 +translationFrom: development/comfy-router/models/wan/wan2-7-i2v/code.mdx +translationBlockHashes: + "_intro": b2a5e3a6 + "Quick start": a9c6fffc + "Schema": 5aa218af + "Examples": 5ffd46d7 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.7 I2V 的 API 参考。Wan 2.7 图生视频可为通过媒体列表提供的首帧添加动画,该列表还接受尾帧、驱动音频轨道和开场视频片段。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `wan/wan2.7-i2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.7-i2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-i2v", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-i2v", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-i2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。 +每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15 秒)、reference_audio(最多 5 段, + 总时长 \<= 15 秒)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序定义了提示词中资产的引用 + 顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可能的值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于使用多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 在路边唱歌,Character2 在旁边跳舞" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等按 media 数组中的 +对应顺序指代媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频 URL。包含 1-3 个视频 URL 的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5 秒,两个视频各最大 2.5 秒,三个视频按比例更短。 +计费:按实际使用的参考时长计算。 + + + + 视频特效模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数将被忽略。 + + + + 要调用的模型 ID。此组件上不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段填充它,因此 Router 调用方可以省略。直接对 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起的 v1 调用必须提供该值,其可接受拼写的枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可能的值:`auto`、`origin` + + + + 已生成视频的时长,以秒为单位: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15 秒) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频时长 + 输出视频时长总计不得超过 30 秒;-1 启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认值为 true + + + + 已生成视频的比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位取默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体比例和意图 +自动推荐合适的比例。 + + 可能的值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既不提供分辨率也不提供尺寸的视频生成请求, +因为分辨率档位决定计费费率。 + + 可能的值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/wan2.7-i2v/openapi.json` 所提供的 schema 生成,该文档与请求到达提供商之前 Router 用于校验调用的文档是同一份。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频网址 + + + + 失败请求的错误代码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误代码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频网址。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的比例,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误代码,在响应信封的根层级而非 `output` 下报告(请求成功时不返回)。 + + + + 失败请求的详细信息,在响应信封的根层级而非 `output` 下报告(请求成功时不返回)。在回退到 `output.message` 之前请先读取此处。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-7-r2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-7-r2v/code.mdx new file mode 100644 index 000000000..52302332c --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-7-r2v/code.mdx @@ -0,0 +1,441 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.7 R2V" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.7-r2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "Wan 2.7 R2V" +translationSourceHash: 5dbe07b4 +translationFrom: development/comfy-router/models/wan/wan2-7-r2v/code.mdx +translationBlockHashes: + "_intro": 3361a1c4 + "Quick start": e1e26620 + "Schema": 72700081 + "Examples": a91cb6b1 +--- +{/* 生成文件。请编辑本目录下的 code.yaml 并运行 `pnpm code-pages:gen`。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.7 R2V 的 API 参考。Wan 2.7 参考生视频可将参考图像和参考视频中的主体带入新的场景,并在提示词中以 character1、character2 等名称来指代。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `wan/wan2.7-r2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.7-r2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-r2v", + { + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-r2v", { + input: { + prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + media: [ + { + type: "reference_image", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-r2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v: first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v: reference_image、reference_video +- wan2.7-videoedit: video、reference_image +- wan3.0-video: first_frame(最大值 1)、last_frame(最大值 1)、reference_image(最大值 10)、 + reference_video(最大值 5 个片段,总时长 \<= 15s)、reference_audio(最大值 5 个片段, + 总时长 \<= 15s)、file(最大值 1,不能与 link 同时使用)、link(最大值 1,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定提示词中素材的引用顺序 + (Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的网址(公开 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代 +主体。例如:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 media 数组中 +对应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频网址。1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频按比例更少。 +计费:按实际使用的参考时长计算。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时会忽略 prompt 参数。 + + + + 要调用的模型 ID。此组件不约束该参数:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充,因此 Router 调用方可省略。直接对 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起 v1 调用时则必须提供,其可接受写法的枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 中。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,若未提供,则根据分辨率档位取默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体 +的比例和意图自动推荐合适的宽高比。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认为 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认为 1080P) +对于既不提供 resolution 也不提供 size 的视频生成请求,此代理会 +拒绝,因为分辨率档位决定计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在 prompt_extend 启用时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.7-r2v/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 请求失败时的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 请求失败的详细信息(请求成功时不返回) + + + + 原始输入提示词(用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(如果已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率级别(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 请求失败时的错误码,报告在响应信封的根层级而非 `output` 之下(请求成功时不返回)。 + + + + 请求失败的详细信息,报告在响应信封的根层级而非 `output` 之下(请求成功时不返回)。在回退到 `output.message` 之前请先读取此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "media": [ + { + "type": "reference_image", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop", + "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留该视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-7-t2v/code.mdx b/zh/development/comfy-router/models/wan/wan2-7-t2v/code.mdx new file mode 100644 index 000000000..2d8385a2c --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-7-t2v/code.mdx @@ -0,0 +1,424 @@ +--- +title: "使用 Comfy Router 调用 Wan 2.7 T2V" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan2.7-t2v 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果结构" +sidebarTitle: "Wan 2.7 T2V" +translationSourceHash: e920aeea +translationFrom: development/comfy-router/models/wan/wan2-7-t2v/code.mdx +translationBlockHashes: + "_intro": 6f7df68c + "Quick start": e0c4fb4d + "Schema": 380909b6 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.7 T2V 的 API 参考。Wan 2.7 文生视频仅凭一段提示词即可生成短视频,支持 720P 或 1080P,时长 2 到 15 秒。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 执行的同一调用。 + +**模型 ID:** `wan/wan2.7-t2v` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.7-t2v` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-t2v", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-t2v", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-t2v \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持的格式:mp3 和 wav。不能与 reference_video_urls 一起使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图片格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于为视频生成指定参考素材(图像、音频、视频)。每个元素包含 type 和 url 两个字段。 +支持的 type 值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 个片段,总时长 \<= 15s)、reference_audio(最多 5 个片段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 一起使用)、link(最多 1 个,不能 + 与 file 一起使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序决定了素材在提示词中的引用顺序 + (Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按照参考视频的顺序使用 'character1'、'character2' 等来 +指代主体。示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 media 数组中 +相应顺序的媒体资产。 + + + + 仅用于 wan2.6-r2v 模型的参考视频 URL。1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 一起使用 +参考时长:单个视频最大 5s,两个视频各最大 2.5s,三个视频则按比例更短。 +计费:基于实际使用的参考时长。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不强制要求:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径片段中填充它,因此 Router 调用方可以省略。直接以 v1 方式调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时则必须提供,可接受的拼写枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频中的原始音频 + + 可选值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入视频 + 总时长 + 输出视频时长不得超过 30 秒;-1 会启用智能时长模式, + 由模型选择合适的时长 + + 范围:`-1` 至 `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图自动推荐合适的 +宽高比。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率等级。支持的值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定了计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 取值范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +由 Router 在 `GET /v2/models/wan/wan2.7-t2v/openapi.json` 提供的 schema 生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。### 输出 + + + + + + + 智能改写后的实际提示词(适用于视频任务) + + + + 带音频生成的 I2V 任务的音频网址 + + + + 请求失败时的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 请求失败的详细信息(请求成功时不返回) + + + + 原始输入提示词(适用于视频任务) + + + + 图像生成任务的结果列表 + + + + 智能改写后的实际提示词(如已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频网址。链接有效期 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的比例,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 请求失败时的错误码,报告在信封的根层级,而不是在 `output` 下(请求成功时不返回)。 + + + + 请求失败的详细信息,报告在信封的根层级,而不是在 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx b/zh/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx new file mode 100644 index 000000000..c1a6c18ec --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan2-7-videoedit/code.mdx @@ -0,0 +1,439 @@ +--- +title: "搭配 Comfy Router 使用 Wan 2.7 Video Edit" +description: "用于通过 Comfy Router 以 HTTP 方式调用 wan/wan2.7-videoedit 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果结构" +sidebarTitle: "Wan 2.7 Video Edit" +translationSourceHash: 93e5669b +translationFrom: development/comfy-router/models/wan/wan2-7-videoedit/code.mdx +translationBlockHashes: + "_intro": 47b7d5e3 + "Quick start": 66b5f72c + "Schema": 515068a3 + "Examples": 622d1416 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 2.7 视频编辑的 API 参考。Wan 2.7 视频编辑可根据文本指令重写已有的视频片段,并可选地由参考图像进行引导。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `wan/wan2.7-videoedit` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan2.7-videoedit` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan2.7-videoedit", + { + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin", + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan2.7-videoedit", { + input: { + prompt: "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + media: [ + { + type: "video", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4", + }, + ], + }, + parameters: { + resolution: "720P", + audio_setting: "origin", + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan2.7-videoedit \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged\",\"media\":[{\"type\":\"video\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4\"}]}, \"parameters\": {\"resolution\":\"720P\",\"audio_setting\":\"origin\"}}" +``` + + +## 架构 + +### 输入 + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载 URL。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图像 URL 或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最大值 1)、last_frame(最大值 1)、reference_image(最大值 10)、 + reference_video(最多 5 段,总时长 \<= 15s)、reference_audio(最多 5 段, + 总时长 \<= 15s)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。在同一次请求中,reference_*/file/link 类型与 first_frame/last_frame + 类型互斥。数组顺序决定提示词中资产的引用顺序(Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + 可能取值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中出现的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于带多个参考视频的 wan2.6-r2v,请按照参考视频的顺序使用 'character1'、'character2' 等来引用主体。 +示例:"Character1 在路边唱歌,Character2 在旁边跳舞" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等,按照 media 数组中的 +对应顺序引用媒体资产。 + + + + 仅限 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最长 5s,两个视频各最长 2.5s,三个视频按比例相应减少。 +计费:按实际使用的参考时长计费。 + + + + 视频效果模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件不作约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填入该值,因此 Router 调用方可以省略。直接向 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起的 v1 调用则必须提供,可接受的拼写枚举位于该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频中的原始音频 + + 可能取值:`auto`、`origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅支持 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 区间内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 区间内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 区间内的整数;有视频输入时,输入视频总时长 + 加上输出视频时长不得超过 30 秒;-1 启用智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认是 true + + + + 生成视频的宽高比。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供该参数,则根据分辨率档位设置默认值。 +对于 wan3.0-video,adaptive(默认)会根据输入媒体的比例和意图 +自动推荐合适的宽高比。 + + 可能取值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅支持 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + 可能取值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可能的值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不含 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印 logo,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/wan2.7-videoedit/openapi.json` 提供的 schema 生成,该文档也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(适用于视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 请求失败时的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 请求失败的详细信息(请求成功时不返回) + + + + 原始输入提示词(适用于视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的图片网址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的任务结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。连线有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒,无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 请求失败时的错误码,在响应信封(envelope)的根层级而非 `output` 下上报(请求成功时不返回)。 + + + + 请求失败的详细信息,在响应信封(envelope)的根层级而非 `output` 下上报(请求成功时不返回)。在回退到 `output.message` 之前请先阅读此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "media": [ + { + "type": "video", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/street_dancer.mp4" + } + ] + }, + "parameters": { + "resolution": "720P", + "audio_setting": "origin" + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged", + "actual_prompt": "restyle the clip as a hand-drawn ink sketch, keep the dancer's movement unchanged, monochrome linework on paper texture", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx b/zh/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx new file mode 100644 index 000000000..da2224373 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan3-0-video-prime/code.mdx @@ -0,0 +1,424 @@ +--- +title: "将 Wan 3.0 Video Prime 与 Comfy Router 配合使用" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan3.0-video-prime 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和结果形状" +sidebarTitle: "Wan 3.0 Video Prime" +translationSourceHash: b3fd2952 +translationFrom: development/comfy-router/models/wan/wan3-0-video-prime/code.mdx +translationBlockHashes: + "_intro": ddcfe1dd + "Quick start": efd176ed + "Schema": 550c6895 + "Examples": 12f77722 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video Prime 的 API 参考。Wan 3.0 Video Prime 是 Wan 3.0 Video 中质量更高的层级,并已针对相同的 Router 提示词和媒体 schema 完成验证。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发出的相同调用。 + +**模型 ID:** `wan/wan3.0-video-prime` + +**接口端点:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video-prime` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video-prime", + { + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video-prime", { + input: { + prompt: "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video-prime \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"a single red maple leaf falling onto still water, slow motion, shallow depth of field\"}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## Schema + +### Input + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最多 1 个)、last_frame(最多 1 个)、reference_image(最多 10 个)、 + reference_video(最多 5 段,总时长 \<= 15 秒)、reference_audio(最多 5 段, + 总时长 \<= 15 秒)、file(最多 1 个,不能与 link 同时使用)、link(最多 1 个,不能 + 与 file 同时使用)。在同一请求中,reference_*/file/link 类型与 first_frame/last_frame 类型 + 互斥。数组顺序决定资产在提示词中的引用顺序 + (Image 1、Video 1、Audio 1……)。 + + + + 媒体资产类型 + + Possible values: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link` + + + + 媒体文件的 URL(公共 HTTP/HTTPS 网址或 OSS 临时网址) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于包含多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代主体。 +示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等,按 media 数组中的 +对应顺序来指代媒体资产。 + + + + 仅限 wan2.6-r2v 模型的参考视频网址。由 1-3 个视频网址组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大 5 秒,两个视频各最大 2.5 秒,三个视频按比例递减。 +计费:按实际使用的参考时长计算。 + + + + 视频特效模板名称。可选。目前支持:squish、flying、carousel。使用时,prompt 参数将被忽略。 + + + + 要调用的模型 ID。此组件不做约束:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接通过 v1 调用 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 时必须提供它,可接受的拼写枚举定义在该操作自身的组件 `WanVideoGenerationRequest` 上。 + + + + 视频处理参数 + + + + 是否为视频添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(默认):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + Possible values: `auto`, `origin` + + + + 生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15 秒) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时, + 输入视频总时长 + 输出视频时长不得超过 30 秒;-1 启用智能时长模式, + 由模型选择合适的时长 + + Range: `-1` to `30` + + + + 是否启用提示词智能改写。默认为 true + + + + 生成视频的画面比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位取默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体资产的比例和意图 +自动推荐合适的画面比例。 + + Possible values: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +本代理会拒绝既未提供 resolution 也未提供 size 的视频生成请求, +因为分辨率档位决定计费费率。 + + Possible values: `480P`, `720P`, `1080P` + + 随机种子,用于控制模型生成内容的随机性 + + 范围:`0` 至 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(不支持 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +根据 Router 在 `GET /v2/models/wan/wan3.0-video-prime/openapi.json` 提供的 schema 生成,这也是它在请求到达提供商之前用于校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(视频任务) + + + + 带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(视频任务) + + + + 图像生成任务的任务结果列表 + + + + 智能改写后的实际提示词(若已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败任务数量 + + + + 成功任务数量 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一的请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 和 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 和 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 和 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 和 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,在响应信封(envelope)的根级返回,而不是在 `output` 下(请求成功时不返回)。 + + + + 失败请求的详细信息,在响应信封(envelope)的根级返回,而不是在 `output` 下(请求成功时不返回)。在回退读取 `output.message` 之前,请先查看此项。 + + +## 示例 + +### 输入 + +```json +{ + "input": { + "prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field" + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field", + "actual_prompt": "a single red maple leaf falling onto still water, slow motion, shallow depth of field, soft morning light, gentle ripples spreading outward", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "video_count": 1, + "video_duration": 5, + "video_ratio": "1280*720" + } +} +``` + +视频 URL 的有效期为 24 小时。如果需要保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wan/wan3-0-video/code.mdx b/zh/development/comfy-router/models/wan/wan3-0-video/code.mdx new file mode 100644 index 000000000..c3316fce9 --- /dev/null +++ b/zh/development/comfy-router/models/wan/wan3-0-video/code.mdx @@ -0,0 +1,443 @@ +--- +title: "通过 Comfy Router 使用 Wan 3.0 Video" +description: "通过 Comfy Router 以 HTTP 方式调用 wan/wan3.0-video 的 Python、TypeScript 和 cURL 代码片段,以及请求字段和返回结果的形状" +sidebarTitle: "Wan 3.0 Video" +translationSourceHash: e9c2144b +translationFrom: development/comfy-router/models/wan/wan3-0-video/code.mdx +translationBlockHashes: + "_intro": e7e79c75 + "Quick start": eecace93 + "Schema": 521b4b8d + "Examples": 5ffd46d7 +--- +{/* GENERATED FILE. Edit code.yaml in this directory and run `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +Wan 3.0 Video 的 API 参考。Wan 3.0 Video 既可以仅根据提示词生成,也可以根据由首帧和末帧、参考图像、视频和音频组成的媒体列表生成;在提示词中分别以 Image 1、Video 1 和 Audio 1 来引用。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `wan/wan3.0-video` + +**端点:** `POST https://api.comfy.org/v2/models/wan/wan3.0-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wan/wan3.0-video", + { + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + "parameters": { + "resolution": "720P", + "duration": 5, + }, + }, + ) + +print("video:", result["output"]["video_url"]) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +type Result = { output: { video_url: string } }; +const { data } = await comfy.models.run("wan/wan3.0-video", { + input: { + prompt: "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + media: [ + { + type: "first_frame", + url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png", + }, + ], + }, + parameters: { + resolution: "720P", + duration: 5, + }, +}); + +console.log("video:", data.output.video_url); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wan/wan3.0-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"input\": {\"prompt\":\"the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady\",\"media\":[{\"type\":\"first_frame\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}" +``` + + +## 结构 {#schema} + +### 输入 {#input} + + + 输入基本信息,例如提示词等。 + + + + 音频文件下载网址。支持的格式:mp3 和 wav。不能与 reference_video_urls 同时使用。 + + + + 首帧图片网址或 Base64 编码数据。I2V 模型必填。图像格式:JPEG、JPG、PNG、BMP、WEBP。分辨率:360-2000 像素。文件大小:最大值 10MB。 + + + + wan2.7 和 wan3.0 模型的媒体资产列表。用于指定视频生成的参考素材(图像、音频、视频)。每个元素包含 type 和 url 字段。 +支持的 type 取值因模型而异: +- wan2.7-i2v:first_frame、last_frame、driving_audio、first_clip +- wan2.7-r2v:reference_image、reference_video +- wan2.7-videoedit:video、reference_image +- wan3.0-video:first_frame(最大值 1)、last_frame(最大值 1)、reference_image(最大值 10)、 + reference_video(最大值 5 段,总时长 \<= 15s)、reference_audio(最大值 5 段, + 总时长 \<= 15s)、file(最大值 1,不能与 link 同时使用)、link(最大值 1,不能 + 与 file 同时使用)。reference_*/file/link 类型与 first_frame/last_frame 类型 + 在同一请求中互斥。数组顺序定义了提示词中资产的引用 + 顺序(Image 1、Video 1、Audio 1、...)。 + + + + 媒体资产类型 + + 可选值:`first_frame`、`last_frame`、`driving_audio`、`first_clip`、`reference_image`、`reference_video`、`reference_audio`、`video`、`file`、`link` + + + + 媒体文件的 URL(公开的 HTTP/HTTPS URL 或 OSS 临时 URL) + + + + 反向提示词,用于描述你不希望在视频画面中看到的内容 + + + + 文本提示词。支持中文和英文,长度不超过 800 个字符 +(wan3.0-video 最多 20,000 个字符;超出限制的内容会被截断)。 +对于使用多个参考视频的 wan2.6-r2v,请按参考视频的顺序使用 'character1'、'character2' 等来指代 +其中的主体。示例:"Character1 sings on the roadside, Character2 dances beside it" +对于 wan3.0-video 参考模式,请使用 'Image 1'、'Video 1'、'Audio 1' 等来指代 +media 数组中相应顺序的媒体资产。 + + + + 仅适用于 wan2.6-r2v 模型的参考视频 URL。由 1-3 个视频 URL 组成的数组。 +输入限制: +- 格式:mp4、mov +- 数量:1-3 个视频 +- 单个视频长度:2-30 秒 +- 单个文件大小:最大值 30MB +- 不能与 audio_url 同时使用 +参考时长:单个视频最大值为 5s,两个视频各最大值为 2.5s,三个视频按比例减少。 +计费:基于实际使用的参考时长。 + + + + 视频特效模板名称。可选。当前支持:squish、flying、carousel。使用时,prompt 参数会被忽略。 + + + + 要调用的模型 ID。此组件上并非必填:Comfy Router 会从 `POST /v2/models/wan/{model}` 的 `{model}` 路径段中填充它,因此 Router 调用方可以省略。直接对 `POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` 发起 v1 调用时则必须提供它,可接受拼写的枚举值位于该操作自身的组件 `WanVideoGenerationRequest` 中。 + + + + 视频处理参数 + + + + 是否向视频中添加音频 + + + + wan2.7-videoedit 模型的视频音频设置。 +- auto(自动,默认值):模型根据提示词内容智能判断 +- origin:强制保留输入视频的原始音频 + + 可选值:`auto`、`origin` + + + + 已生成视频的时长,单位为秒: +- wan2.5 模型:5 或 10 秒 +- wan2.6-t2v、wan2.6-i2v:5、10 或 15 秒 +- wan2.6-r2v:仅 5 或 10 秒(不支持 15s) +- wan2.7-i2v、wan2.7-t2v:[2, 15] 范围内的整数 +- wan2.7-r2v、wan2.7-videoedit:[2, 10] 范围内的整数 +- wan3.0-video:无视频输入时为 [2, 30] 范围内的整数;有视频输入时,输入 + 视频总时长 + 输出视频时长不得超过 30 秒;-1 启用 + 智能时长模式,由模型选择合适的时长 + + 范围:`-1` 到 `30` + + + + 是否启用提示词智能改写。默认值为是 + + + + 已生成视频的比例。仅适用于 wan2.7 和 wan3.0 模型。 +对于 wan2.7 模型,如果未提供,则根据分辨率档位确定默认值。 +对于 wan3.0-video,adaptive(默认值)会根据输入媒体的比例和意图 +自动推荐合适 +的比例。 + + 可选值:`adaptive`、`16:9`、`9:16`、`1:1`、`4:3`、`3:4` + + + + 分辨率档位。支持的取值因模型而异: +- wan2.5-i2v-preview:480P、720P、1080P +- wan2.6-i2v:仅 720P、1080P(不支持 480P) +- wan2.7 模型(i2v、t2v、r2v、videoedit):720P、1080P(默认 1080P) +- wan3.0-video、wan3.0-video-prime:480P、720P、1080P(上游默认 1080P) +此代理会拒绝既未提供分辨率 +也未提供尺寸的视频生成请求, +因为分辨率档位决定计费费率。 + + 可选值:`480P`、`720P`、`1080P` + + 随机数种子,用于控制模型生成内容的随机性 + + 范围:`0` 到 `2147483647` + + + + 智能多镜头控制。仅在启用 prompt_extend 时生效。 +适用于 wan2.6 和 wan2.7-r2v 模型。 +- single:单镜头视频(默认) +- multi:多镜头视频 + + 可选值:`multi`、`single` + + + + 视频分辨率,格式为 宽度*高度。支持的分辨率因模型而异: +对于 wan2.5 T2V:480P(480*832、832*480、624*624)、720P、1080P 尺寸 +对于 wan2.6 T2V/R2V(无 480P): + 720P:1280*720、720*1280、960*960、1088*832、832*1088 + 1080P:1920*1080、1080*1920、1440*1440、1632*1248、1248*1632 + + + + 是否添加水印标识,水印位于右下角 + + +生成自 Router 在 `GET /v2/models/wan/wan3.0-video/openapi.json` 提供的 schema,即请求到达提供商之前 Router 用来校验调用的同一份文档。### 输出 + + + + + + + 智能改写后的实际提示词(视频任务) + + + + 用于带音频生成的 I2V 任务的音频 URL + + + + 失败请求的错误码(请求成功时不返回) + + + + 任务完成时间 + + + + 关于失败请求的详细信息(请求成功时不返回) + + + + 原始输入提示词(视频任务) + + + + 图像生成任务的结果列表 + + + + 智能改写后的实际提示词(如已启用) + + + + 图像错误码(部分任务失败时返回) + + + + 图像错误信息(部分任务失败时返回) + + + + 原始输入提示词 + + + + 已生成图像的 URL 地址 + + + + 任务执行时间 + + + + 任务提交时间 + + + + 任务 ID + + + + 图像生成任务的结果统计 + + + + 失败任务数 + + + + 成功任务数 + + + + 任务总数 + + + + 任务状态 + + 可能的值:`PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN` + + + + 已完成的视频生成任务的视频 URL。链接有效期为 24 小时 + + + + 唯一请求标识符 + + + + 输出信息统计。仅统计成功的结果 + + + + 视频分辨率等级(I2V 与 wan3.0-video 任务) + + + + 已生成视频的时长,单位为秒(I2V 与 wan3.0-video 任务) + + + + 已生成视频的帧率(wan3.0-video 任务) + + + + 已生成图像的数量(T2I 与 I2I 任务) + + + + 输入视频的时长,单位为秒;无视频输入时为 0.0(wan3.0-video 任务) + + + + 输出视频的时长,单位为秒(wan3.0-video 任务) + + + + 已生成视频的宽高比,例如 16:9(wan3.0-video 任务) + + + + 图像分辨率(T2I 与 I2I 任务) + + + + 已生成视频的数量(T2V 任务) + + + + 已生成视频的时长,单位为秒(T2V 任务) + + + + 视频分辨率比例(T2V 任务) + + + + 失败请求的错误码,它在响应信封的根层级(ROOT)返回,而不是位于 `output` 下(请求成功时不返回)。 + + + + 关于失败请求的详细信息,它在响应信封的根层级(ROOT)返回,而不是位于 `output` 下(请求成功时不返回)。在回退到 `output.message` 之前请先查看此项。 + + +## 示例 {#examples} + +### 输入 + +```json +{ + "input": { + "prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "media": [ + { + "type": "first_frame", + "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png" + } + ] + }, + "parameters": { + "resolution": "720P", + "duration": 5 + } +} +``` + +### 输出 + +```json +{ + "output": { + "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60", + "task_status": "SUCCEEDED", + "submit_time": "2027-01-01T00:00:00.000Z", + "scheduled_time": "2027-01-01T00:00:01.000Z", + "end_time": "2027-01-01T00:01:04.000Z", + "orig_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady", + "actual_prompt": "the robot lowers its raised arm and steps toward the camera, the flat orange backdrop holds steady, smooth studio lighting, subtle camera push in", + "video_url": "https://.../generated.mp4" + }, + "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51", + "usage": { + "SR": 720, + "duration": 5 + } +} +``` + +视频 URL 的有效期为 24 小时。如需保留视频,请及时下载。 + + diff --git a/zh/development/comfy-router/models/wavespeed/flashvsr/code.mdx b/zh/development/comfy-router/models/wavespeed/flashvsr/code.mdx new file mode 100644 index 000000000..3b8d77d3d --- /dev/null +++ b/zh/development/comfy-router/models/wavespeed/flashvsr/code.mdx @@ -0,0 +1,177 @@ +--- +title: "将 Flashvsr 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 wavespeed/flashvsr:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Flashvsr" +translationSourceHash: 098838c2 +translationFrom: development/comfy-router/models/wavespeed/flashvsr/code.mdx +translationBlockHashes: + "_intro": 9f6b0669 + "Quick start": bf2f0a80 + "Schema": 0dace1f8 + "Examples": f0f03046 +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/wavespeed/flashvsr.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`wavespeed/flashvsr` 的 API 参考,由 Comfy Router 从 WaveSpeed 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 发起的同一调用。 + +**Model ID:** `wavespeed/flashvsr` + +**Endpoint:** `POST https://api.comfy.org/v2/models/wavespeed/flashvsr` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/flashvsr", + { + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/flashvsr", { + duration: 4, + target_resolution: "1080p", + video: "https://samplelib.com/mp4/sample-30s.mp4", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/flashvsr \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"target_resolution\": \"1080p\", \"video\": \"https://samplelib.com/mp4/sample-30s.mp4\"}" +``` + + +## Schema + +### 输入 + + + 视频时长,单位为秒 + + + + 目标放大分辨率。 + + 可选值:`720p`、`1080p`、`2k`、`4k` + + + + 要放大的视频。可以是视频文件的 URL,也可以是 base64 编码的视频。 + + +本部分由 Router 在 `GET /v2/models/wavespeed/flashvsr/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + WavespeedAI 自身的信封状态码,与 HTTP 状态码对应(本 schema 所描述的文档中为 200)。部分失败情况 Wavespeed 会在此处报告,而不是在传输状态中报告。 + + + + + + + + Wavespeed 创建该预测的 ISO-8601 时间戳。 + + + + Wavespeed 的自由文本失败原因,无失败时为空字符串。真正失败的预测会以 Comfy Router 错误的形式返回给 Router 调用方,而不是以本文档的形式返回。 + + + + Wavespeed 为 Router 提交并轮询的该预测分配的标识符。 + + + + 该预测运行所使用的 Wavespeed 模型 id。 + + + + 已完成的生成结果。在 Router 返回的文档中一定存在且非空;该列表本身就是结果。每个元素都是指向已生成内容的 URL:对于 `wavespeed/flashvsr` 是 MP4,对于两个放大器是图像;或者当请求设置了 `enable_base64_output` 时,对于那两个图像 id,则为 base64 编码的字节本身。这些链接由 Wavespeed 提供,会过期。 + + + + 该预测的终端状态,按 Wavespeed 的写法返回。此处不限定为枚举:Router 会原样转发该值,轮询分类器在比较前会将其转为小写,因此成功状态可能合法地以 `completed`、`succeeded`、`success` 或 `done` 出现,且大小写不限。 + + + + Wavespeed 自身的耗时测量数据。 + + + + 推理时间,单位为毫秒。这是 Wavespeed 的数值,而非 Comfy 的计费数值。 + + + + Wavespeed 为该预测提供的自身链接。 + + + + Router 轮询的预测结果 URL。 + + + + 信封状态消息,例如 `success`。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 4, + "target_resolution": "1080p", + "video": "https://samplelib.com/mp4/sample-30s.mp4" +} +``` + +### 输出 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/flashvsr/upscaled.mp4" + ], + "status": "completed", + "timings": { + "inference": 128000 + } + }, + "message": "success" +} +``` + + + diff --git a/zh/development/comfy-router/models/wavespeed/seedvr2/code.mdx b/zh/development/comfy-router/models/wavespeed/seedvr2/code.mdx new file mode 100644 index 000000000..316af9817 --- /dev/null +++ b/zh/development/comfy-router/models/wavespeed/seedvr2/code.mdx @@ -0,0 +1,180 @@ +--- +title: "将 Seedvr 2 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 wavespeed/seedvr2:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Seedvr 2" +translationSourceHash: 3458a74d +translationFrom: development/comfy-router/models/wavespeed/seedvr2/code.mdx +translationBlockHashes: + "_intro": 538f574f + "Quick start": ea636f07 + "Schema": a04647c3 + "Examples": f2be022d +--- +{/* GENERATED FILE. Generated from router-schemas/wavespeed/seedvr2.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`wavespeed/seedvr2` 的 API 参考文档,由 Comfy Router 提供,来自 WaveSpeed。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的相同调用。 + +**模型 ID:** `wavespeed/seedvr2` + +**端点:** `POST https://api.comfy.org/v2/models/wavespeed/seedvr2` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/seedvr2", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/seedvr2", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/seedvr2 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## 模式 + +### 输入 + + + 如果启用,输出将被编码为 BASE64 字符串,而不是 URL。 + + + + 要放大的图像的 URL。 + + + + 输出图像的格式。 + + 可选值:`jpeg`、`png`、`webp` + + + + 输出图像的目标分辨率。 + + 可选值:`2k`、`4k`、`8k` + + +该模式由 Router 在 `GET /v2/models/wavespeed/seedvr2/openapi.json` 提供的 schema 生成,也是请求到达提供商之前 Router 用于校验调用所依据的同一份文档。 + +### 输出 + + + WavespeedAI 自身的信封状态码,与 HTTP 状态对应(在本文档所描述的响应中为 200)。Wavespeed 的部分失败会在此处报告,而不是在传输层状态中报告。 + + + + + + + + Wavespeed 创建该预测时的 ISO-8601 时间戳。 + + + + Wavespeed 的自由文本失败原因,没有失败时为空字符串。真正失败的预测会以 Comfy Router 错误的形式返回给 Router 调用方,而不是以本文档的形式返回。 + + + + Router 提交并轮询的预测在 Wavespeed 侧的标识符。 + + + + 该预测运行所使用的 Wavespeed 模型 id。 + + + + 已完成的生成结果。在 Router 返回的文档中必定存在且非空;这个列表本身就是结果。每个元素都是指向生成内容的 URL:`wavespeed/flashvsr` 为 MP4,两个 upscaler 为图像;或者,当请求设置了 `enable_base64_output` 时,两个图像 id 的元素就是 base64 编码的字节本身。这些链接由 Wavespeed 提供,会过期。 + + + + 该预测的终端状态,按 Wavespeed 的写法书写。此处不限定为枚举:Router 会原样转发该值,而轮询分类器在比较之前会将其转为小写,因此成功状态可以合理地以 `completed`、`succeeded`、`success` 或 `done` 到达,且不区分大小写。 + + + + Wavespeed 自身的计时测量值。 + + + + 推理时间,单位为毫秒。这是 Wavespeed 的数值,不是 Comfy 的计费。 + + + + Wavespeed 自身针对该预测的链接。 + + + + Router 所轮询的预测结果 URL。 + + + + 信封状态消息,例如 `success`。 + + +## 示例 + +### 输入 + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 输出 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/seedvr2/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 4200 + } + }, + "message": "success" +} +``` + + + diff --git a/zh/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx b/zh/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx new file mode 100644 index 000000000..3bd1d23e9 --- /dev/null +++ b/zh/development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx @@ -0,0 +1,181 @@ +--- +title: "将 Ultimate Image Upscaler 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 wavespeed/ultimate-image-upscaler:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Ultimate Image Upscaler" +translationSourceHash: 958a2265 +translationFrom: development/comfy-router/models/wavespeed/ultimate-image-upscaler/code.mdx +translationBlockHashes: + "_intro": 45710ad8 + "Quick start": 0df9b0ec + "Schema": 96a7a47b + "Examples": c8d9b760 +--- + +{/* GENERATED FILE. Generated from router-schemas/wavespeed/ultimate-image-upscaler.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`wavespeed/ultimate-image-upscaler` 的 API 参考,由 Comfy Router 从 WaveSpeed 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起的同一调用。 + +**模型 ID:** `wavespeed/ultimate-image-upscaler` + +**端点:** `POST https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "wavespeed/ultimate-image-upscaler", + { + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("wavespeed/ultimate-image-upscaler", { + image: "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + target_resolution: "4k", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"image\": \"https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg\", \"target_resolution\": \"4k\"}" +``` + + +## Schema + +### Input + + + 如果启用,输出将被编码为 BASE64 字符串,而不是 URL。 + + + + 需要 upscale 的图像的 URL。 + + + + 输出图像的格式。 + + 可选值:`jpeg`、`png`、`webp` + + + + 输出图像的目标分辨率。 + + 可选值:`2k`、`4k`、`8k` + + +由 Router 在 `GET /v2/models/wavespeed/ultimate-image-upscaler/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### Output + + + WavespeedAI 自己的信封状态码,对应 HTTP 状态(在本文档所描述的文档中为 200)。Wavespeed 会把某些失败报告在这里,而不是报告在传输状态中。 + + + + + + + + Wavespeed 创建该预测时的 ISO-8601 时间戳。 + + + + Wavespeed 的自由文本失败原因,没有错误时为空字符串。真正失败的预测会以 Comfy Router 错误的形式到达 Router 调用方,而不是以本文档的形式。 + + + + Wavespeed 为 Router 提交并轮询的预测分配的标识符。 + + + + 该预测运行所用的 Wavespeed 模型 id。 + + + + 已完成的生成结果。在 Router 返回的文档中存在且非空;这个列表就是结果本身。每个元素都是指向已生成内容的 URL:`wavespeed/flashvsr` 返回 MP4,两个 upscaler 返回图像;或者,对于这两个图像 id,当请求设置了 `enable_base64_output` 时,元素是 base64 编码的字节本身。这些链接由 Wavespeed 提供,并且会过期。 + + + + 预测的终端状态,按 Wavespeed 的拼写。此处未收窄为枚举:Router 原样转发该值,轮询分类器在比较前会将其转为小写,因此成功状态可以合理地以 `completed`、`succeeded`、`success` 或 `done` 出现,大小写不限。 + + + + Wavespeed 自己的计时测量。 + + + + 推理时间,单位为毫秒。这是 Wavespeed 的数字,不是 Comfy 的计费。 + + + + Wavespeed 为该预测提供的链接。 + + + + Router 轮询的预测结果 URL。 + + + + 信封状态消息,例如 `success`。 + + +## 示例 + +### 输入 + +```json +{ + "image": "https://images.pexels.com/photos/346529/pexels-photo-346529.jpeg", + "target_resolution": "4k" +} +``` + +### 输出 + +```json +{ + "code": 200, + "data": { + "created_at": "2027-01-01T00:00:00Z", + "error": "", + "id": "3f6c1a90-2b47-4d18-9a55-7c0e8b21d4f3", + "outputs": [ + "https://example.invalid/wavespeed/ultimate-image-upscaler/upscaled.png" + ], + "status": "completed", + "timings": { + "inference": 9100 + } + }, + "message": "success" +} +``` + + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx new file mode 100644 index 000000000..6be63edce --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx @@ -0,0 +1,184 @@ +--- +title: "将 Grok Imagine Image 2.0 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 xai/grok-imagine-image-2.0:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Image 2.0" +translationSourceHash: 8bcbfc88 +translationFrom: development/comfy-router/models/xai/grok-imagine-image-2-0/code.mdx +translationBlockHashes: + "_intro": df08f63e + "Quick start": 99cca79e + "Schema": 9a41423a + "Examples": 3222291b +--- +{/* GENERATED FILE. 由 `pnpm code-pages:gen` 从 router-schemas/xai/grok-imagine-image-2.0.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-2.0` 的 API 参考,该模型由 Comfy Router 从 xAI 提供。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `xai/grok-imagine-image-2.0` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-2.0", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-2.0", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-2.0 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema {#schema} + +### 输入 + + + 已生成图像的宽高比。默认为 auto,即根据提示词自动选择最佳比例。 + + 可选值:`1:1`、`3:4`、`4:3`、`9:16`、`16:9`、`2:3`、`3:2`、`9:19.5`、`19.5:9`、`9:20`、`20:9`、`1:2`、`2:1`、`auto` + + + + 要使用的模型。支持:grok-imagine-image(默认)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。已弃用的 -beta 标识会作为别名指向其 GA 模型。 + + + + 要生成的图像数量 + + 范围:`1` 到 `10` + + + + 用于图像生成的提示词 + + + + 输出图像的质量。对于 grok-imagine-image-2.0,此项用于选择价格档位(low/medium;medium 为默认值);其他模型目前会忽略此项。 + + 可选值:`low`、`medium`、`high` + + + + 已生成图像的分辨率。默认为 1k。 + + 可选值:`1k`、`2k` + + + + 返回图像的响应格式。可以是 url 或 b64_json。Comfy Router(`POST /v2/models/xai/{model}`)会在出站请求中将其强制转换为 `url`,因为无论哪种格式它都以重新托管的 URL 提供图像结果;而此 `/proxy/` 路由会按原样处理。 + 可选值:`url`、`b64_json` + + + + 图像尺寸(不支持) + + + + 图像风格(不支持) + + + + 代表你的最终用户的唯一标识符,可帮助 xAI 监控和检测滥用行为 + + +根据 Router 在 `GET /v2/models/xai/grok-imagine-image-2.0/openapi.json` 提供的 schema 生成,这与它在请求到达提供商之前用于校验调用的文档相同。 + +### 输出 + + + 如果请求被输入审核拦截,则包含拦截原因 + + + + 已生成图像对象的列表 + + + + 已生成图像的 base64 编码字符串表示(jpeg 编码)(如果 response_format 为 b64_json) + + + + 已生成图像的 MIME 类型(例如 image/png、image/jpeg、image/webp)。 + + + + 已生成图像的 url(如果 response_format 为 url) + + + + 图像生成请求的使用信息 + + + + 此请求的准确费用,单位为 USD ticks(10,000,000,000 ticks = 1 USD) + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx new file mode 100644 index 000000000..231bae6be --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx @@ -0,0 +1,184 @@ +--- +title: "配合 Comfy Router 使用 Grok Imagine Image Pro" +description: "通过 Comfy Router 调用 xai/grok-imagine-image-pro:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Image Pro" +translationSourceHash: c9301ace +translationFrom: development/comfy-router/models/xai/grok-imagine-image-pro/code.mdx +translationBlockHashes: + "_intro": 2d3503a0 + "Quick start": 25496f31 + "Schema": 6f4e60ac + "Examples": 3222291b +--- +{/* 已生成文件。由 `pnpm code-pages:gen` 从 router-schemas/xai/grok-imagine-image-pro.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +由 Comfy Router 从 xAI 提供的 `xai/grok-imagine-image-pro` API 参考。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段是通过原始 HTTP 进行的相同调用。 + +**模型 ID:** `xai/grok-imagine-image-pro` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-pro` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-pro", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-pro", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema + +### 输入 + + + 已生成图像的宽高比。默认为 auto,即为提示词自动选择最佳比例。 + + 可选值:`1:1`、`3:4`、`4:3`、`9:16`、`16:9`、`2:3`、`3:2`、`9:19.5`、`19.5:9`、`9:20`、`20:9`、`1:2`、`2:1`、`auto` + + + + 要使用的模型。支持:grok-imagine-image(默认)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。弃用的 -beta id 会被别名到其 GA 模型。 + + + + 要生成的图像数量 + + 范围:`1` 到 `10` + + + + 图像生成的提示词 + + + + 输出图像的质量。对于 grok-imagine-image-2.0,此项用于选择价格档位(low/medium;默认为 medium);其他模型目前会忽略该项。 + + 可选值:`low`、`medium`、`high` + + + + 已生成图像的分辨率。默认为 1k。 + + 可选值:`1k`、`2k` + + + + 返回图像的响应格式。可以是 url 或 b64_json。Comfy Router(`POST /v2/models/xai/{model}`)会在对外请求中将其强制转换为 `url`,因为无论哪种格式,它都以重新托管的 URL 形式提供图像结果;而此 `/proxy/` 路由会按原样遵循该设置。 + + 可选值:`url`、`b64_json` + + + + 图像尺寸(不支持) + + + + 图像风格(不支持) + + + + 代表你的最终用户的唯一标识符,可帮助 xAI 监控和检测滥用行为 + + +根据 Router 在 `GET /v2/models/xai/grok-imagine-image-pro/openapi.json` 提供的 schema 生成,这也是请求到达提供商之前 Router 用于校验调用的同一份文档。 + +### 输出 + + + 如果请求被输入内容审核拦截,则包含拦截原因 + + + + 已生成图像对象的列表 + + + + 已生成图像的 base64 编码字符串表示,采用 jpeg 编码(如果 response_format 为 b64_json) + + + + 已生成图像的 MIME 类型(例如 image/png、image/jpeg、image/webp)。 + + + + 指向已生成图像的 url(如果 response_format 为 url) + + + + 图像生成请求的使用量信息 + + + + 此请求的精确成本,以 USD ticks 为单位(10,000,000,000 ticks = 1 USD) + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx new file mode 100644 index 000000000..ee84fd8f2 --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx @@ -0,0 +1,184 @@ +--- +title: "配合 Comfy Router 使用 Grok Imagine Image Quality" +description: "通过 Comfy Router 调用 xai/grok-imagine-image-quality:端点、请求结构与 Router 返回的响应。" +sidebarTitle: "Grok Imagine Image Quality" +translationSourceHash: a2c395de +translationFrom: development/comfy-router/models/xai/grok-imagine-image-quality/code.mdx +translationBlockHashes: + "_intro": db3b72ef + "Quick start": 43082ab0 + "Schema": ddaa8685 + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image-quality.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image-quality` 的 API 参考,由 Comfy Router 提供,来自 xAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `xai/grok-imagine-image-quality` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image-quality` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image-quality", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image-quality", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image-quality \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## Schema {#schema} + +### 输入 + + + 生成图像的宽高比。默认为 auto,即为提示词自动选择最佳比例。 + + 可选值:`1:1`、`3:4`、`4:3`、`9:16`、`16:9`、`2:3`、`3:2`、`9:19.5`、`19.5:9`、`9:20`、`20:9`、`1:2`、`2:1`、`auto` + + + + 要使用的模型。支持:grok-imagine-image(默认)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。弃用的 -beta id 会被映射到其正式版(GA)模型。 + + + + 要生成的图像数量 + + 范围:`1` 到 `10` + + + + 图像生成的提示词 + + + + 输出图像的质量。对于 grok-imagine-image-2.0,此参数用于选择价格档位(low/medium;默认 medium);其他模型目前会忽略该项。 + + 可选值:`low`、`medium`、`high` + + + + 生成图像的分辨率。默认为 1k。 + + 可选值:`1k`、`2k` + + + + 返回图像所用的响应格式。可以是 url 或 b64_json。Comfy Router(`POST /v2/models/xai/{model}`)在向外发出的请求中会将其强制转换为 `url`,因为它无论哪种方式都以重新托管的 URL 返回图像结果;此 `/proxy/` 路由则按原样遵循该参数。 + + 可选值:`url`、`b64_json` + + + + 图像的尺寸(不支持) + + + + 图像风格(不支持) + + + + 代表你的终端用户的唯一标识符,可帮助 xAI 监控和检测滥用行为 + + +根据 Router 在 `GET /v2/models/xai/grok-imagine-image-quality/openapi.json` 提供的 schema 生成,这是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 如果请求被输入审核拦截,则包含拦截原因 + + + + 已生成图像对象的列表 + + + + 已生成图像的 base64 编码字符串表示,采用 jpeg 编码(如果 response_format 为 b64_json) + + + + 已生成图像的 MIME 类型(例如 image/png、image/jpeg、image/webp)。 + + + + 已生成图像的 url(如果 response_format 为 url) + + + + 图像生成请求的使用信息 + + + + 此请求的精确成本,以 USD ticks 为单位(10,000,000,000 ticks = 1 USD) + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-image/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-image/code.mdx new file mode 100644 index 000000000..e9ec964ac --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-image/code.mdx @@ -0,0 +1,184 @@ +--- +title: "使用 Grok Imagine Image 与 Comfy Router" +description: "通过 Comfy Router 调用 xai/grok-imagine-image:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Image" +translationSourceHash: dc887d63 +translationFrom: development/comfy-router/models/xai/grok-imagine-image/code.mdx +translationBlockHashes: + "_intro": f267d74f + "Quick start": 564ff767 + "Schema": b3c91ddc + "Examples": 3222291b +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-image.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-image` 的 API 参考文档,由 Comfy Router 提供,来源于 xAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `xai/grok-imagine-image` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-image` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-image", + { + "n": 1, + "prompt": "A single red maple leaf on a plain white background.", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-image", { + n: 1, + prompt: "A single red maple leaf on a plain white background.", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-image \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"n\": 1, \"prompt\": \"A single red maple leaf on a plain white background.\"}" +``` + + +## 架构 + +### 输入 + + + 已生成图像的长宽比。默认为 auto,即自动为提示词选择最佳比例。 + + 可能的值:`1:1`, `3:4`, `4:3`, `9:16`, `16:9`, `2:3`, `3:2`, `9:19.5`, `19.5:9`, `9:20`, `20:9`, `1:2`, `2:1`, `auto` + + + + 要使用的模型。支持:grok-imagine-image(默认)、grok-imagine-image-pro、grok-imagine-image-quality、grok-imagine-image-2.0。已弃用的 -beta ID 会作为别名指向其 GA 模型。 + + + + 要生成的图像数量 + + 范围:`1` 至 `10` + + + + 用于图像生成的提示词 + + + + 输出图像的质量。对于 grok-imagine-image-2.0,此参数用于选择价格档位(low/medium;默认为 medium);其他模型目前会忽略该参数。 + + 可能的值:`low`, `medium`, `high` + + + + 已生成图像的分辨率。默认为 1k。 + + 可能的值:`1k`, `2k` + + + + 返回图像所用的响应格式。可以是 url 或 b64_json。Comfy Router(`POST /v2/models/xai/{model}`)会在对外请求中将其强制转换为 `url`,因为它无论如何都以重新托管的 URL 形式提供图像结果;而这条 `/proxy/` 路由则按写入的形式处理该参数。 + + 可能的值:`url`, `b64_json` + + + + 图像尺寸(不支持) + + + + 图像风格(不支持) + + + + 代表你的最终用户的唯一标识符,可帮助 xAI 监控和检测滥用行为 + + +本文档由 Router 在 `GET /v2/models/xai/grok-imagine-image/openapi.json` 提供的 schema 生成,这与请求到达提供商之前 Router 用于校验调用的文档完全相同。 + +### 输出 + + + 如果请求被输入审核拦截,则包含拦截原因 + + + + 已生成图像对象的列表 + + + + 已生成图像的 base64 编码字符串表示,采用 jpeg 编码(当 response_format 为 b64_json 时) + + + + 已生成图像的 MIME 类型(例如 image/png、image/jpeg、image/webp)。 + + + + 指向已生成图像的 url(当 response_format 为 url 时) + + + + 图像生成请求的使用量信息 + + + + 本次请求的精确费用,以 USD ticks 为单位(10,000,000,000 ticks = 1 USD) + + +## 示例 + +### 输入 + +```json +{ + "n": 1, + "prompt": "A single red maple leaf on a plain white background." +} +``` + +### 输出 + +```json +{ + "data": [ + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated.jpg" + }, + { + "mime_type": "image/jpeg", + "url": "https://example.invalid/xai/grok-imagine-image/generated-2.jpg" + } + ], + "usage": { + "cost_in_usd_ticks": 200000000 + } +} +``` + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx new file mode 100644 index 000000000..d65c922d2 --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx @@ -0,0 +1,200 @@ +--- +title: "结合 Comfy Router 使用 Grok Imagine Video 1.5 Preview" +description: "通过 Comfy Router 调用 xai/grok-imagine-video-1.5-preview:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Video 1.5 Preview" +translationSourceHash: 04ff660a +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5-preview/code.mdx +translationBlockHashes: + "_intro": 6ab2a8c5 + "Quick start": 66aa1c97 + "Schema": d4972c90 + "Examples": 53c80746 +--- +{/* GENERATED FILE. Generated from router-schemas/xai/grok-imagine-video-1.5-preview.json by `pnpm code-pages:gen`. */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video-1.5-preview` 的 API 参考文档,该模型由 Comfy Router 提供,源自 xAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原生 HTTP 发起同一调用。 + +**模型 ID:** `xai/grok-imagine-video-1.5-preview` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5-preview", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5-preview", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5-preview \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## Schema + +### Input + + + 已生成视频的宽高比 + + 可能的值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + 视频时长,单位为秒。范围 [1, 15]。默认 8。 + + 范围:`1` 到 `15` + + + + xAI 端点使用的输入图像对象 + + + + 图像输入的类型 + + 可能的值:`image_url` + + + + 输入图像的 URL(公开 URL 或 base64 编码的 data URI) + + + + 要使用的模型。支持:grok-imagine-video(默认)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。已弃用的 grok-imagine-video-beta ID 是 grok-imagine-video 的别名。 + + + + 已生成视频的可选输出目标 + + + + 用于视频生成的提示词。最多 4,096 个字符。 + + + + 用于引导视频生成的一张或多张参考图像(参考生视频模式)。与 image 互斥。Router 仅转发 application/json,该对象和 XAIImageObject 都不接受 file_id,因此此路由不支持基于文件的图像输入。 + + + + 参考图像的 URL。支持 HTTPS URL(公开)或 base64 编码的 data URL(例如 data:image/jpeg;base64,...)。 + + + + 输出视频的分辨率 + + + + 输出视频的尺寸 + + + + 代表最终用户的唯一标识符 + + +本页内容根据 Router 在 `GET /v2/models/xai/grok-imagine-video-1.5-preview/openapi.json` 提供的 schema 生成,在请求到达提供商之前,Router 校验调用时依据的也是这份同一文档。 + +### Output + + + 如果请求被输入审核拦截,则包含拦截原因 + + + + 用于生成视频的模型 + + + + 延迟请求的状态:"pending" 或 "done" + + 可能的值:`pending`、`done` + + + + 视频生成请求的用量信息 + + + + 此请求的费用,以 USD tick 表示。1 美分等于 100,000,000 ticks,因此 1 美元等于 10,000,000,000 ticks。 + + + + 来自 xAI 的已生成视频 + + + + 已生成视频的时长,单位为秒 + + + + 模型生成的视频是否遵守审核规则 + + + + 已生成视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时。签发时按 24 小时签名,并从 23 小时的备忘中重放,因此稍后的轮询可能返回剩余有效期仅 1 小时的链接。当无法执行重新托管时,该字段会保留 xAI 自己的短期 URL。可为空(NULLABLE):`url` 为空的成功响应并不代表生成已完成。无论哪种情况,链接都会过期,因此请下载视频,而不要保存该 URL。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 输出 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx new file mode 100644 index 000000000..ddc913690 --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx @@ -0,0 +1,200 @@ +--- +title: "将 Grok Imagine Video 1.5 与 Comfy Router 配合使用" +description: "通过 Comfy Router 调用 xai/grok-imagine-video-1.5:端点、请求结构以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Video 1.5" +translationSourceHash: 628498a9 +translationFrom: development/comfy-router/models/xai/grok-imagine-video-1-5/code.mdx +translationBlockHashes: + "_intro": 9cd89e4e + "Quick start": 041f88be + "Schema": 7567f6f2 + "Examples": 53c80746 +--- +{/* 已生成的文件。由 `pnpm code-pages:gen` 从 router-schemas/xai/grok-imagine-video-1.5.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video-1.5` 的 API 参考文档,由 Comfy Router 提供,来源为 xAI。 + +## 快速开始 + +在 [你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys) 中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则通过原始 HTTP 发起同样的调用。 + +**模型 ID:** `xai/grok-imagine-video-1.5` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video-1.5", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video-1.5", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video-1.5 \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## Schema + +### 输入 + + + 生成视频的宽高比 + + 可能的值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + 视频时长(秒)。范围 [1, 15]。默认 8。 + + 范围:`1` 到 `15` + + + + xAI 端点的输入图像对象 + + + + 图像输入的类型 + + 可能的值:`image_url` + + + + 输入图像的 URL(公开 URL 或 base64 编码的数据 URI) + + + + 要使用的模型。支持:grok-imagine-video(默认)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。已弃用的 grok-imagine-video-beta ID 会别名为 grok-imagine-video。 + + + + 生成视频的可选输出目标 + + + + 用于视频生成的提示词。最多 4,096 个字符。 + + + + 一张或多张用于引导视频生成的参考图像(参考生视频模式)。与 image 互斥。Router 仅转发 application/json,并且此对象与 XAIImageObject 均不接受 file_id,因此该路由不支持基于文件的图像输入。 + + + + 参考图像的 URL。支持 HTTPS URL(公开)或 base64 编码的数据 URL(例如 data:image/jpeg;base64,...)。 + + + + 输出视频的分辨率 + + + + 输出视频的尺寸 + + + + 代表最终用户的唯一标识符 + + +由 Router 在 `GET /v2/models/xai/grok-imagine-video-1.5/openapi.json` 提供的 schema 生成,也是它在请求到达提供商之前用于校验调用的同一份文档。 + +### 输出 + + + 如果请求被输入审核拦截,则包含拦截原因 + + + + 用于生成视频的模型 + + + + 延迟请求的状态:"pending" 或 "done" + + 可能的值:`pending`、`done` + + + + 视频生成请求的使用信息 + + + + 此请求的费用,以 USD ticks 表示。1 美分等于 100,000,000 ticks,因此 1 美元等于 10,000,000,000 ticks。 + + + + 来自 xAI 的已生成视频 + + + + 已生成视频的时长(秒) + + + + 模型生成的视频是否符合审核规则 + + + + 已生成视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的备忘中重放,因此后续轮询可能返回仅剩一小时有效期的 URL。当无法执行重新托管时,该字段会保留 xAI 自身的短时效 URL。可空:`url` 为空的成功并不代表生成已完成。无论哪种情况,链接都会过期,因此请下载视频,而不要保存该 URL。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 输出 + +```json +{ + "model": "grok-imagine-video-1.5", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + + diff --git a/zh/development/comfy-router/models/xai/grok-imagine-video/code.mdx b/zh/development/comfy-router/models/xai/grok-imagine-video/code.mdx new file mode 100644 index 000000000..59cd0c60d --- /dev/null +++ b/zh/development/comfy-router/models/xai/grok-imagine-video/code.mdx @@ -0,0 +1,200 @@ +--- +title: "搭配 Comfy Router 使用 Grok Imagine Video" +description: "通过 Comfy Router 调用 xai/grok-imagine-video:端点、请求形状以及 Router 返回的响应。" +sidebarTitle: "Grok Imagine Video" +translationSourceHash: 81ba818e +translationFrom: development/comfy-router/models/xai/grok-imagine-video/code.mdx +translationBlockHashes: + "_intro": aaeed1e5 + "Quick start": 170d6503 + "Schema": 8371176e + "Examples": 1085f4b8 +--- +{/* GENERATED FILE. 由 `pnpm code-pages:gen` 从 router-schemas/xai/grok-imagine-video.json 生成。 */} + +import RouterCodeFooter from "/snippets/zh/comfy-router/model-code-footer.mdx"; + +`xai/grok-imagine-video` 的 API 参考,由 Comfy Router 提供,来自 xAI。 + +## 快速开始 + +在[你的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥,并将其导出为 `COMFY_API_KEY`。Python 和 TypeScript 代码片段使用 Comfy SDK(`pip install comfy-sdk`、`npm install @comfyorg/sdk`);cURL 代码片段则是通过原始 HTTP 发起的同一调用。 + +**模型 ID:** `xai/grok-imagine-video` + +**端点:** `POST https://api.comfy.org/v2/models/xai/grok-imagine-video` + + +```python Python +from comfy_sdk import Comfy + +# Reads COMFY_API_KEY from the environment. +# The SDK automatically creates an idempotency key and reuses it for automatic retries. +with Comfy() as client: + result = client.models.run( + "xai/grok-imagine-video", + { + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion", + }, + ) + +print(result) +``` + +```typescript TypeScript +import { comfy } from "@comfyorg/sdk"; + +// Reads COMFY_API_KEY from the environment. +// The SDK automatically creates an idempotency key and reuses it for automatic retries. +const { data } = await comfy.models.run("xai/grok-imagine-video", { + duration: 4, + prompt: "a single red maple leaf falling onto still water, slow motion", +}); + +console.log(data); +``` + +```bash cURL +curl https://api.comfy.org/v2/models/xai/grok-imagine-video \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $(uuidgen)" \ + -H "Content-Type: application/json" \ + -d "{\"duration\": 4, \"prompt\": \"a single red maple leaf falling onto still water, slow motion\"}" +``` + + +## Schema + +### Input + + + 生成视频的宽高比 + + 可选值:`1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3` + + + + 视频时长,单位为秒。范围 [1, 15]。默认 8。 + + 范围:`1` 到 `15` + + + + 用于 xAI 端点的输入图像对象 + + + + 图像输入的类型 + + 可选值:`image_url` + + + + 输入图像的 URL(公开 URL 或 base64 编码的 data URI) + + + + 要使用的模型。支持:grok-imagine-video(默认)、grok-imagine-video-1.5-preview、grok-imagine-video-1.5。已弃用的 grok-imagine-video-beta ID 会别名到 grok-imagine-video。 + + + + 生成视频的可选输出目标 + + + + 用于视频生成的提示词。最多 4,096 个字符。 + + + + 一张或多张参考图像,用于引导视频生成(参考生视频模式)。与 image 互斥。Router 仅转发 application/json,且此对象与 XAIImageObject 均不接受 file_id,因此本路由不支持基于文件的图像输入。 + + + + 参考图像的 URL。支持 HTTPS URL(公开)或 base64 编码的 data URL(例如:data:image/jpeg;base64,...)。 + + + + 输出视频的分辨率 + + + + 输出视频的尺寸 + + + + 代表最终用户的唯一标识符 + + +本文档根据 Router 在 `GET /v2/models/xai/grok-imagine-video/openapi.json` 提供的 schema 生成,该 schema 与 Router 在请求到达提供商之前用于校验调用的是同一份文档。 + +### Output + + + 如果请求被输入内容审核拦截,则包含拦截原因 + + + + 用于生成视频的模型 + + + + 延迟请求的状态:"pending" 或 "done" + + 可选值:`pending`、`done` + + + + 视频生成请求的用量信息 + + + + 本次请求的成本,以 USD ticks 表示。1 美分等于 100,000,000 ticks,因此 1 美元等于 10,000,000,000 ticks。 + + + + 来自 xAI 的已生成视频 + + + + 已生成视频的时长,单位为秒 + + + + 模型生成的视频是否符合审核规则 + + + + 已生成视频的下载 URL。Router 会将视频重新托管到 Comfy 存储并重写此字段,因此它通常是 Comfy 签名的 URL,有效期最长 24 小时:签发时按 24 小时签名,并从 23 小时的缓存中重放,因此稍后的轮询可能返回有效期仅剩一小时的 URL。当无法执行重新托管时,该字段会保留 xAI 自己的短期 URL。可为空:`url` 为空的成功响应并不代表生成已完成。无论哪种情况,链接都会过期,因此请下载视频,而不要存储 URL。 + + +## 示例 + +### 输入 + +```json +{ + "duration": 4, + "prompt": "a single red maple leaf falling onto still water, slow motion" +} +``` + +### 输出 + +```json +{ + "model": "grok-imagine-video", + "status": "done", + "usage": { + "cost_in_usd_ticks": 3500000000 + }, + "video": { + "duration": 4, + "respect_moderation": true, + "url": "https://example.invalid/xai/grok-imagine-video/generated.mp4" + } +} +``` + + + diff --git a/zh/development/comfy-router/quickstart.mdx b/zh/development/comfy-router/quickstart.mdx index 5620773da..f155a7c0b 100644 --- a/zh/development/comfy-router/quickstart.mdx +++ b/zh/development/comfy-router/quickstart.mdx @@ -1,328 +1,117 @@ --- title: "Comfy Router 快速入门" -description: "从零开始,大约五分钟内,使用 Python 和 TypeScript,在 Comfy Router 上生成一张图像。" -translationSourceHash: 50fc5524 +sidebarTitle: "快速入门" +description: "从零开始,大约五分钟内,使用 Python 和 TypeScript,通过 Comfy Router 生成一张图像。" +translationSourceHash: 77d3b143 translationFrom: development/comfy-router/quickstart.mdx -translationBlockHashes: - "_intro": 46050c92 - "Why this page uses `bfl/flux-2-pro`": 0eaf0bb3 - "Get a key": 843d281f - "cURL": bc3e1e4c - "Python": 059e95b8 - "TypeScript": 1053430f - "Reading the `422`": 602cd505 - "Find a model": 9b7855c1 - "Where the model's fields come from": 7861bd52 - "Next": 6aa641e1 --- - -**Comfy Router 尚未正式发布。** 以下路由:`POST /v1/models/{provider}/{model}` 及其目录与 schema 兄弟路由,目前均尚未处理请求:经过身份验证的调用目前会返回 `404`。本页面记录的是这些路由未来将提供的契约,并提前于该发布公开,以便集成可以据此进行编写。这不是对当前可执行行为的描述。 - -Comfy Router 通过单一主机、单一凭据和单一路由形状来运行合作伙伴模型。本页面是通往已生成图像的最短完整路径:安装客户端、设置密钥、发送一个请求、读取结果,并在真正遇到第一次失败之前,先看清失败的样子。 +
-Base URL 为 `https://api.comfy.org`。路由为 `POST /v1/models/{provider}/{model}`,请求体是模型自身的原生 JSON 输入,`200` 响应携带模型自身的原生 JSON 输出。Router 不会对两者进行包装,因此,只需更改主机,您已针对合作伙伴 API 写好的调用即可变成 Router 调用。 +Comfy Router 让您用一个 Comfy API 密钥,通过 `https://api.comfy.org` 调用合作伙伴模型。将模型的输入发送到 `POST /v2/models/{provider}/{model}`,然后等待已完成的结果。本示例使用 `bfl/flux-2-pro` 生成一张图像。 -## 为什么本页使用 `bfl/flux-2-pro` + + + 在[您的 Comfy 工作区](https://platform.comfy.org/profile/api-keys)中创建一个密钥。在兼容 Bash 的终端中,设置: -`bfl/flux-2-pro` 在 p50 下大约 3.1 秒返回,这是 Router 上实测最快的路径,也是让五分钟内获得首个结果成为现实的原因。较慢的模型会把这段预算花在等待上,而不是阅读上。 + ```bash + export COMFY_API_KEY="comfyui-..." + ``` -这只是方便之选,并非必需。Router 上的所有其他模型都以完全相同的方式调用:相同的路由、相同的凭据请求头、相同的错误分类、相同的 `X-Comfy-Request-Id`。唯一会变的只有模型 ID、请求体中的字段,以及读回结果的形状。例如,Gemini 在 p95 下以 72.8 秒轻松完成。Router 会在整个生成期间保持连接,而不是返回一个任务句柄供轮询。没有边缘上限会将长调用截断,但 Router 确实会限制调用本身:其服务器截止时间(默认 10 分钟)是它保持连接的最长时间,超过之后会返回 `504` / `deadline_exceeded`,并且不收费。替换 ID,然后从该模型自己的 schema(如下)中读取其字段。 + 请将 API 密钥保存在您的服务器或本地环境中。这些示例面向终端或服务器,而不是浏览器 JavaScript。 + -## 获取密钥 + + 为这张图像生成一次该值。如果重试同一个请求,请复用它。 -Router 使用 Comfy API 密钥进行身份验证。你可以在 [platform.comfy.org/profile/api-keys](https://platform.comfy.org/profile/api-keys) 创建一个,然后将其放入环境中。下面的两个示例都会读取 `COMFY_API_KEY`,并且都不接受以字面量形式传入密钥,因此复制粘贴的代码片段不会将你的凭据带入提交记录。 + ```bash + export COMFY_REQUEST_KEY="$(uuidgen)" + ``` -```bash -export COMFY_API_KEY="comfyui-..." -``` + 如果 `uuidgen` 不可用,请使用其他 UUID 生成器。开始生成新图像时,请使用新的密钥。 + - -`comfyui-` 密钥既可以放在 **`X-API-Key`** 请求头中,也可以放在 **`Authorization: Bearer`** 中:告诉服务“这是一个 API 密钥”的是 `comfyui-` 前缀而不是请求头,因此两种形式的查找方式完全相同。下面的示例使用 `X-API-Key`;`Authorization: Bearer $COMFY_API_KEY` 与之等价。如果同时发送了两个请求头,则以 `X-API-Key` 中的密钥为准。`Authorization: Bearer` 中**不带** `comfyui-` 前缀的值会被视为 Cloud/Firebase **JWT**(这也是已生成的 [API 参考](/zh/development/comfy-router/reference) 中“bearer token”的含义)。 - + + 选择您的语言并运行示例。图像生成可能需要几分钟。 -密钥按工作区分属,并携带该工作区的模型权益和信用余额。没有可用凭据的请求会返回 `401`,并带有 `X-Comfy-Error-Type: unauthorized`;工作区无法运行该模型的请求会返回 `403` / `forbidden`。 + -## cURL + ```bash cURL + curl --max-time 660 \ + https://api.comfy.org/v2/models/bfl/flux-2-pro \ + -H "X-API-Key: $COMFY_API_KEY" \ + -H "Idempotency-Key: $COMFY_REQUEST_KEY" \ + -H "Content-Type: application/json" \ + -d '{"prompt": "a red teapot on a windowsill, morning light"}' + ``` -最短的调用方式,适用于脚本、冒烟测试以及直接复制粘贴到终端: + ```python Python + # Python 3.10+ + # Install: python -m pip install "comfy-sdk>=0.1.9" + # Save as quickstart.py, then run: python quickstart.py -```bash -curl https://api.comfy.org/v1/models/bfl/flux-2-pro \ - -H "X-API-Key: $COMFY_API_KEY" \ - -H "Idempotency-Key: $(uuidgen)" \ - -H "Content-Type: application/json" \ - -d '{"prompt": "a red teapot on a windowsill, morning light"}' -``` + import os -响应即为模型的原生输出,与下文示例读取到的内容完全一致。请求失败时,响应体携带错误信息,`X-Comfy-Error-Type` 响应头会标明错误类型;请保留任何后续需要查询的响应中的 `X-Comfy-Request-Id` 响应头。macOS 和 Linux 均自带 `uuidgen`;在 Windows 上,可使用 `New-Guid` 或任何 UUID 来源生成 Idempotency-Key。 + from comfy_sdk import Comfy -## Python + # Comfy reads COMFY_API_KEY from the environment. + with Comfy() as client: + result = client.models.run( + "bfl/flux-2-pro", + {"prompt": "a red teapot on a windowsill, morning light"}, + idempotency_key=os.environ["COMFY_REQUEST_KEY"], + timeout=660.0, + ) -需要 Python 3.9+ 和 `httpx`: + print("image:", result["result"]["sample"]) + ``` -```bash -pip install httpx -``` + ```typescript TypeScript + // Node.js 22+ + // Install: npm install @comfyorg/sdk@^0.1.9 --save-dev tsx + // Save as quickstart.mts, then run: npx tsx quickstart.mts -保存为 `quickstart.py`,用 `python quickstart.py` 运行: + import { comfy } from "@comfyorg/sdk"; -```python -import os -import uuid + // Comfy reads COMFY_API_KEY from the environment. + type FluxResult = { result: { sample: string } }; + const idempotencyKey = process.env.COMFY_REQUEST_KEY; + if (!idempotencyKey) throw new Error("Set COMFY_REQUEST_KEY first."); -import httpx + const { data } = await comfy.models.run( + "bfl/flux-2-pro", + { prompt: "a red teapot on a windowsill, morning light" }, + { idempotencyKey, timeoutMs: 660_000 }, + ); -BASE_URL = os.environ.get("COMFY_ROUTER_BASE_URL", "https://api.comfy.org") -MODEL = "bfl/flux-2-pro" + console.log("image:", data.result.sample); + ``` -# Give the client headroom ABOVE Router's own server deadline (10 minutes by -# default) so a call that reaches the server bound comes back as a typed 504 -# with a request id rather than as an opaque client abort. The deadline bounds -# how long Router holds the connection, not whether the call is billed: if the -# provider completed the generation, it is billed either way. -READ_TIMEOUT_SECONDS = 660.0 + + 两个 SDK 都会从环境中读取 `COMFY_API_KEY`。 + -class RouterError(Exception): - """A Comfy Router failure, typed by its X-Comfy-Error-Type bucket.""" + + 对于该模型,图片网址位于响应体中的 `result.sample`。简略的响应如下所示;下面的网址仅作示意: - def __init__(self, response: httpx.Response) -> None: - self.error_type = response.headers.get("X-Comfy-Error-Type", "internal_error") - self.request_id = response.headers.get("X-Comfy-Request-Id") - self.status_code = response.status_code - # Parse defensively: an error can arrive as an HTML 502 from a load - # balancer, a plain-text 429, an empty body or a truncated JSON one. The - # status, the bucket and the request id above are the parts worth - # keeping, so a body that will not parse must not replace this exception - # with a JSONDecodeError and lose them. - body = None - if response.headers.get("content-type", "").startswith("application/json"): - try: - body = response.json() - except ValueError: - body = None - detail = body.get("detail") if isinstance(body, dict) else None - # A 422 carries a detail[] array - one entry per rejected field, each - # keeping its own `loc`, `msg` and `type`. Every other bucket carries a - # plain `detail` string. - self.errors = detail if isinstance(detail, list) else [] - self.detail = detail if isinstance(detail, str) else f"HTTP {response.status_code}" - super().__init__(self.detail) + ```json + { + "status": "Ready", + "result": { "sample": "https://example.com/generated-image.jpeg" } + } + ``` + 打开返回的网址,或将其下载: -def run(model: str, arguments: dict, idempotency_key: str) -> dict: - # Idempotency-Key makes a retry safe on a PAID call: Router replays the - # original response for 24h instead of dispatching (and billing) the - # provider a second time. Reuse the SAME key when retrying one logical - # call; generate a new one for a new call. - response = httpx.post( - f"{BASE_URL}/v1/models/{model}", - headers={ - "X-API-Key": os.environ["COMFY_API_KEY"], - "Idempotency-Key": idempotency_key, - }, - json=arguments, - timeout=httpx.Timeout(READ_TIMEOUT_SECONDS, connect=10.0), - ) - if response.is_error: - raise RouterError(response) - return response.json() + ```bash + curl --fail --location "PASTE_IMAGE_URL_HERE" --output teapot.jpg + ``` + 请及时下载。Router 可以将 BFL 资产转存到 Comfy 存储上,但网址会过期,重放并不会为其续期。转存失败可能留下一个有效期更短的提供商网址。参见[结果资产](/zh/development/comfy-router/reference#结果资产)。 + + -result = run( - MODEL, - {"prompt": "a red teapot on a windowsill, morning light"}, - idempotency_key=str(uuid.uuid4()), -) -# Router forwards each provider's native output unchanged, so this path is -# BFL's, not a Router envelope. Reading a different model means reading its own -# output shape. -print("image:", result["result"]["sample"]) +## 选择模型 -# The first failure most callers hit: a field the model's input schema requires -# is missing, so Router rejects the request BEFORE any provider call - which is -# why a 422 is never billed. -try: - run(MODEL, {"width": 1024}, idempotency_key=str(uuid.uuid4())) -except RouterError as exc: - print(f"{exc.error_type} (HTTP {exc.status_code}), request id {exc.request_id}") - for entry in exc.errors: - print(" ", ".".join(str(p) for p in entry["loc"]), "->", entry["msg"]) -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## TypeScript - -需要 Node 18+(内置 `fetch`、`AbortSignal.timeout` 和 `crypto.randomUUID`)以及直接运行 TypeScript 所需的 `tsx`: - -```bash -npm install --save-dev tsx -``` - -保存为 `quickstart.mts`。`.mts` 扩展名很重要,因为该文件使用了顶层 `await`,这需要 ES 模块。用 `npx tsx quickstart.mts` 运行: - -```typescript -const API_KEY = process.env.COMFY_API_KEY; -if (!API_KEY) throw new Error("Set COMFY_API_KEY before running this sample."); - -const BASE_URL = process.env.COMFY_ROUTER_BASE_URL ?? "https://api.comfy.org"; -const MODEL = "bfl/flux-2-pro"; - -// Headroom ABOVE Router's own server deadline (10 minutes by default), so a -// call that reaches the server bound returns a typed 504 with a request id -// rather than aborting locally at the same moment. The deadline bounds how -// long Router holds the connection, not whether the call is billed: if the -// provider completed the generation, it is billed either way. -const CLIENT_TIMEOUT_MS = 660_000; - -interface ValidationEntry { - loc: (string | number)[]; - msg: string; - type: string; -} - -/** A Comfy Router failure, typed by its `X-Comfy-Error-Type` bucket. */ -class RouterError extends Error { - readonly errorType: string; - readonly requestId: string | null; - readonly status: number; - /** A 422 carries a `detail[]` array — one entry per rejected field, each - * keeping its own `loc`, `msg` and `type`. Every other bucket carries a - * plain `detail` string. */ - readonly errors: ValidationEntry[]; - - constructor(response: Response, body: unknown) { - const detail = - typeof body === "object" && body !== null - ? (body as { detail?: unknown }).detail - : undefined; - super(typeof detail === "string" ? detail : `HTTP ${String(response.status)}`); - this.name = "RouterError"; - this.errorType = response.headers.get("X-Comfy-Error-Type") ?? "internal_error"; - this.requestId = response.headers.get("X-Comfy-Request-Id"); - this.status = response.status; - this.errors = Array.isArray(detail) ? (detail as ValidationEntry[]) : []; - } -} - -/** Read a body without letting a non-JSON error page mask the real failure. */ -async function parseBody(response: Response): Promise { - const text = await response.text(); - try { - return JSON.parse(text) as unknown; - } catch { - return undefined; - } -} - -async function run( - model: string, - args: Record, - idempotencyKey: string, -): Promise { - // Idempotency-Key makes a retry safe on a PAID call: Router replays the - // original response for 24h instead of dispatching (and billing) the provider - // a second time. Reuse the SAME key when retrying one logical call. - const response = await fetch(`${BASE_URL}/v1/models/${model}`, { - method: "POST", - headers: { - "X-API-Key": API_KEY, - "Idempotency-Key": idempotencyKey, - "Content-Type": "application/json", - }, - body: JSON.stringify(args), - signal: AbortSignal.timeout(CLIENT_TIMEOUT_MS), - }); - // Read the body without letting it decide the outcome: an HTML 502, a - // plain-text 429 or an empty body still yields the status, the bucket and - // the request id, because `parseBody` returns `undefined` on a parse failure. - const body = await parseBody(response); - if (!response.ok) throw new RouterError(response, body); - return body as T; -} - -const result = await run<{ result: { sample: string } }>( - MODEL, - { prompt: "a red teapot on a windowsill, morning light" }, - crypto.randomUUID(), -); -// Router forwards each provider's native output unchanged, so this path is -// BFL's, not a Router envelope. Reading a different model means reading its own -// output shape. -console.log("image:", result.result.sample); - -// The first failure most callers hit: a field the model's input schema requires -// is missing, so Router rejects the request BEFORE any provider call - which is -// why a 422 is never billed. -try { - await run(MODEL, { width: 1024 }, crypto.randomUUID()); -} catch (exc) { - if (!(exc instanceof RouterError)) throw exc; - console.log(`${exc.errorType} (HTTP ${String(exc.status)}), request id ${String(exc.requestId)}`); - for (const entry of exc.errors) console.log(" ", entry.loc.join("."), "->", entry.msg); -} -``` - -```text -image: https://.../out.jpeg -invalid_input (HTTP 422), request id 6f1c... - body.prompt -> Field required -``` - -## 解读 `422` - -`422` 是最值得在第一次真正调用之前理解的一个错误,因为它是你引发的。它表示 Router 已根据模型自身的输入模式检查了你的请求体并拒绝了它:必填字段缺失、值超出边界、图像太小。该检查在任何提供商调用之前执行,因此 `422` 不会产生任何成本:没有合作伙伴支出,之后也无需解答计费疑问。它不同于 `400`,后者是请求级失败(格式错误的游标、无法读取的信封),而不是字段级失败。 - -其响应体是 FastAPI 的 `detail[]` 形状:一个数组,每个违规字段对应一个条目,每个条目保留自己的 `loc`(字段路径)、`msg`、`type`(具体的提供商级原因:`missing`、`value_error`、`image_too_small`),以及原因带有边界时的 `ctx`。正是这种字段级粒度,使得上面的示例将数组作为数据保留,而不是将其扁平化到异常消息中。 - - -输入模式尚未创建的模型会解析为文档中所述的宽松回退方案,该方案接受任何 JSON 对象,因此它会转发请求体,而不会返回 `422`。上面的示例展示了模式存在后你需要处理的形状;请将 `422` 块视为错误路径,而不是对特定请求体的保证响应。 - - -该响应体本身不携带 `error_type` 字段,因此在 `422` 上,`X-Comfy-Error-Type` 响应头是*唯一*机器可读的类别。两个示例都正因如此才首先从响应头中读取该类别,这也使得一个错误类就足以涵盖 Router 可能返回的所有失败。 - -`X-Comfy-Request-Id` 出现在每个响应上,成功、`4xx` 和 `5xx` 均如此,并且是在支持请求中引用的 ID。两个示例都将其附加到异常中,而不是让你在启用响应头日志的情况下重新运行来找到它。 - -## 查找模型 - -`bfl/flux-2-pro` 只是其中一个 ID;其余的都在目录里。`GET /v1/models` 会逐页列出 Router 能运行的每一个模型,每个条目正好就是调用它所需的全部信息:放进路径的 `id`、分别给出的 `provider` 和 `model` 段,以及一个可以在花费任何费用之前据以分支判断的 `billing` 块。 - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - "https://api.comfy.org/v1/models?limit=50" -``` - -```json -{ - "data": [ - { "id": "bfl/flux-2-pro", "provider": "bfl", "model": "flux-2-pro", "billing": { "charges_on_policy_rejection": "no" } } - ], - "has_more": true, - "next_cursor": "q7Fm2xTn9pLd4RsV", - "limit": 50 -} -``` - -用游标而不是偏移量来遍历:把 `next_cursor` 作为 `?cursor=` 原样传回,并在 `has_more` 为 `false` 时停止,而不是在某一页返回得较短时停止。游标是不透明的,只用于原样往返;Router 不接受的游标会返回 `400` / `invalid_input`,绝不会悄悄从第一页重新开始。游标是目录排序顺序中的一个位置,因此在新增或移除模型的部署之后依然有效;添加在你已经走过的位置之前的模型,只是在这一次遍历中不会被访问到。列表返回 `503` / `service_unavailable` 表示 Router 暂时还无法应答(某个 pod 仍在加载其发布状态);请重试,不要把它当成空目录。响应中的 `limit` 是实际提供的页面大小:超过上限的请求会被截断到上限而不是拒绝,因此请按返回的数字进行分页。已部署但尚未发布的模型只是不会出现在任何一页中。 - -## 模型字段的来源 - -`prompt` 是 `bfl/flux-2-pro` 唯一必需的字段;`width`、`height`、`seed` 和 `output_format` 是您接下来会需要用到的字段。与其复述一份可能过时的字段列表,不如实时读取模型的 schema: - -```bash -curl -H "X-API-Key: $COMFY_API_KEY" \ - https://api.comfy.org/v1/models/bfl/flux-2-pro/openapi.json -``` - -这份文档与服务器校验您的请求时所依据的文档是同一份,以独立的 OpenAPI 文档形式提供,因此所发布的内容与所执行的内容不可能不一致。从上面的目录中取任意 `id`,在其调用路径后追加 `/openapi.json`,然后根据返回的内容进行生成。 - -## 下一步 - -- [Comfy Router API 参考](/zh/development/comfy-router/reference):每个端点、每个参数,以及全部十五类错误。 -- [Comfy Router 限制](/zh/development/comfy-router/limitations):Router 目前尚未支持的功能,以及可以使用的替代方案。 +[浏览 Comfy Router 提供的模型](/zh/development/comfy-router/models),查看它们的输入,然后替换本示例中的模型 ID。 \ No newline at end of file diff --git a/zh/development/comfy-router/reference.mdx b/zh/development/comfy-router/reference.mdx index b43203211..5ef81db76 100644 --- a/zh/development/comfy-router/reference.mdx +++ b/zh/development/comfy-router/reference.mdx @@ -1,17 +1,19 @@ --- title: "Comfy Router API 参考" description: "每个 Comfy Router 端点、参数、响应体和错误分类,均由 Comfy API 契约生成。" -translationSourceHash: 5b914bce +translationSourceHash: 70ca7dac translationFrom: development/comfy-router/reference.mdx translationBlockHashes: - "_intro": 0114a881 - "Endpoints": 93fdf96a - "Error buckets": bfbc4524 - "Response headers": 8f8b3475 - "Per-model input schemas": ae73e63b - "Schemas": 8ce93415 + "_intro": 3f6e5d23 + "Endpoints": f86ab166 + "Error buckets": 3c6deea9 + "Response headers": 10172430 + "Result assets": 30d46145 + "Per-model input and output schemas": c894d16d + "Schemas": 613fffa2 --- + {/* GENERATED FILE -- DO NOT HAND-EDIT. @@ -20,71 +22,77 @@ translationBlockHashes: is rejected by the drift gate in the meantime. */} +
+ Comfy Router 的规范路由,以模型 ID 寻址。 基础 URL:`https://api.comfy.org` -以下每个端点均需身份验证。请发送 `Authorization: Bearer `。 +以下每个端点都需要身份验证。请发送 `X-API-Key: ` 或 `Authorization: Bearer `。 + +Comfy API 密钥也可以作为 Bearer token 发送。当同时提供两个凭证请求头时,以 `X-API-Key` 为准。有关 API 密钥与 JWT 的区别,请参阅[身份验证请求头](/zh/development/comfy-router/quickstart);有关访问要求,请参阅[快速入门](/zh/development/comfy-router/quickstart)。 ## 端点 -### `GET /v1/models` +### `GET /v2/models` **列出 Comfy Router 可以运行的模型。** -Comfy Router 的模型目录:`POST /v1/models/{provider}/{model}` 所接受的规范模型 ID 的一页。SDK 在冷启动时调用此接口以发现可运行的模型,`model_not_found` 的建议也来自同一目录,因此,此处列出的 ID 在调用时返回 404 会比单独任一失败更糟糕。这种一致是结构性的,而非承诺:条目的 `provider` 和 `model` 是调用路由的两个路径段,引用与该路由路径参数相同的 schema 组件,而 `id` 是这两个段用 `/` 连接的结果。 +列出可用的模型 ID 和计费信息。在 `has_more` 为 true 时使用 `next_cursor`。 **参数** | 名称 | 位置 | 必填 | 类型 | 约束 | 描述 | | --- | --- | --- | --- | --- | --- | -| `cursor` | query | 否 | [`RouterPageCursor`](#routerpagecursor) | `pattern: ^[A-Za-z0-9._~+/=-]+$`, `minLength: 1`, `maxLength: 512` | 不透明的分页游标。传入上一页的 `next_cursor` 以获取下一页;获取第一页时省略该参数。有关该值为何不透明以及此路由为何按游标而非偏移量分页,请参阅 `RouterPageCursor`。 | -| `limit` | query | 否 | integer | `maximum: 100`, `default: 20` | 单页返回的模型数量。超过声明最大值的值不在契约范围内,但此路由不会拒绝它们:它会改为提供最大值,且实际提供的页面大小会在响应的 `limit` 字段中回显,因此调用方始终能检测到钳制行为。请将最大值视为实际的页面步长:请求更多且假定自己收到更多的客户端会漏掉行。0 和负值同样会被接受并选择默认值,这就是为什么没有声明 `minimum`:小于 1 的值在此处是有意义的,而非无效。 | +| `cursor` | query | 否 | [`RouterPageCursor`](#routerpagecursor) | 作为 `next_cursor` 返回的不透明游标,1–512 个字符 | 不透明的分页游标。 | +| `limit` | query | 否 | integer | 最大 100,默认值:20 | 单页返回的模型数量。 | **响应** | 状态 | 响应体 | 响应头 | 描述 | | --- | --- | --- | --- | | `200` | [`RouterModelListResponse`](#routermodellistresponse) | `X-Comfy-Request-Id` | OK:模型目录的一页。 | -| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型本身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别会在 `X-Comfy-Error-Type` 中重复。 | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型本身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别会在 `X-Comfy-Error-Type` 中重复。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型本身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别会在 `X-Comfy-Error-Type` 中重复。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型本身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别会在 `X-Comfy-Error-Type` 中重复。 | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 无效请求。请检查错误类型和请求体。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 凭据缺失或无效。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 该调用方或模型不允许此请求。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 暂时不可用。请使用退避策略重试。 | -### `GET /v1/models/{provider}/{model}` +### `GET /v2/models/{provider}/{model}` **按规范模型 ID 读取单个合作伙伴模型的目录条目。** -单个 Comfy Router 模型的逐模型详情,调用方无需遍历整个分页目录即可查看某个模型。SDK 会在调用模型之前立即使用此端点来查找模型。 +无需列出完整目录即可读取单个模型的详情。 **参数** | 名称 | 位置 | 必填 | 类型 | 约束 | 描述 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | 是 | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 的小写提供商段:表示正在运行其模型的合作伙伴。 | -| `model` | path | 是 | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 的小写模型段:表示该提供商内要运行的模型。 | +| `provider` | path | 是 | [`RouterProviderSegment`](#routerprovidersegment) | 字母数字 slug,例如 `anthropic`,最多 64 个字符 | 规范 `{provider}/{model}` 模型 ID 的提供商部分。 | +| `model` | path | 是 | [`RouterModelSegment`](#routermodelsegment) | 字母数字 slug,例如 `claude-opus-4-6`,最多 128 个字符 | 规范 `{provider}/{model}` 模型 ID 的模型部分。 | **响应** | 状态 | 响应体 | 响应头 | 描述 | | --- | --- | --- | --- | | `200` | [`RouterModelDetail`](#routermodeldetail) | `X-Comfy-Request-Id` | OK:该模型的目录条目。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级错误:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别在 `X-Comfy-Error-Type` 中重复。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级错误:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别在 `X-Comfy-Error-Type` 中重复。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级错误:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误类别在 `X-Comfy-Error-Type` 中重复。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 凭据缺失或无效。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 此调用方或该模型不允许发起该请求。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 未找到该模型 ID。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 暂时不可用。请使用退避策略重试。 | -### `POST /v1/models/{provider}/{model}` +### `POST /v2/models/{provider}/{model}` **通过规范模型 ID 同步运行合作伙伴模型。** -Comfy Router 的规范入口点,以模型 ID 寻址。请求体是合作伙伴模型自身的原生 JSON 输入,成功响应也是该模型自身的原生 JSON 输出:Router 原样转发两者,而非强加 Comfy 式封装,因此调用方只需更改主机即可在合作伙伴的 API 与 Router 之间切换。这是同步路径:响应携带已完成的结果。 +运行模型并在同一响应中接收其已完成的结果。 **参数** | 名称 | 位置 | 必填 | 类型 | 约束 | 描述 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | 是 | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 的小写提供商段:即正在运行其模型的合作伙伴。 | -| `model` | path | 是 | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 的小写模型段:即该提供商内要运行的模型。 | +| `provider` | path | 是 | [`RouterProviderSegment`](#routerprovidersegment) | 字母数字短标识,例如 `anthropic`,最多 64 个字符 | 规范 `{provider}/{model}` 模型 ID 中的提供商部分。 | +| `model` | path | 是 | [`RouterModelSegment`](#routermodelsegment) | 字母数字短标识,例如 `claude-opus-4-6`,最多 128 个字符 | 规范 `{provider}/{model}` 模型 ID 中的模型部分。 | +| `Idempotency-Key` | header | 否 | 字符串 | 1–255 个字符 | 由调用方生成的键,使重试同一个逻辑调用变得安全。 | **请求体** @@ -96,43 +104,49 @@ Comfy Router 的规范入口点,以模型 ID 寻址。请求体是合作伙伴 | 状态 | 响应体 | 响应头 | 描述 | | --- | --- | --- | --- | -| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id` | OK:合作伙伴模型的原生 JSON 输出,原样返回。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类会重复出现在 `X-Comfy-Error-Type` 中。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类会重复出现在 `X-Comfy-Error-Type` 中。 | -| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 请求已到达模型,但模型拒绝了其内容。响应体为 `RouterValidationErrorResponse`,即 FastAPI 的 `detail[]` 形状,因此每个有问题的字段都保留自己的特定 `type` 和 `ctx`。`X-Comfy-Error-Type` 携带整个响应的粗粒度错误分类。 | -| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | 调用方已占满其被允许的在途容量,请求在到达模型之前就被拒绝。两种情况下分桶都是 `concurrency_limit_exceeded`,`detail` 会说明触及的是哪一个上限:并发调用数,或仍在途调用的已承诺支出;后者的拒绝还会携带 `X-Committed-Spend-Limit`、`X-Committed-Spend-Current` 和 `X-Committed-Spend-Remaining` 响应头(单位为美分)。待调用方自己的某个在途调用完成后再重试。响应体为 `RouterErrorResponse`,错误分类会重复出现在 `X-Comfy-Error-Type` 中。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类会重复出现在 `X-Comfy-Error-Type` 中。 | -| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | Comfy 在自身配置的时限处停止了保持连接(`deadline_exceeded`)。响应体和那两个响应头与 `RouterRequestError` 完全相同;额外增加的是可选的 `Retry-After`,当使用相同 `Idempotency-Key` 重试会收取仍在运行的那次生成而不是派发新的生成时出现。参见 `POST /v1/models/{provider}/{model}` 上的 `504`。 | +| `200` | [`RouterModelOutput`](#routermodeloutput) | `X-Comfy-Request-Id`, `X-Content-Type-Options`, `Idempotent-Replayed`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | OK:合作伙伴模型的原生输出,原样返回,使用合作伙伴自身的媒体类型。 | +| `400` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | 无效请求。请检查错误类型和请求体。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 凭证缺失或无效。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 该请求对此调用方或此模型不被允许。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 未找到该模型 ID。 | +| `409` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After`(当出现 `concurrency_limit_exceeded` 时) | 检查 `X-Comfy-Error-Type`:`concurrency_limit_exceeded` 表示原始调用仍在运行,因此请等待 `Retry-After` 并复用同一个键;`invalid_input` 则需要使用新的键。 | +| `413` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 请求体过大。 | +| `422` | [`RouterValidationErrorResponse`](#routervalidationerrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Idempotent-Replayed` | 请求的内容未通过模型 schema 的校验而被拒绝。 | +| `429` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `X-Committed-Spend-Limit`, `X-Committed-Spend-Current`, `X-Committed-Spend-Remaining` | 检查 `X-Comfy-Error-Type`:`concurrency_limit_exceeded` 表示应减少在途调用;`rate_limited` 表示需等待额度窗口。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 暂时不可用。请使用退避策略重试。 | +| `504` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id`, `Retry-After` | 请求超过了截止时间。重试前请检查错误类型。 | -### `GET /v1/models/{provider}/{model}/openapi.json` +### `GET /v2/models/{provider}/{model}/openapi.json` -**以 OpenAPI 文档形式读取单个合作伙伴模型的输入模式。** +**以 OpenAPI 文档形式读取单个合作伙伴模型的输入和输出模式。** -单个 Comfy Router 模型的输入模式,以独立的 OpenAPI 文档形式提供,使调用方(SDK、代码生成工具或智能体)无需阅读 Comfy 的文字说明文档即可发现模型的启动参数。它是 SDK 快速入门所依赖的发现机制。 +以独立的 OpenAPI 文档形式读取单个模型的输入和输出模式。 **参数** | 名称 | 位置 | 必填 | 类型 | 约束 | 描述 | | --- | --- | --- | --- | --- | --- | -| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 中的小写提供商段:即其模型正在被运行的合作伙伴。 | -| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 规范 `{provider}/{model}[/{variant}]` 模型 ID 中的小写模型段:即在该提供商内要运行的模型。 | -| `If-None-Match` | header | no | string | - | 调用方从之前某次 `200` 中保存的 `ETag`。当它与当前文档匹配时(RFC 9110 弱比较;`*` 匹配任何当前文档),应答是携带相同 `ETag` 的无响应体 `304`,否则返回完整文档。 | +| `provider` | path | yes | [`RouterProviderSegment`](#routerprovidersegment) | 字母数字短标识,例如 `anthropic`,最长 64 个字符 | 规范 `{provider}/{model}` 模型 ID 中的提供商部分。 | +| `model` | path | yes | [`RouterModelSegment`](#routermodelsegment) | 字母数字短标识,例如 `claude-opus-4-6`,最长 128 个字符 | 规范 `{provider}/{model}` 模型 ID 中的模型部分。 | +| `If-None-Match` | header | no | string | - | 调用方从之前某次 `200` 中保存的 `ETag`。 | **响应** | 状态 | 响应体 | 响应头 | 描述 | | --- | --- | --- | --- | -| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | 成功:模型的输入模式,以独立的 OpenAPI 文档形式提供。 | -| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | 未修改:文档与调用方在 `If-None-Match` 中发送的 `ETag` 相比未发生变化。不返回响应体。 | -| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类同样体现在 `X-Comfy-Error-Type` 响应头中。 | -| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类同样体现在 `X-Comfy-Error-Type` 响应头中。 | -| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类同样体现在 `X-Comfy-Error-Type` 响应头中。 | -| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类同样体现在 `X-Comfy-Error-Type` 响应头中。 | -| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 请求级失败:请求从未到达模型,或因模型自身未反馈的原因而失败。响应体为 `RouterErrorResponse`,错误分类同样体现在 `X-Comfy-Error-Type` 响应头中。 | +| `200` | [`RouterModelInputSchemaDocument`](#routermodelinputschemadocument) | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | 成功:模型的输入和输出模式,以独立的 OpenAPI 文档形式提供。 | +| `304` | - | `X-Comfy-Request-Id`, `ETag`, `Cache-Control` | 未修改:自调用方在 `If-None-Match` 中发送的 `ETag` 以来,文档未发生变化。 | +| `401` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 凭据缺失或无效。 | +| `403` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 该调用方或该模型不允许发起此请求。 | +| `404` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | 未找到该模型 ID。 | +| `500` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 无法完成该请求。 | +| `503` | [`RouterErrorResponse`](#routererrorresponse) | `X-Comfy-Error-Type`, `X-Comfy-Request-Id` | Router 暂时不可用。请使用退避策略重试。 | + +表格描述较为简短。关于模型选择、验证、重试与计费,请参阅[使用 Comfy Router API](/zh/development/comfy-router/quickstart);关于响应头行为,请参阅响应头。 ## 错误分类桶 -Router 失败的粗粒度机器可读分类桶,同时反映在 `X-Comfy-Error-Type` 响应头中,以便调用方无需解析响应体即可进行分支处理。该集合固定为十五个值:六个请求级分类桶 `invalid_input`、`content_policy_violation`、`provider_error`、`provider_timeout`、`insufficient_credits` 和 `model_not_found`,以及传输级 `unauthorized`、`forbidden`、`concurrency_limit_exceeded`、`client_disconnected`、`internal_error`、`deadline_exceeded`、`not_enabled`、`service_unavailable` 和 `rate_limited`。 +Router 错误的机器可读类别,同时也会在 `X-Comfy-Error-Type` 响应头中发送。 ### 请求级分类桶 @@ -140,12 +154,12 @@ Router 失败的粗粒度机器可读分类桶,同时反映在 `X-Comfy-Error- | `error_type` | 含义 | | --- | --- | -| `invalid_input` | 请求在到达模型之前就被拒绝:请求体格式错误、分页游标格式错误或已过期,或包含模型自身 schema 不接受的输入。 | -| `content_policy_violation` | 提供商基于内容政策理由拒绝了请求。该拒绝是确定性的:重新发送相同的输入仍会被拒绝。 | +| `invalid_input` | 请求在到达模型之前就被拒绝:请求体格式错误、分页游标格式错误或已过期、模型自身 schema 不接受的输入,或无法用于此请求的 `Idempotency-Key`(已用于其他请求,即方法、路径与查询或请求体不同;或已被某个其响应无法重放的调用消耗)。 | +| `content_policy_violation` | 提供商基于内容政策理由拒绝了请求。 | | `provider_error` | 合作伙伴提供商报告了其自身的故障,或返回了 Router 无法解释为结果的响应。 | -| `provider_timeout` | 合作伙伴提供商未在其截止时间内应答。此分类桶表示提供商(PROVIDER)超时,绝不是 Router 自身的服务器截止时间,后者报告为 `deadline_exceeded`。二者同为 `504`,但被分开,因为它们指代不同的原因:前者表示合作伙伴失败,后者表示 Comfy 停止保持连接。 | +| `provider_timeout` | 合作伙伴提供商未在其截止时间内应答。 | | `insufficient_credits` | 发起调用的工作区没有足够的积分来运行该模型。 | -| `model_not_found` | `{provider}/{model}` ID 指向 Router 无法运行的模型;未知提供商也归入此类。`detail` 最多携带三条建议,这些建议取自调用方有权查看的模型。 | +| `model_not_found` | `{provider}/{model}` ID 未指向任何 Router 可运行的模型;未知提供商也归入此类。 | ### 传输级分类桶 @@ -156,60 +170,85 @@ Router 失败的粗粒度机器可读分类桶,同时反映在 `X-Comfy-Error- | `unauthorized` | 请求未携带可用的凭据。 | | `forbidden` | 凭据有效,但无权访问此模型或执行此操作。 | | `concurrency_limit_exceeded` | 工作区已在进行中的调用数量已达到允许的上限;等待其中一项调用完成后重试。 | -| `client_disconnected` | 调用方在 Router 返回结果之前关闭了连接。该错误会被记录而非投递,因为已没有可写入的 socket。它属于归因,而非计费结果:提供商已完成的生成任务都会计费,无论调用方是否收到响应。 | -| `internal_error` | Router 自身失败。客户端也应当将任何无法识别的分类桶视为该值,这样以后再向集合中新增分类也不会破坏早先生成的客户端。 | -| `deadline_exceeded` | 在答案到达之前,Comfy 在自身配置的时限处停止了保持连接。它与 `provider_timeout` 同为 `504`,这一对值表明是哪一方超时;此值是 Comfy 自身的时限,因此请求没有任何部分被拒绝,可以重试同一请求。它不涉及费用:提供商已完成的生成任务都会计费,无论调用方是否收到响应。请使用相同的 `Idempotency-Key` 重试:如果提供商已经接受了该次生成,重试会收取那次生成而不是再派发一次,`504` 上的 `Retry-After` 会告诉你何时再询问。 | -| `not_enabled` | Comfy Router 尚未为该调用方启用。请求本身没有任何问题,模型也存在,这正是它不是 `model_not_found` 的原因。它与 `forbidden` 同为 `403`,但绝非同一回事:`forbidden` 是对调用方的权限判定,而此值是发布(rollout)的状态。它是终端(TERMINAL)状态:不要重试,也不要将其视为服务中断。 | -| `service_unavailable` | Comfy Router 依赖的某个服务暂时不可用,调用方没有任何过错。使用退避(backoff)策略重试:它是此处唯一一个条件会自动清除的分类桶,调用方无需更改请求,也无需释放并发槽位,这正是它与其它可重试响应(`concurrency_limit_exceeded`、`deadline_exceeded`)的区别。它与 `internal_error` 不同,后者是 `500`,表示 Router 自身失败,因此客户端可以区分“稍后再来”和“这次调用不会成功”。 | -| `rate_limited` | 调用方已用尽按窗口(WINDOW)计量的配额,必须等待该窗口滚动过去。它与 `concurrency_limit_exceeded` 同为 `429`,但并非同一回事:后者在调用方自己的某个进行中调用完成的那一刻即会解除,因此在几秒后重试是正确的;而前者无论调用方做什么都无法提前解除。`detail` 会指明该窗口。 | +| `client_disconnected` | 在 Router 能够返回结果之前,调用方关闭了连接。 | +| `internal_error` | Router 自身失败。 | +| `deadline_exceeded` | 在答案到达之前,Comfy 在自身配置的时限处停止了保持连接。 | +| `not_enabled` | Comfy Router 尚未为该调用方启用。 | +| `service_unavailable` | Comfy Router 依赖的某个服务暂时不可用,调用方没有任何过错。 | +| `rate_limited` | 调用方已用尽按窗口(WINDOW)计量的配额,必须等待该窗口滚动过去。 | ## 响应头 | 响应头 | 类型 | 描述 | | --- | --- | --- | -| `Cache-Control` | 字符串 | 所提供的架构文档的新鲜度指令。`private` 是因为该路由经过身份验证:文档本身并不特定于调用方,但共享缓存不得保存对已认证请求的响应;`must-revalidate` 则用于让过期副本根据 `ETag` 重新验证,而不是继续将其提供出去。 | -| `ETag` | 字符串 | 基于所提供文档字节的强实体标签,用于 `GET /v1/models/{provider}/{model}/openapi.json`。每个模型的架构很少变更,而 SDK 会频繁重新获取它,因此调用方应存储此值,并将其作为 `If-None-Match` 发送回去,以获得 `304` 而不是整个文档。 | -| `Retry-After` | 整数 | 使用相同 `Idempotency-Key` 重试同一请求之前需要等待的秒数。仅当 Comfy 持有提供商仍在运行的某次生成的句柄时,才会出现在 `deadline_exceeded` 的 `504` 上;该值是 Router 自身的轮询间隔,也是这条路由对“稍后再问”能给出的唯一诚实数字。没有可收取的内容时则不出现:未带键的调用,或在提供商接受任何内容之前就已到期的时限。 | -| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | 失败原因的粗粒度、机器可读分类,由 Router 在每个错误响应上设置。其值与 `RouterErrorResponse.error_type` 相同;在 `422` 响应上,它是唯一的机器可读分类,因为该响应体是 FastAPI 的 `detail[]` 形状,本身没有 `error_type` 字段。因此,客户端可以仅根据此响应头进行分支判断,再决定收到的是两种 Router 错误体中的哪一种。 | -| `X-Comfy-Request-Id` | 字符串 | 服务器为此次调用生成的标识符,存在于每个 Router 响应上:成功、4xx 和 5xx 响应均如此,因为错误响应恰恰是用户需要在支持请求中引用该 ID 的时候。相同的值会写入调用的使用/审计事件中,这使得关于费用的投诉可以直接关联到该费用本身,而无需按时间戳搜索。 | -| `X-Committed-Spend-Current` | 整数 | 调用方当前已承诺给仍在途调用的美分数,不计被拒绝的那次调用。与 `X-Committed-Spend-Limit` 一同出现。 | -| `X-Committed-Spend-Limit` | 整数 | 调用方可承诺给仍在途调用的合作伙伴支出上限,单位为美分。当拒绝原因是已承诺支出上限而不是并发调用池时出现。 | -| `X-Committed-Spend-Remaining` | 整数 | 上限之下剩余的余量,单位为美分,最低为零。被拒绝时它也可能为正:被拒绝的调用花费超过了剩余额度,而更便宜的调用仍会被接受。与 `X-Committed-Spend-Limit` 一同出现。 | +| `Cache-Control` | 字符串 | 所提供的架构文档的新鲜度指令。 | +| `ETag` | 字符串 | 针对所提供文档字节的强实体标签,用于 `GET /v2/models/{provider}/{model}/openapi.json`。 | +| `Idempotent-Replayed` | 布尔 | 当此响应来自某条 `Idempotency-Key` 的记录,而不是再次运行模型时,该头会出现且值为 `true`。 | +| `Retry-After` | 整数 | 使用相同的 `Idempotency-Key` 重试同一请求之前需要等待的秒数。 | +| `X-Comfy-Error-Type` | [`RouterErrorType`](#routererrortype) | 失败原因的粗粒度、机器可读分类,由 Router 在每个错误响应上设置。 | +| `X-Comfy-Request-Id` | 字符串 | 服务器为此次调用生成的标识符,存在于每个 Router 响应上,成功、4xx 和 5xx 响应均如此,因为错误响应恰恰是用户需要在支持请求中引用某个 ID 的时候。 | +| `X-Committed-Spend-Current` | 整数 | 调用方当前已承诺给仍在途调用的美分数。 | +| `X-Committed-Spend-Limit` | 整数 | 调用方可承诺给仍在途调用的合作伙伴支出上限,单位为美分:从调用被接纳那一刻起即被占用,并在该调用结束时释放。 | +| `X-Committed-Spend-Remaining` | 整数 | 上限之下剩余的余量,单位为美分,最低为零。 | +| `X-Content-Type-Options` | 字符串 | 在 Router 模型的每次成功运行中始终为 `nosniff`。 | + +## 结果资产 + +模型可以返回资产 URL、内联字节,或两者兼有。下面的提供商会将已选择的资产复制到 Comfy 存储上并替换其 URL。此行为取决于模型;没有任何请求头能选择它。 + +| 模型 | 复制到 Comfy 存储的内容 | Comfy 托管 URL 的最长有效期 | +| --- | --- | --- | +| `bfl/*` | 已完成资产,以及结果中携带的草稿缓存资产(如有) | 24 小时 | +| `byteplus/*` 视频模型(`seedance`、`dreamina-seedance`) | 已完成视频,以及结果中携带的末帧图像(如有) | 24 小时 | +| `minimax/*` | 已完成视频 | 12 小时 | +| `xai/*` | 每一张已生成的图像,以及已完成视频 | 24 小时 | + +这些有效期从 URL 签名时开始计算,而不是从你打开它时开始。缓存或重放的 URL 可能剩余时间更少;重放不会为其续期。请及时下载资产。只有每一行中列出的资产会被复制:`byteplus/seedream-*` 和 `byteplus/seededit-*` 图像不在 BytePlus 视频行的覆盖范围内。 -## 各模型的输入模式 +**Veo(`veo/*`)有单独的存储路径。** 在 `response.videos[]` 中,读取其中存在的成员:`bytesBase64Encoded` 内联包含视频片段,而当环境配置为提供商直接写入 Comfy 存储时,`gcsUri` 包含一个 Comfy 签名的 HTTPS 链接。该链接自响应起 24 小时内有效。后一种情况是直接写入资产而非复制,因此 Veo 不在重新托管表中。 -模型自身的输入字段不在此处重复列出。请通过 `GET /v1/models/{provider}/{model}/openapi.json` 实时读取这些字段,该端点提供与服务器校验调用时所依据的同一份文档,因此对外发布的内容与强制执行的内容不会出现偏差。从 `GET /v1/models` 获取模型 ID,在其调用路径后附加 `/openapi.json`,然后根据返回的文档进行生成。 +其他模型返回提供商资产引用或内联字节。提供商 URL 遵循提供商的过期时间,这可能比上述有效期短得多,且 Router 契约未对此作出规定。 + +复制是按资产尽力而为的。如果某个复制失败,该条目会保留其提供商引用;响应可以同时包含 Comfy 和提供商 URL,且没有明确的按资产复制状态字段。生成仍会成功并计费。不要根据一个成功重新托管的资产来推断每个 URL 的有效期。 + +结果是否由 Comfy 托管也决定了已完成的调用以后是否仍能从其 `Idempotency-Key` 记录中重放;上面的 `Idempotency-Key` 参数说明了无法重放时重试会得到怎样的回应。 + + + +## 各模型的输入和输出架构 + +通过 `GET /v2/models/{provider}/{model}/openapi.json` 可读取每个模型的字段。该操作的 `requestBody` 描述了输入验证;在已编写的情况下,其 `200` 响应描述了输出形状和媒体类型。当 `x-comfy-input-schema-authored` 为否时,Router 接受任意 JSON 对象,而不进行特定于模型的预验证。提供商依赖项仍然适用。输出架构描述的是结果;Router 不会依据它们验证提供商返回的载荷。未编写的输出可能使用 `*/*` 而非 `application/json`;在解码之前,请检查响应的内容类型。 ## 模式 ### RouterChargesOnPolicyRejection -模型因内容政策而拒绝的调用,是否仍会向调用方收费。各提供商的做法不同,这种差异在调用时不可见。用户看到同一次调用出现错误和扣费时,也无从事先知晓,因此该信息会在调用之前按模型逐一说明,而不是留给各提供商的口口相传。 +对于该模型,内容政策拒绝是否会计费。未知值应视为可能计费。 类型:`string` ### RouterErrorResponse -Router 的请求级错误体:当请求从未到达模型,或因模型本身未反馈的原因(认证、配额、未知模型 ID 或提供商传输)而失败时返回的内容。模型级验证失败具有自身的形状 `RouterValidationErrorResponse`,因为将 FastAPI 的 `detail[]` 数组扁平化为此 `detail` 字符串会破坏 SDK 所依赖的逐字段粒度。 +认证、访问、模型查找、配额以及提供商传输失败的错误响应体。 | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `detail` | 字符串 | 是 | - | 失败的人类可读描述,可安全展示给最终用户。不可由机器解析。请改用 `error_type` 进行分支判断。 | +| `detail` | 字符串 | 是 | - | 失败的人类可读描述,可安全展示给最终用户。不由机器解析。请改用 `error_type` 进行分支判断。 | | `error_type` | [`RouterErrorType`](#routererrortype) | 是 | - | Router 失败的粗粒度、机器可读分类,镜像在 `X-Comfy-Error-Type` 响应头中,使调用方无需解析响应体即可进行分支判断。该集合固定包含十五个值:六个请求级分类 `invalid_input`、`content_policy_violation`、`provider_error`、`provider_timeout`、`insufficient_credits` 和 `model_not_found`,以及传输级分类 `unauthorized`、`forbidden`、`concurrency_limit_exceeded`、`client_disconnected`、`internal_error`、`deadline_exceeded`、`not_enabled`、`service_unavailable` 和 `rate_limited`。 | ### RouterErrorType -粗粒度、机器可读的 Router 失败分类,同时镜像在 `X-Comfy-Error-Type` 响应头中,调用方无需解析响应体即可进行分支处理。该集合固定为十五个值:六个请求级分类 `invalid_input`、`content_policy_violation`、`provider_error`、`provider_timeout`、`insufficient_credits` 和 `model_not_found`,以及传输级 `unauthorized`、`forbidden`、`concurrency_limit_exceeded`、`client_disconnected`、`internal_error`、`deadline_exceeded`、`not_enabled`、`service_unavailable` 和 `rate_limited`。 +机器可读的 Router 错误类别,同时通过 `X-Comfy-Error-Type` 响应头发送。 类型:`string` ### RouterModelBilling -调用方在发起调用之前需要了解的按模型计费的**事实**,而非价格。此处从不出现用量和费用数字。 +调用模型之前需要查看的计费行为。它不包含价格或用量。 | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | 是 | - | 此模型因内容政策原因拒绝的调用是否仍会向调用方收费。不同提供商的处理方式不同,且调用时无法看出差异;用户看到同一调用既报错又被收费时,无从事先得知。因此这一点会在调用之前按模型说明,而不是留给各家提供商的惯例去猜测。 | +| `charges_on_policy_rejection` | [`RouterChargesOnPolicyRejection`](#routerchargesonpolicyrejection) | 是 | - | 此模型因内容政策原因拒绝的调用是否仍会向调用方收费。各提供商的做法不同,这种差异在调用时无从察觉,而用户在同一调用上既看到错误又被收费时,也无从事先得知。因此这一点会在调用之前按模型说明,而不是留给各家提供商的惯常说法。 | ### RouterModelDetail @@ -221,39 +260,39 @@ Router 的请求级错误体:当请求从未到达模型,或因模型本身 ### RouterModelDetailFields -`RouterModelDetail` 中目录列表并不包含的另一半:按模型区分的字段,值得单独查询一次,但无需在分页目录页面的每个条目上重复列出。 +模型详情端点返回的可选字段。 | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `input_schema_url` | 字符串 | 否 | `format: uri`, `pattern: ^https://`, `maxLength: 2048` | 指向此模型输入模式文档的指针,该文档描述 `POST /v1/models/{provider}/{model}` 为此模型接受的请求正文。只有指针属于此契约的一部分:其指向的文档是单独编写的。当模型尚未编写任何模式时,此字段不存在。 | +| `input_schema_url` | 字符串 | 否 | HTTPS URL,例如 `https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json`,最长 2048 个字符 | 此模型的 OpenAPI 文档的 URL,其中包含该模型的输入与输出模式。 | ### RouterModelId -Comfy Router 模型的规范 ID 为 `{provider}/{model}`,这正是 `POST /v1/models/{provider}/{model}` 上用于寻址该模型的值,因此调用方可以将其直接插入该路径,而无需从任何其他内容重新推导。其 `pattern` 由 `RouterProviderSegment` 和 `RouterModelSegment` 通过单个 `/` 连接而成,`maxLength` 为两者之和再加上该分隔符。 +用于 `POST /v2/models/{provider}/{model}` 的模型 ID。 -类型:`string`,`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`,`maxLength: 193` +类型:`string`,模型 ID,例如 `anthropic/claude-opus-4-6`,最多 193 个字符 ### RouterModelInput -合作伙伴模型的原生 JSON 输入文档,按原样转发给提供商。其具体形状由合作伙伴而非 Comfy 拥有,因此这是一个开放对象:Router 不会缩窄、重命名或重新封装这些字段。它是一个命名组件(绝不会是内联匿名对象),因为 ComfyUI 的规范驱动代码生成需要一个类来生成。 +模型输入对象。请查阅已选模型的 OpenAPI 文档,了解其字段与验证规则。 类型:`object` ### RouterModelInputSchemaDocument -一个独立的 OpenAPI 文档,描述单个 Comfy Router 模型的输入:即 `POST /v1/models/{provider}/{model}` 针对该模型接受的请求体。它正是 `GET /v1/models/{provider}/{model}/openapi.json` 所返回的内容。 +一个独立的 OpenAPI 文档,用于描述单个模型的输入和输出。 类型:`object` ### RouterModelListEntry -Router 模型目录中的一条条目:可运行模型的身份标识,仅此而已。按模型的详情路由会复用这条相同的条目,而不是重新陈述,这正是名称使用 `...ListEntry` 而非 `...Summary` 的原因:目录条目的定义必须唯一。按模型的详情以及按模型的输入/输出模式(schema)各有独立的路由,因此此形状保持为调用方调用模型所需的最小信息。这是有意为之,因为这是 SDK 在冷启动时获取的负载。`id` 是 `provider` 和 `model` 以 `/` 连接而成;这两个字段也分别携带,以便调用方无需拆分字符串即可拼出调用路径。 +模型 ID 与计费事实。 | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `id` | [`RouterModelId`](#routermodelid) | 是 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*/[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 193` | 一个规范的 Comfy Router 模型 ID,`{provider}/{model}`:正是 `POST /v1/models/{provider}/{model}` 上寻址该模型所使用的值,因此调用方可以将其直接插入该路径,而无需从任何内容重新推导。其 `pattern` 是 `RouterProviderSegment` 和 `RouterModelSegment` 以单个 `/` 连接而成,`maxLength` 是两者之和再加上该分隔符。 | -| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | 是 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 64` | 规范的 `{provider}/{model}[/{variant}]` 模型 ID 中的小写 `provider` 段:也就是其模型正被寻址的那个合作伙伴。调用路由的 `provider` 路径参数和目录条目的 `provider` 字段都引用这同一个模式(schema),这正是保证所列出的 ID 与所接受的 ID 不会发生偏离的原因。 | -| `model` | [`RouterModelSegment`](#routermodelsegment) | 是 | `pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`, `maxLength: 128` | 规范的 `{provider}/{model}[/{variant}]` 模型 ID 中的小写 `model` 段:即在该提供商内要运行的模型。该模式(schema)同时被调用路由的 `model` 路径参数和目录条目的 `model` 字段引用,出于与 `RouterProviderSegment` 相同的防偏离原因。 | +| `id` | [`RouterModelId`](#routermodelid) | 是 | 模型 ID,例如 `anthropic/claude-opus-4-6`,最多 193 个字符 | 规范的 Comfy Router 模型 ID,`{provider}/{model}`:正是 `POST /v2/models/{provider}/{model}` 上用于寻址该模型的那个值,因此调用方可以直接将其插入该路径,而无需从其他任何内容重新推导。其 `pattern` 由 `RouterProviderSegment` 和 `RouterModelSegment` 以单个 `/` 连接而成,`maxLength` 则是二者之和再加上该分隔符。 | +| `provider` | [`RouterProviderSegment`](#routerprovidersegment) | 是 | 字母数字 slug,例如 `anthropic`,最多 64 个字符 | 规范的 `{provider}/{model}[/{variant}]` 模型 ID 中的小写 `provider` 段:也就是其模型正被寻址的那个合作伙伴。调用路由的 `provider` 路径参数和目录条目的 `provider` 字段都引用这同一个模式(schema),这正是保证所列出的 ID 与所接受的 ID 不会发生偏离的原因。 | +| `model` | [`RouterModelSegment`](#routermodelsegment) | 是 | 字母数字 slug,例如 `claude-opus-4-6`,最多 128 个字符 | 规范的 `{provider}/{model}[/{variant}]` 模型 ID 中的小写 `model` 段:即在该提供商内要运行的模型。它由调用路由的 `model` 路径参数和目录条目的 `model` 字段共用,出于与 `RouterProviderSegment` 相同的防偏离原因。 | | `billing` | [`RouterModelBilling`](#routermodelbilling) | 是 | - | 调用方在调用之前所需的按模型计费事实,而非价格。使用量和成本数字绝不会出现在此处。 | ### RouterModelListResponse @@ -264,59 +303,57 @@ Router 模型目录中的一页。 | --- | --- | --- | --- | --- | | `data` | [`RouterModelListEntry`](#routermodellistentry) 的数组 | 是 | - | 此页上的模型,最多 `limit` 个。 | | `has_more` | 布尔 | 是 | - | 此页之后是否还存在下一页。只要该值为真,就继续遍历;不要因为 `data` 数据较少或为空就推断目录已结束。 | -| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 否 | `pattern: ^[A-Za-z0-9._~+/=-]+$`、`minLength: 1`、`maxLength: 512` | 指向 Router 列表的不透明游标。它由服务器生成,且只会被原样往返传递:它不是偏移量,不是模型 ID,不保证有序,也不会在目录重建后保持稳定。因此,解析游标、对游标进行递增,或将游标保留到超出其来源遍历范围之外,都不在约定范围之内。采用游标而非偏移量,是因为目录是一个不断变动的列表:当条目在遍历途中被添加或删除时,基于偏移量的遍历会静默地跳过或重复条目,而调用方无法察觉这一点。 | -| `limit` | 整数 | 是 | `minimum: 1`、`maximum: 100` | 实际返回的页面大小。请求的 `limit` 超过最大值时会被向下钳制到最大值,而不是被拒绝,因此该值可能小于你请求的值。请使用此数值进行分页,而不是使用你发送的数值;否则你会误以为收到了实际并未获取的记录。 | +| `next_cursor` | [`RouterPageCursor`](#routerpagecursor) | 否 | 以 `next_cursor` 形式返回的不透明游标,1–512 个字符 | 指向 Router 列表的不透明游标。它由服务器生成,且只会被原样往返传递:它不是偏移量,不是模型 ID,不保证有序,也不会在目录重建后保持稳定。因此,解析游标、对游标进行递增,或将游标保留到超出其来源遍历范围之外,都不在约定范围之内。采用游标而非偏移量,是因为目录是一个不断变动的列表:当条目在遍历途中被添加或删除时,基于偏移量的遍历会静默地跳过或重复条目,而调用方无法察觉这一点。 | +| `limit` | 整数 | 是 | 1–100 | 实际返回的页面大小。请求的 `limit` 超过最大值时会被向下钳制到最大值,而不是被拒绝,因此该值可能小于你请求的值。请使用此数值进行分页,而不是使用你发送的数值;否则你会误以为收到了实际并未获取的记录。 | ### RouterModelOutput -合作伙伴模型的原生 JSON 输出文档,原样返回给调用方。其具体形状由合作伙伴而非 Comfy 定义,因此这是一个开放对象:Router 不会对字段进行收窄、重命名或重新封装。它是一个命名组件(绝不是内联匿名对象),因为 ComfyUI 的规范驱动代码生成需要一个类来生成。 +模型结果对象。请阅读已选择模型的输出 schema 以获取其确切形状。 类型:`object` ### RouterModelSegment -规范的 `{provider}/{model}[/{variant}]` 模型 ID 中的小写 `model` 段,表示要在该提供商内运行的模型。调用路由的 `model` 路径参数与目录条目的 `model` 字段共享此段,原因与 `RouterProviderSegment` 相同,即防止漂移。 +`{provider}/{model}` 模型 ID 中的模型部分。 -类型:`字符串`,`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`,`maxLength: 128` +类型:`string`,字母数字 slug,例如 `claude-opus-4-6`,最多 128 个字符 ### RouterPageCursor -Router 列表的一个不透明游标。它由服务器生成,且仅用于往返传递:它不是偏移量,不是模型 ID,不保证有序,也不会在目录重建后保持稳定。因此,解析游标、递增游标,或将游标持久化到超出其来源遍历的范围之外,均不在契约范围之内。之所以使用游标而非偏移量,是因为目录是一个动态变化的列表:在遍历过程中添加或删除条目时,基于偏移量的遍历会静默跳过或重复条目,而调用方无法察觉这种情况的发生。 +一个不透明的目录游标。将其原样传回给 `cursor`。 -类型:`string`(`pattern: ^[A-Za-z0-9._~+/=-]+$`、`minLength: 1`、`maxLength: 512`) +类型:`string`:以 `next_cursor` 返回的不透明游标,1–512 个字符 ### RouterProviderSegment -规范模型 ID `{provider}/{model}[/{variant}]` 中的小写 `provider` 段,表示其模型正被寻址的合作伙伴。调用路由的 `provider` 路径参数和目录条目的 `provider` 字段均引用此同一模式,这正是确保所列 ID 与所接受 ID 不会发生偏离的原因。 +`{provider}/{model}` 模型 ID 中的提供商部分。 -类型:`string`。`pattern: ^[a-z0-9]+([._-][a-z0-9]+)*$`,`maxLength: 64` +类型:`string`。字母数字 slug,例如 `anthropic`,最多 64 个字符 ### RouterValidationErrorContext -某个 `RouterValidationErrorDetail` 的违规边界,由提供商原样传递。例如,`{"limit_value": 8}` 对应 `greater_than`,`{"min_width": 512}` 对应 `image_too_small`,或 `{"max_size_bytes": 10485760}` 对应 `file_too_large`。键集因提供商和错误类型而异,因此该对象刻意设计为开放对象。将其收窄为固定字段列表,或将其并入 `msg` 字符串,正是移植集成得以编译通过、却随后悄然丢失读取该边界的代码分支的方式。当错误类型不携带边界时,此字段缺失。 +关于验证规则失败的提供商提供的详情。 类型:`object` ### RouterValidationErrorDetail -以 FastAPI 形式表示的单次模型级验证失败。`type` 携带的是提供商的特定原因,例如 `value_error`、`missing`、`image_too_small`、`unsupported_audio_format`、`greater_than`、`file_too_large` 等等,这是 `RouterErrorType` 的粗粒度分类所无法表达的细节层次。出于同样的原因,它是一个开放字符串而非 `enum`:提供商的词汇表跨越两个层级,约有 48 个值,并随提供商的发布周期增长,而不是我们的发布周期。未建模的值必须能够到达调用方,而不是在反序列化时失败。 - | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `loc` | 任意类型数组 | 是 | - | 指向出错字段的路径,最外层段在前,例如 `["body", "image_url"]` 或 `["body", "images", 0]`,其中整数表示对数组的索引。 | +| `loc` | 任意类型数组 | 是 | - | 指向出错字段的路径,最外层段在前,例如 `["body", "image_url"]`,或 `["body", "images", 0]`,其中整数表示对数组的索引。 | | `msg` | 字符串 | 是 | - | 针对该单次失败的可读描述。 | | `type` | 字符串 | 是 | - | 该失败的具体、机器可读原因,由提供商原样透传。类型化 SDK 的异常层次结构正是根据此值进行分支判断的;响应头中的 `error_type` 只是它的粗粒度分类。 | | `ctx` | [`RouterValidationErrorContext`](#routervalidationerrorcontext) | 否 | - | 单个 `RouterValidationErrorDetail` 中被违反的约束值,由提供商原样携带,例如 `greater_than` 附带的 `{"limit_value": 8}`、`image_too_small` 附带的 `{"min_width": 512}`,或 `file_too_large` 附带的 `{"max_size_bytes": 10485760}`。键集合取决于提供商和错误类型,因此这里有意采用开放对象:若将其收窄为固定字段列表,或将其并入 `msg` 字符串,恰恰会导致移植后的集成能够编译通过,却静默丢失读取该约束值的分支。当错误类型不携带约束值时,此字段不存在。 | -| `input` | [`RouterValidationErrorInput`](#routervalidationerrorinput) | 否 | - | 出错时的输入值,原样回显,以便调用方无需从 `loc` 重新推导即可看到被拒绝的内容。它可以是任意 JSON 类型:字符串、数字、布尔、数组、对象或 null,因此此模式有意保持不限定类型,而不是收窄为对象。当提供商不回显输入时,此字段不存在。 | +| `input` | [`RouterValidationErrorInput`](#routervalidationerrorinput) | 否 | - | 被拒绝的输入值,原样回显,以便调用方无需从 `loc` 重新推导即可看到被拒绝的内容。它可以是任意 JSON 类型:字符串、数字、布尔、数组、对象或 null,因此此模式有意保持不限定类型,而不是收窄为对象。当提供商不回显输入时,此字段不存在。 | ### RouterValidationErrorInput -违规的输入值,原样回显,以便调用方无需从 `loc` 重新推导即可看到被拒绝的内容。可以是任何 JSON 类型:字符串、数字、布尔、数组、对象或 null。因此此 schema 特意保持无类型,而不是限定为对象。当提供商不回显输入时,此字段不存在。 +当提供商包含该值时,此处为被拒绝的输入值。 ### RouterValidationErrorResponse -Router 的模型级 `422` 响应体,采用 FastAPI 形式:请求格式良好,足以到达模型,但模型拒绝了其内容。请注意,它本身不携带 `error_type` 字段,这正是响应中的 `X-Comfy-Error-Type` 标头的用途:客户端无需先判断收到的是两个 Router 错误响应体中的哪一个,即可从标头读取粗略的错误分类。 +`422` 验证错误响应体。其类别请读取 `X-Comfy-Error-Type` 标头。 | 字段 | 类型 | 必填 | 约束 | 描述 | | --- | --- | --- | --- | --- | -| `detail` | [`RouterValidationErrorDetail`](#routervalidationerrordetail) 的数组 | 是 | - | 请求中发现的每个验证失败,每个违规字段对应一个条目。 | +| `detail` | [`RouterValidationErrorDetail`](#routervalidationerrordetail) 数组 | 是 | - | 请求中发现的每个验证失败,每个违规字段对应一个条目。 |