Vai al contenuto principale

Esegui la tua LoRA su un'API ospitata: un URL invece di una coda di caricamento

Esegui una LoRA addestrata su un'API Qwen Image ospitata via URL: senza upload, script pronto, prezzi per immagine e link che falliscono subito o tardi.

Autore
SpicyAPI Engineering
Pubblicato
Lettura
15 min di lettura
Aggiornato
Una serra ad acquerello vista dall'esterno al crepuscolo, luce calda dietro il vetro appannato, neve sui telai e una bicicletta appoggiata alla porta

Un esempio pubblicato di LoRA Qwen Image 2.1: un peso di stile caricato tramite il campo loras.

Hai una LoRA addestrata in .safetensors in un bucket o in un repository Hugging Face e vuoi usarla senza registrarla, caricarla o attendere un'approvazione. Su Qwen Image 2.1 LoRA è un campo della richiesta: un URL e un numero di intensità, scaricati quando l'attività viene eseguita. Il modello gira senza censura e i pesi a cui punti non vengono esaminati.

Questo elimina la coda di caricamento e sposta una dipendenza nel percorso della richiesta: l'host che serve i tuoi pesi. Qui sotto: come provare il tuo file nel Playground, il codice per eseguirlo, quali link difettosi falliscono subito e quali più tardi, e quanto costa.

I punti essenziali

  • Una LoRA è un campo della richiesta, non qualcosa che registri. loras accetta fino a tre voci {path, scale}; nulla viene caricato, scansionato o approvato.
  • Entrambi gli endpoint la accettano, da testo a immagine e modifica per riferimento, quindi i pesi si possono applicare anche a fotogrammi che possiedi già.
  • Alcuni link difettosi falliscono subito, altri solo dopo che l'attività è stata accettata. Una pagina web invece di un file dà un 400; un host morto o un link che scade più avanti viene accettato e fallisce dopo, con la trattenuta rimborsata.
  • Caricare non è lavorare. Confronta con un'esecuzione senza pesi, stesso prompt e stesso seed.
  • Il numero di LoRA non cambia il prezzo; nella modifica cambia il numero di immagini di riferimento.

Provalo prima nel Playground

  1. Apri la pagina da testo a immagine e resta nella scheda Playground, in vista Form. Accedi con un account con saldo per eseguire.
  2. Scrivi un prompt che descriva la scena, non lo stile; lascia che siano i pesi a portare l'aspetto.
  3. Sotto Style LoRAs incolla il link diretto del file in LoRA file e imposta Strength (1 è un avvio normale). Add item ti dà fino a tre pesi.
  4. Scegli 1k per una prima occhiata economica, poi esegui il modello.
  5. Per vedere se i pesi hanno fatto qualcosa, imposta un Seed, esegui una volta, premi Remove item ed esegui di nuovo con lo stesso prompt e lo stesso seed.

Il corpo della richiesta del Playground è lo stesso JSON che l'API accetta, quindi una configurazione che funziona qui si copia direttamente nel codice. Se fallisce qui, sistema il link o i pesi prima di scrivere una riga di codice.

Poi eseguilo dal codice

Installa l'SDK Python (pip install spicyapi), imposta SPICY_API_KEY nell'ambiente del tuo server ed esegui:

python
import uuid
from spicyapi import SpicyClient, output_assets

client = SpicyClient()  # reads SPICY_API_KEY from the environment

task = client.create_task(
    model="alibaba/qwen-image-2.1-lora/text-to-image",
    input_data={
        "prompt": "A fishing harbour at first light, rowing boats at their moorings, "
                  "the far quay dissolving into mist over the water.",
        "loras": [{
            "path": "https://huggingface.co/your-account/your-style-lora/resolve/<commit-sha>/style.safetensors",
            "scale": 1,
        }],
        "aspect_ratio": "3:2",
        "resolution": "1k",
        "output_format": "webp",
    },
    idempotency_key=str(uuid.uuid4()),
)

final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
    raise RuntimeError(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
print(output_assets(final)[0]["url"])  # copy the image to your own storage now

Creazione, attesa, download, tentativi e codici di errore sono coperti nella guida alle attività e nel riferimento dell'SDK Python. I risultati scadono, quindi consulta conservazione e consegna prima di costruireci sopra il link restituito.

Oppure fai eseguire a un agente

Quando un assistente deve eseguire le generazioni, tutti e tre gli strumenti ufficiali mostrano il prezzo e chiedono conferma prima di una chiamata a pagamento.

  • CLI. Metti lo stesso oggetto input in input.json, poi:

``bash spicyapi tasks create --model alibaba/qwen-image-2.1-lora/text-to-image --input-file input.json --wait ``

Vedi la documentazione della CLI; npx @spicyapi/cli funziona senza installazione.

  • Server MCP. Aggiungi il server MCP al tuo assistente, poi chiedi: "Esegui Qwen Image 2.1 LoRA con questo prompt e questo link dei pesi a intensità 1." Chiama spicyapi_task_create, che si ferma per la tua conferma del prezzo, poi spicyapi_task_wait.
  • Skill. npx skills add spicyapi-ai/spicy-skill installa l'Agent Skill, che fa leggere a un assistente di programmazione lo schema del modello in tempo reale invece di indovinare i campi.

L'array loras

loras accetta fino a tre voci { "path", "scale" } su entrambi gli endpoint, da testo a immagine e modifica per riferimento (da 1 a 10 immagini).

ProprietàValorePerché conta
Voci per richiestaFino a 3Una quarta viene rifiutata subito: loras: must contain at most 3 items
pathLink HTTPS diretto a un file .safetensorsScaricato al momento della generazione, a ogni attività, da dove ospiti il file
scaleDa 0 a 4, predefinito 1Intensità rispetto al modello base; 1 è l'intensità di partenza tipica. Sopra 4 viene rifiutato
  • Usa un link di file, non una pagina di repository. Un URL di repository Hugging Face o una pagina blob/main/... viene rifiutato. Usa il link resolve/... al file stesso.
  • Non c'è un registro. Non ottieni mai un identificatore per un peso e non esiste un elenco di "le mie LoRA". Il seed stabilizza una serie ma non riproduce un fotogramma, quindi salva l'elenco {path, scale}, il prompt, le impostazioni e l'ID attività accanto a ogni output.

Scegli pesi documentati come compatibili con il compito esatto. Gli esempi pubblicati di Qwen Image 2.1 includono adattatori di generazione 2512 e adattatori di modifica Edit 2511/2509, quindi una versione più vecchia nel nome del file non rende il file incompatibile di per sé. Quei compiti più vecchi sono disponibili anche tramite Qwen Image 2512 LoRA, e la nostra guida Qwen Image 2.1 LoRA copre quali file vecchi restano validi.

Quando invii i pesi, l'API prova il link. Se l'host risponde e ciò che torna non è un file, ottieni un 400 prima che esista qualsiasi attività e prima che venga trattenuto del denaro:

Il tuo pathRisultato
Link diretto a un file su un host che risponde (un link resolve/... di Hugging Face, il tuo bucket)Accettato
Un file che restituisce 404400: The LoRA link in loras does not lead to a file on <host>. Use the direct download link to the .safetensors file, not the model's web page
Una pagina web invece di un file (pagina di repository, pagina blob/, qualsiasi HTML)Lo stesso 400
Un percorso Hugging Face privato o inesistente400: needs a sign-in on huggingface.co, so the model cannot download it
Un host che non risolve, testo che non è un URL o un nome user/repo seccoAccettato dal preventivo; può fallire dopo l'accettazione
Un link che funziona ora e smette di funzionare più tardiAccettato; fallisce dopo l'accettazione

Le immagini di riferimento dell'endpoint di modifica ricevono lo stesso trattamento: un file image_urls mancante è un 400 che nomina l'host.

Le due righe accettate sono quelle contro cui devi proteggerti. Un link che muore in seguito (un link firmato scaduto, un repository diventato privato, un file rinominato o eliminato) fa fallire ogni richiesta che lo referenzia, perché i pesi vengono scaricati a ogni attività. In base al nostro test di ottobre 2026, un'attività il cui host dei pesi non risolveva è stata accettata ed è fallita subito (circa 3 secondi) con invalid_request; la trattenuta è stata rimborsata (cost era 0, settled era true) e il messaggio diceva che una LoRA non era stata caricata dal link fornito. invalid_request è anche ciò che restituisce un input sbagliato, quindi il codice da solo non indica il link, e con più pesi il messaggio non nomina la voce. Prepara la diagnosi prima di averne bisogno: dopo un preventivo accettato, un errore invalid_request significa controllare prima gli URL dei pesi.

Isola il problema svuotando l'array

Quando un'attività accettata fallisce, invia la stessa richiesta una volta con loras vuoto e senza cambiare altro. Un successo indica l'adattatore, il suo caricamento o la sua interazione con la richiesta; controlla link, formato del file, compatibilità e stack uno alla volta. Un secondo fallimento rende il codice di errore dell'attività, le immagini di origine e lo stato del servizio i controlli successivi.

Tieni un peso canarino

Tieni un piccolo file di pesi che ospiti tu stesso, che non ruoti mai e il cui effetto è inequivocabile, come un peso di stile marcato. Quando un batch inizia a fallire, esegui una generazione con il canarino. Se funziona, sospetta del tuo URL dei pesi. Se fallisce anche quella, controlla l'errorCode dell'attività e lo stato del servizio prima di toccare le impostazioni di archiviazione.

Verifica al momento del deploy, non a ogni richiesta

Esegui un preventivo gratuito (spicyapi tasks quote --model alibaba/qwen-image-2.1-lora/text-to-image --input-file input.json) per ogni URL di pesi che la tua configurazione referenzia, nella pipeline di deploy e all'avvio del servizio. Coglie link chiaramente inutilizzabili, non la compatibilità dell'adattatore. Non chiedere un preventivo prima di ogni generazione: aggiunge latenza e il link può comunque morire un minuto dopo.

Fissa l'indirizzo perché non possa spostarsi

  • Hugging Face: resolve/main/... segue un branch. Fissa il commit: resolve/<commit-sha>/<file>.safetensors.
  • Il tuo archivio: metti un hash del contenuto nella chiave, come character-v7-4f9c81.safetensors, e non sovrascrivere mai una chiave.
  • URL firmati che scadono: evitali in configurazioni di lunga durata. Per attività ricorrenti usa un indirizzo stabile, oppure genera un link fresco poco prima di ogni invio che sopravviva all'attività e a ogni tentativo.
  • Repository di terze parti: gli autori possono rinominare, limitare o eliminare un repository in qualsiasi momento. Se un file è essenziale, copialo in un archivio che controlli tu, nel rispetto della sua licenza, e fissa la tua copia.

La LoRA ha fatto qualcosa?

Un dipinto puntinista di un boulevard alberato in un pomeriggio luminoso, persone che camminano sotto i platani e un carretto di fiori sul bordo della strada, costruito da punti densi di colore puro

Un esempio di stile pubblicato Qwen Image 2.1 LoRA. Mostra cosa può fare un peso di stile su un fotogramma.

La risposta non ha alcun campo che dica che i tuoi pesi sono stati applicati, quindi valuta dall'immagine. Un file può essere scaricato correttamente e comunque cambiare quasi nulla, per via di pesi incompatibili, una frase di attivazione mancante, una scala debole o adattatori che si sovrappongono.

  1. Scegli un prompt il cui fallimento è evidente: un soggetto che il modello base rende in modo fotografico, con uno stile che il peso dovrebbe imporre.
  2. Descrivi la scena, non lo stile. Chiedi "loose impressionist brushwork" e il prompt da solo lo produce, quindi darai il peso per funzionante. Lascia che sia il file a portare l'aspetto.
  3. Esegui lo stesso prompt e lo stesso seed senza pesi e confronta. Se il risultato è indistinguibile, il confronto non ha mostrato un effetto visibile dell'adattatore.
  4. Cambia un valore alla volta: scala 1, poi 2, poi 3. Un peso che diventa visibilmente più forte era semplicemente debole; uno che resta inerte a ogni passaggio è probabilmente costruito per un'altra base. Controlla anche il modello base e le parole di attivazione consigliate dall'autore.
  5. Scrivi il verdetto accanto all'URL e tieni i pesi conformi e non conformi in elenchi separati.

I pesi vengono scaricati prima della generazione, quindi la prima chiamata con un file nuovo è più lenta di decine di secondi, di più per i file grandi (circa 25 secondi in più per un file da 1.2 GB). Prevedi da 90 a 120 secondi per la chiamata a freddo.

Tre slot

Tre voci coprono lo stack abituale: un peso di personaggio che sostiene la persona, un peso di stile di casa a intensità più bassa, un peso di dettaglio per pelle o tessuto.

  • Sposta una scala per esecuzione. Se ne cambi due, non puoi attribuire il risultato.
  • Lascia spazio ai pesi di supporto. Un peso di stile alla stessa intensità del peso di personaggio tende a combatterlo; imposta la voce di supporto ben sotto 1.
  • Non ripetere nel prompt ciò che un peso porta già.
  • Questa famiglia non ha prompt negativo. Metti le esclusioni nel prompt.

Quanto costa

I prezzi sono per immagine:

Endpoint1k1.5k2k
Da testo a immagine$0.03$0.054$0.102
Modifica, 1 riferimento$0.042$0.078$0.15
  • Il numero di LoRA non cambia il prezzo. Una voce e tre hanno lo stesso preventivo.
  • Il caricamento dei pesi ha un sovrapprezzo rispetto al modello base. Qwen Image 2.1 senza l'array costa $0.024 a 1k e $0.048 a 2k, quindi un'attività che non ha bisogno di pesi dovrebbe chiamare la famiglia base.
  • Nella modifica ogni immagine di riferimento in più aggiunge un importo fisso: $0.012 a 1k e $0.024 a 2k.
Richiesta di modifica1k2k
1 riferimento$0.042$0.15
2 riferimenti$0.054$0.174
5 riferimenti$0.09$0.246
10 riferimenti$0.15$0.366

In breve: la richiesta che costa di più è quella con molte immagini di riferimento a 2k, non quella con tre LoRA.

Cento fotogrammi da testo a immagine costano $3.00 a 1k e $10.20 a 2k; cento modifiche con dieci riferimenti a 2k costano $36.60. Itera a 1k e porta i migliori a 2k.

Modifica con pesi

Applica un peso di personaggio a un fotogramma che hai già approvato, con un peso di stile di casa sotto a intensità più bassa:

json
{
  "model": "alibaba/qwen-image-2.1-lora/edit",
  "input": {
    "prompt": "The source image is the character. Keep her face, her hair and the cut of the coat exactly as they are. Restage her on a wet city street at night, lit by shop windows from the left.",
    "image_urls": ["https://cdn.example.com/approved/frame-0412.png"],
    "loras": [
      { "path": "https://cdn.example.com/weights/character-v7-4f9c81.safetensors", "scale": 1 },
      { "path": "https://cdn.example.com/weights/house-grade-v2-0ab3de.safetensors", "scale": 0.45 }
    ],
    "aspect_ratio": "4:5",
    "resolution": "2k"
  }
}

Invialo con lo stesso codice, usando alibaba/qwen-image-2.1-lora/edit come modello. Copia i valori dei campi dallo schema in tempo reale della pagina del modello; la guida alla generazione di immagini spiega come differiscono gli endpoint immagine.

Pesi senza censura e di categorie limitate

Questa famiglia è senza censura: non c'è un flag di maturità, non c'è revisione dei pesi a cui punti e non c'è scansione dei contenuti aggiunta da SpicyAPI. I tuoi obblighi non cambiano: solo adulti, pesi e dati di addestramento che hai diritto di usare, nessun minorenne in alcun input o output, nessuna immagine intima non consensuale e nessuna impersonazione ingannevole di una persona reale identificabile.

Prossimi passi

Per il modello base, vedi il nostro test di Qwen Image 2.1; per la modifica senza campo maschera, il nostro test di Qwen Image Edit. Il catalogo più ampio dei modelli immagine elenca lo schema in tempo reale e la stima di ogni modello.

Domande frequenti

Posso eseguire la mia LoRA su un'API senza caricarla?

Sì. loras accetta fino a tre voci {path, scale}, dove path è un link diretto a un file .safetensors. Non esistono endpoint di caricamento, code di approvazione né liste di autorizzazione.

Sì, nella forma https://huggingface.co/<user>/<repo>/resolve/<commit-sha>/<file>.safetensors. Le pagine di repository, le pagine blob/ e i percorsi privati o mancanti vengono rifiutati.

Perché la mia richiesta LoRA è fallita senza un errore utile?

Nella maggior parte dei casi il path non funzionava più dopo che l'attività era stata accettata. Un host morto, un link firmato scaduto o un repository diventato privato fallisce con invalid_request, che restituisce anche un input sbagliato, quindi il codice da solo non nomina il link. La trattenuta viene rimborsata. Isola il problema con loras vuoto, oppure controlla prima gli URL dei pesi.

La mia LoRA cambia appena l'immagine. Cosa c'è che non va?

Controlla la compatibilità dichiarata, la frase di attivazione e la scala; poi confrontala da sola, senza le altre voci. I vecchi file Qwen non sono tutti incompatibili: diversi sono usati negli esempi pubblicati di questo endpoint. Segui i passaggi di scala qui sopra prima di scartare il file.

Quante LoRA posso impilare e impilarle costa di più?

Tre per richiesta, ognuna con la propria intensità. Una quarta viene rifiutata subito. Una voce e tre hanno lo stesso prezzo, quindi scegli i pesi che ti servono, non meno. Nella modifica è il numero di immagini di riferimento a far muovere il prezzo.

Posso usare una LoRA modificando un'immagine esistente?

Sì. L'endpoint di modifica accetta lo stesso array loras con da una a dieci immagini di riferimento. Invia il fotogramma approvato come riferimento, di' nel prompt cosa deve cambiare e lascia che i pesi portino l'identità.

Cosa fa scale e cosa devo impostare?

Pesa la LoRA rispetto al modello base, da 0 a 4, con 1 come intensità di partenza tipica. Sotto 1 l'aspetto resta più discreto, sopra 1 un peso domina.

Come riproduco un'immagine fatta con un certo stack?

Salva lo stack. Non c'è un registro e il seed non riproduce un fotogramma, quindi conserva l'elenco {path, scale}, il prompt e le impostazioni accanto all'output, con ogni percorso fissato a un indirizzo che non può spostarsi.

Anche in English · 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Русский · Polski

Provalo tu stesso

Paghi solo quello che esegui: nessun piano, nessun abbonamento.

Creato con MiniMax H3 · ByteDance Seedance 2.0 Fast