Files
fn_registry/python/functions/ml/comfyui_map_a1111_params.md
T
egutierrez 394221f8c7 feat(ml): pipeline replicar imagen desde link de Civitai
Nueva capacidad del grupo comfyui: dado el id/URL de una imagen de Civitai,
extrae cómo se generó (prompt, modelo, sampler, LoRAs) vía los endpoints tRPC
image.getGenerationData + image.get (la API v1 da meta=null), reconstruye el
workflow y lo replica en nuestro ComfyUI, sustituyendo el checkpoint ausente por
el más parecido instalado y reportando lo que falta en missing_models sin bajar
nada a ciegas. Respeta SFW.

Funciones nuevas (registry-first, componen 8 funciones existentes):
- comfyui_fetch_civitai_image_meta_py_ml (impura): observa la receta por id/URL.
- comfyui_map_a1111_params_py_ml (pura): traduce meta A1111 -> params ComfyUI,
  familia del modelo y LoRAs.
- comfyui_replicate_civitai_oneshot_py_pipelines: orquesta fetch_meta ->
  map_a1111_params -> build/embebido -> run_foreign_workflow_oneshot -> judge.

Probado en vivo (imagen SFW 23526611): receta extraída + réplica 1024x1024
generada + panel de jueces. 12 tests unitarios verdes. Capability page comfyui.md
actualizada. Report 0127.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 19:25:31 +02:00

3.6 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_map_a1111_params function py ml 1.0.0 pure def comfyui_map_a1111_params(meta: dict, resources: list | None = None) -> dict Traduce la metadata de generacion de Civitai/A1111 a parametros de ComfyUI. Mapea el sampler A1111 ('DPM++ 2M Karras') a (sampler_name='dpmpp_2m', scheduler='karras') de ComfyUI, normaliza steps/cfg/dims/seed/positive/negative a las claves que consumen los builders del registry, infiere la familia del modelo (sd15|sdxl|flux|unknown) por nombre/baseModel/recursos/dimensiones, y extrae los LoRAs tanto de los resources de Civitai como de las etiquetas <lora:nombre:peso> del prompt (sintaxis A1111, que ademas limpia del prompt). Funcion pura: sin red ni I/O.
comfyui
civitai
replicate
ml
a1111
sampler
pure
stable-diffusion
false
re
name desc
meta Dict de generacion estilo A1111/Civitai. Claves reconocidas: prompt, negativePrompt, Model/model, baseModel, sampler, steps, cfgScale, seed, Size ('WxH'), clipSkip.
name desc
resources Lista de recursos de Civitai ({modelType, modelName, weight, baseModel, ...}) para detectar checkpoint, LoRAs y familia. Opcional (None = lista vacia).
dict {sampler_name, scheduler, steps, cfg, width, height, seed, positive, negative, family, checkpoint_hint, loras, clip_skip}. Los numericos son None cuando la meta no los aporta (el caller pone defaults por familia). family in {sd15, sdxl, flux, unknown}. loras = [{name, weight, source}]. positive viene SIN las etiquetas <lora:..> (que pasan a loras). true
test_map_sampler_karras_y_ancestral
test_infer_family_sdxl_sd15_flux
test_loras_de_resources_y_tags_del_prompt
test_dims_desde_size_y_numericos
python/functions/ml/comfyui_map_a1111_params_test.py python/functions/ml/comfyui_map_a1111_params.py

Ejemplo

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

meta = {"prompt": "knight <lora:detail:0.6>", "negativePrompt": "blurry",
        "Model": "juggernautXL_v11", "sampler": "DPM++ 2M Karras",
        "steps": 30, "cfgScale": 5.5, "seed": 12345, "Size": "832x1216"}
p = comfyui_map_a1111_params(meta)
print(p["sampler_name"], p["scheduler"])   # dpmpp_2m karras
print(p["family"])                          # sdxl
print(p["loras"])                           # [{'name': 'detail', 'weight': 0.6, 'source': 'prompt_tag'}]

Cuando usarla

Cuando tengas la meta de una imagen de Civitai/A1111 (p.ej. de comfyui_fetch_civitai_image_meta) y necesites construir un workflow ComfyUI que la reproduzca: traduce sampler/scheduler/dims/loras al vocabulario de ComfyUI y te dice la familia del modelo para elegir un checkpoint compatible. Es el puente entre observar una receta y construir el workflow en comfyui_replicate_civitai_oneshot.

Gotchas

  • El mapeo de sampler cubre los comunes; un sampler raro o mal escrito cae a ('euler','normal') (fallback seguro, no falla).
  • family por dimensiones es heurística: si no hay pistas en nombres, dimensión mayor >=900 → sdxl, si no sd15. Puede equivocarse con modelos atípicos.
  • Los nombres de LoRA salen como los nombra Civitai (modelName o tag del prompt), NO como el filename .safetensors instalado — el caller debe casarlos contra los modelos del servidor.
  • Pura: no consulta el servidor ComfyUI ni valida que el checkpoint exista; eso lo hace el pipeline.