Vai alla navigazione

Guida rapida ai template

Esegui dal tuo codice un template creato in ElevenCreative Flows.

In questo tutorial eseguirai un template pubblico da uno script Python o TypeScript. Il template trasforma una foto informale di un capo di abbigliamento scattata con il telefono in una pulita foto prodotto, e lo script salva il risultato accanto all’originale. Il tutorial richiede circa cinque minuti, di cui l’esecuzione stessa dura meno di un minuto.

Foto da telefono e packshot

A sinistra: la foto che invii. A destra: il packshot che ricevi.

Un template è un ElevenCreative Flow pubblicato: una catena di modelli che riceve un insieme fisso di input e produce un insieme fisso di output. Quello che eseguirai, Foto da telefono a packshot, riceve un’immagine e restituisce un’immagine. Il suo autore ha già scelto i modelli e i prompt, quindi il tuo codice deve solo passare la foto.

Per eseguire un template è necessario un piano Pro o superiore.

Configurazione

1

Crea una chiave API

Crea qui una chiave API nella dashboard, che userai per accedere all’API in modo sicuro.

Archivia la chiave come secret gestito e passala agli SDK come variabile d’ambiente tramite un file .env oppure direttamente nella configurazione della tua app, a seconda delle tue preferenze.

.env
ELEVENLABS_API_KEY=<your_api_key_here>

Assegna alla chiave l’autorizzazione Immagini e Video.

2

Installa l'SDK

Useremo anche la libreria dotenv per caricare la nostra chiave API da una variabile d’ambiente.

pip install elevenlabs
pip install python-dotenv
3

Scarica una foto

Scarica la foto di esempio nella cartella in cui creerai lo script:

curl -o garment.jpg https://storage.googleapis.com/eleven-public-cdn/documentation_assets/templates/garment.jpg

Trova il codice del template

Apri Foto da telefono a packshot nell’app ElevenLabs e seleziona la scheda API. Ogni template ne ha una, con il codice per eseguirlo in cURL, Python e TypeScript.

Scheda API del template

La scheda API nella pagina del template, con lo snippet Python.

La scheda illustra tre passaggi: ottenere una chiave API, scegliere come ricevere il risultato ed eseguire il template. In Scegli come ricevere il risultato, l’opzione Attendi il risultato è selezionata per impostazione predefinita. Il codice del terzo passaggio si apre su cURL; seleziona Python o TypeScript e il passaggio diventa Esegui e attendi il risultato. Il relativo snippet avvia un’esecuzione, ne attende il completamento e stampa ogni output. Passa un valore in inputs per ogni input del template, identificato dall’id dell’input, e legge ogni risultato da outputs tramite l’id dell’output. Questo template ha un input, garment_photo, e un output, packshot. Questi due id sono gli unici nomi necessari al tuo codice.

Esegui il template

Crea packshot.py o packshot.mts. È lo snippet della scheda API con queste modifiche:

  • La chiave API viene caricata dal file .env.
  • La foto viene passata come base64 al posto di YOUR_ASSET_ID, l’ID di un file già caricato su ElevenLabs.
  • Lo script stampa una riga mentre l’esecuzione è in corso e salva il packshot in packshot.jpg invece di stamparne l’URL.
import base64
import os
import urllib.request
from dotenv import load_dotenv
from elevenlabs import ElevenLabs, TemplateInputReference_InlineBase64
load_dotenv()
client = ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"])
with open("garment.jpg", "rb") as f:
photo = base64.b64encode(f.read()).decode()
print("Running the template, this takes up to a minute...")
# Starts a run and waits for it to finish, checking back as often as the API
# asks. In production, receive the result by webhook instead.
run = client.flows.templates.runs.create_and_wait(
template_id="Yz4DETxRv4uXyIo5PnEy",
# Pins the version this tutorial was written against.
version_id="Kqs4nRrpndEjQ54BhbwE",
inputs={
"garment_photo": TemplateInputReference_InlineBase64(
content_base_64=photo,
mime_type="image/jpeg",
),
},
)
packshot = run.outputs["packshot"]
# Checking `type` tells your editor this output is an image, which has a content_url.
if packshot.type == "image" and packshot.status == "completed" and packshot.content_url:
urllib.request.urlretrieve(packshot.content_url, "packshot.jpg")
print("Saved packshot.jpg")
else:
print("The run failed:", packshot.failure_reason)

create_and_wait (createAndWait in TypeScript) avvia l’esecuzione, quindi ne verifica lo stato all’intervallo suggerito dall’API finché ogni output non è completato. Un’esecuzione non riuscita viene restituita, non sollevata, quindi lo script verifica lo status dell’output prima di leggerlo. version_id fissa la versione del template su cui è stato scritto questo tutorial, così una modifica successiva al template non può interrompere lo script.

Esegui lo script. Un’esecuzione di questo template usa circa 1.020 crediti, come eseguirlo nell’app.

python packshot.py

Dopo 30 secondi o un minuto, lo script stampa:

Running the template, this takes up to a minute...
Saved packshot.jpg

Apri packshot.jpg. Il capo della foto ora è su un manichino davanti a un semplice sfondo da studio, senza il letto né l’illuminazione originale.

create_and_wait è pensato per script e per provare i template. In produzione, ricevi invece le esecuzioni completate con un webhook, così la tua applicazione non mantiene aperta una richiesta mentre un’esecuzione è in corso. Esegui il template del tuo team spiega come fare.

Eseguilo con la tua foto

Scatta con il telefono una foto di qualsiasi capo di abbigliamento. Non deve essere una bella foto: va bene una t-shirt sul letto o una giacca appoggiata a una sedia. Salvala come JPEG sovrascrivendo garment.jpg ed esegui di nuovo lo script.

Otterrai un packshot del tuo capo con lo stesso stile da studio, perché ogni esecuzione di un template passa attraverso gli stessi modelli e le stesse impostazioni. I dettagli possono comunque variare tra un’esecuzione e l’altra, anche con la stessa foto.

Cosa hai imparato

  • Un template riceve input con nome e produce output con nome, e la sua scheda API mostra il codice per eseguirlo.
  • flows.templates.runs.create_and_wait avvia un’esecuzione con un valore per ogni id di input e restituisce il risultato una volta completata. Leggi ogni output tramite il suo id e ne verifichi lo status.
  • In produzione, un webhook consegna ogni esecuzione completata, quindi non è necessario attendere.

Passaggi successivi