Files
fn_registry/python/functions/pipelines/comfyui_generate_mixed_oneshot.md
T
egutierrez 10dbc510b7 feat(ml): LoRAs con prefijo de arquitectura (SD15_/SDXL_/FLUX_) + refs actualizadas
Mueve el indicador de arquitectura del SUFIJO al PREFIJO del nombre de cada
LoRA para que el dropdown del LoraLoader muestre de inmediato que LoRA casa con
que checkpoint (evita el shape mismatch SD1.5 vs SDXL que crashea ComfyUI).

- 20 LoRAs renombradas en disco (15 SD15/SDXL en /mnt/2tb, 5 FLUX en ~/ComfyUI),
  mapa de reversion en ~/ComfyUI/models/loras/_rename_map.json.
- Refs actualizadas en builders gamedev-2d, style presets, pipelines, tests y
  docs/capabilities. Defaults hardcodeados (pixel-art, lcm-lora, etc.) apuntan a
  los nombres con prefijo.
- Ejemplos genericos en docstrings normalizados a la convencion de prefijo.
- comfyui_replicate_civitai_oneshot::_norm ignora el token de arquitectura al
  comparar, robusto al reordenado (sufijo civitai vs prefijo instalado).

Refs a repos HuggingFace (nerijs/pixel-art-xl) y checkpoints (juggernaut_xl_v11)
preservados. Verificado: dropdown LoraLoader con prefijos + generacion real
pixel-art OK + tests comfyui verdes (481 ml + 26 pipelines).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 16:33:03 +02:00

5.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
comfyui_generate_mixed_oneshot pipeline py pipelines 1.0.0 impure def comfyui_generate_mixed_oneshot(base, subject: str, *, capabilities: dict | None = None, server: str = "127.0.0.1:8188", dest: str | None = None, seed: int = 0, judge: bool = True, checkpoint: str | None = None, negative: str = "", library_dir: str | None = None, wait_timeout: float = 600.0) -> dict Pipeline one-shot del mixer comfyui-skill: parte de un workflow base (skill slug, builder 'txt2img', o dict ya construido), aplica el conjunto de capacidades elegido con comfyui_compose_capabilities (LoRAs + ControlNet + IPAdapter + hires + FaceDetailer, cada una activable), encola, espera, descarga el PNG y si judge=True lo puntua con el panel comfyui-judge. Promueve a una llamada la secuencia base->compose->submit->wait->fetch->judge (issue 0087). Devuelve {ok, prompt_id, image_path, capabilities_active, judge, error}. Impuro: HTTP + disco + API Anthropic.
comfyui
comfyui-skill
pipelines
mixer
txt2img
lora
ipadapter
controlnet
facedetailer
judge
launcher
comfyui_build_txt2img_workflow_py_ml
comfyui_load_skill_py_ml
comfyui_build_skill_workflow_py_ml
comfyui_compose_capabilities_py_ml
comfyui_submit_workflow_py_ml
comfyui_wait_result_py_ml
comfyui_fetch_output_image_py_ml
comfyui_judge_image_py_ml
false error_py_core
comfyui_build_txt2img_workflow_py_ml
comfyui_compose_capabilities_py_ml
comfyui_submit_workflow_py_ml
comfyui_wait_result_py_ml
comfyui_fetch_output_image_py_ml
comfyui_judge_image_py_ml
name desc
base Workflow base: dict (API format ya construido), la cadena 'txt2img' (construye con checkpoint+subject), o un slug de skill guardada (carga su receta y la compila con subject).
name desc
subject Sujeto/prompt principal. En 'txt2img' es el prompt positivo; en una skill sustituye {subject} en el scaffold.
name desc
capabilities Dict de capacidades a mezclar tal cual las acepta comfyui_compose_capabilities: {loras, controlnet, ipadapter, hires, facedetailer}. Ausentes/None = desactivadas. None = solo el base. keyword-only.
name desc
server host:port del servidor ComfyUI (sin esquema). keyword-only.
name desc
dest Directorio local donde guardar el PNG (None = cwd). keyword-only.
name desc
seed Semilla de generacion. keyword-only.
name desc
judge Si True, puntua el PNG con el panel comfyui-judge. keyword-only.
name desc
checkpoint Checkpoint para base='txt2img' (obligatorio en ese caso). keyword-only.
name desc
negative Prompt negativo para base='txt2img'. keyword-only.
name desc
library_dir Raiz de la libreria de skills (base = slug). keyword-only.
name desc
wait_timeout Segundos maximos esperando al servidor. keyword-only.
dict {ok, base, prompt_id, image_path, prompt_resolved, capabilities_active, judge, error}. capabilities_active = lista de capacidades activadas (evidencia de la mezcla). judge = {verdict, score, votes} o None. Si falla un paso, ok=False y error explica cual. false
python/functions/pipelines/comfyui_generate_mixed_oneshot.py

comfyui_generate_mixed_oneshot

One-shot del mixer del grupo comfyui-skill: de un workflow base + un conjunto de capacidades activables a un PNG ya puntuado por el panel comfyui-judge, en una llamada. El bucle del juez afina qué capacidades y pesos dan mejor resultado.

Ejemplo

import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from pipelines.comfyui_generate_mixed_oneshot import comfyui_generate_mixed_oneshot

# txt2img dreamshaper + 2 LoRAs + FaceDetailer (3 capacidades), juzgado:
res = comfyui_generate_mixed_oneshot(
    "txt2img",
    "a heroic knight in 3d render style, dramatic lighting",
    checkpoint="dreamshaper_8.safetensors",
    capabilities={
        "loras": [
            {"name": "SD15_3d_render_redmond.safetensors", "strength_model": 0.9},
            {"name": "SD15_detail_tweaker.safetensors", "strength_model": 0.5},
        ],
        "facedetailer": {"denoise": 0.45},
        # "ipadapter": {"ref_image": "face.png", "mode": "faceid"},  # activar/desactivar
        # "hires": {"upscale_by": 1.5},
    },
    dest="/tmp/comfy_mixed", seed=42, judge=True,
)
print(res["ok"], res["prompt_id"], res["capabilities_active"], res["judge"])

Cuando usarla

Cuando quieras generar mezclando varias capacidades y obtener de vuelta el PNG ya puntuado, en una sola llamada — para iterar (activar/desactivar/ajustar capacidades) guiado por el score del juez. Es la promocion a one-shot de compose_capabilities + el ciclo submit/wait/fetch/judge.

Gotchas

  • Impuro: necesita el servidor ComfyUI vivo (server) y, si judge=True, la API Anthropic para el juez critico. Las imagenes de referencia/control de IPAdapter y ControlNet deben estar en el input/ del servidor antes de llamar.
  • base='txt2img' exige checkpoint. Un slug de skill exige que la skill exista en library_dir. Un base dict se usa tal cual.
  • Hereda la limitacion del mixer: hires + facedetailer juntos no encadenan (ver comfyui_compose_capabilities). Activa uno U otro.
  • En 8GB lowvram, apilar muchas capacidades (IPAdapter FaceID + ControlNet + hires
    • facedetailer) puede dar OOM y wait devolvera el error del servidor: baja resolucion (width/height via un base dict) o reduce capacidades.
  • Si el juez falla pero la imagen se genero, ok=True con error describiendo el fallo del panel (la imagen no se pierde).