Cambian los valores por defecto de imagen para suscriptores: Krea 2 Medium Turbo, con FAL detrás

Tienes una suscripción de pago, un día le pides a Hermes una ilustración y el resultado se ve bien, pero no encuentras en ningún sitio de los ajustes qué modelo la dibujó. La razón es simple: nunca abriste la vía de imagen en hermes tools, así que la imagen vino del valor por defecto del primer arranque, y ese valor solía ser el FLUX 2 Klein 9B de FAL.
Había una segunda molestia más pequeña al lado. Le entregaste una imagen de referencia y le pediste al modelo que dibujara algo con ese estilo. En su lugar, hizo una pasada de visión sobre la imagen y escribió una larga descripción de estilo en el prompt, porque el esquema le decía que querías editar esa imagen. Krea 2 no edita nada: copia el aspecto.
Un cambio fusionado en esta ventana arregla ambas cosas.
El valor por defecto se escribe bajo una condición muy estrecha
La nueva regla en una frase: una cuenta de pago usa Krea 2 Medium Turbo por defecto, pero solo cuando la sección de imagen nunca se configuró, no tiene ningún modelo almacenado y la cuenta tiene realmente derecho a Krea.
Cada matiz se gana su lugar:
- «Nunca configurada»: si alguna vez elegiste un modelo en
hermes tools, no se sobrescribe nada. Esa es la propiedad más importante aquí: esto no es «cambiar un valor por defecto», es «dar un mejor punto de partida a quien nunca eligió». - «Cuenta de pago»: el pool gratuito no tiene derecho a Krea, así que conserva el valor por defecto de FAL. A los usuarios gratuitos no se les entrega un modelo que no pueden usar.
- «Con derecho a Krea»: la comprobación de derecho y la escritura son la misma regla (
_krea_image_default), y la aplicación del valor por defecto del gateway en el primer arranque usa esa misma regla, así que no hay una segunda copia de la lógica que pueda desviarse.
Del lado del plugin de Krea, krea-2-medium-turbo es ahora una entrada de esta forma (plugins/image_gen/krea/__init__.py):
"krea-2-medium-turbo": { path: "medium-turbo", price: "$0.015 (text) / $0.0175 (style refs)", upscale: false }
En términos llanos: unos 0.015 dólares por generación solo de texto, unos 0.0175 dólares con referencias de estilo, y sin pasada implícita de upscale.
Una imagen de referencia copia un estilo; no edita una foto
Esta es la mitad del cambio con el efecto más directo sobre la calidad. El esquema de image_generate solía describir image_url como una imagen fuente a editar y las imágenes de referencia como guías de esa edición. Lee ese texto y Krea 2 hacía lo razonable: una llamada de visión sobre la imagen, y luego una larga descripción de estilo escrita en el prompt.
Ahora un provider puede declarar, en sus capabilities:
def capabilities(self) -> dict:
return { ..., "source_image_role": "style" }
Una vez declarado como style, el texto del esquema cambia: se copia el aspecto de la imagen, no se edita; prompt pide el sujeto y la escena, y las referencias solo aportan el aspecto. Cualquier otro backend renderiza exactamente el esquema que renderizaba antes: el interruptor es estrictamente por backend.
La diferencia práctica se ve de inmediato. Dale una referencia de acuarela y antes obtenías un párrafo de «acuarela, húmedo sobre húmedo, grano de papel…» inyectado en tu prompt. Ahora el modelo simplemente pinta con el aspecto de la imagen que le diste.
Cuándo recae en FAL y cuándo no debe
El fallback no es «a Krea le pasa algo, reejecutemos todo». Tiene una regla de admisión deliberadamente estrecha, y el requisito central es que la petición demuestre que no creó ningún trabajo:
Elegibles:
- La conexión nunca se estableció (un fallo de DNS o una conexión rechazada): ningún servidor llegó a aceptar la petición.
- El gateway respondió 429, que documenta como «no se creó ningún trabajo».
Nunca elegibles:
- Una conexión cortada después de enviar, un timeout, un 5xx, cualquier otro 4xx, JSON no parseable, y cualquier cosa que ocurra después de que exista un id de trabajo: en esos casos el trabajo puede existir y ya se autorizó el cobro, así que reejecutar pagaría dos veces.
- Las peticiones que llevan imágenes fuente nunca recaen en fallback, porque FAL las enrutaría a un endpoint de edición con una semántica distinta.
Para distinguir «nunca se conectó» de «se cortó después de enviar», los fallos de conexión ahora se reportan como unreachable (en plugins/image_gen/_common.py), por separado de un corte tras el envío.
Tras un fallback, el resultado dice qué pasó
Una reejecución nunca es silenciosa. El resultado de la herramienta lleva:
| Campo | Significado |
|---|---|
provider / model |
quién lo ejecutó realmente |
fallback_from |
de qué modelo (normalmente el de Krea) viene |
fallback_reason |
por qué se disparó la reejecución |
note |
una explicación de una línea; si FAL también falló, la nota dice que el fallback también falló |
Dos detalles que conviene conocer:
- Un upscale que le pediste a Krea se mantiene en la reejecución, donde significa el Clarity Upscaler de FAL, y la nota lo dice.
- En una instalación que nunca usó FAL, el primer fallback instala la función opcional de FAL de Hermes, con un prompt en una terminal y en silencio en los demás casos, igual que cualquier primer uso de FAL.
Desactivar el fallback
image_gen:
krea:
fallback_to_fal: false # no reejecutar en FAL un envío fallido a Krea
La clave significa «activado por defecto, desactivado solo cuando se pone explícitamente en false» (fallback_to_fal_enabled()). Si para ti el cobro predecible importa más que «sacar una imagen de todos modos», desactivarlo es una decisión razonable.
Comprobar qué ejecutas en realidad
# ver la elección actual de la vía de imagen
hermes tools
# lo que la config guarda para generación de imágenes
hermes config get image_gen
# genera una vez y lee los campos provider / model del resultado
hermes chat -q "generate an image of a mountain lake at dusk"
Si hermes tools muestra un modelo que elegiste tú mismo, este cambio no lo toca. Si ves krea-2-medium-turbo (de pago) o el valor por defecto de FAL (pool gratuito), estás en el nuevo valor por defecto.
Para la selección de backend y el enrutado en la vía de imagen, consulta la guía de enrutado de imagen y visión; para controlar el contexto de visión, mira la guía del presupuesto de visión.