Hoppa till navigering

Kom igång med mallar

Kör en mall som skapats i ElevenCreative Flows från din egen kod.

I den här guiden kör du en offentlig mall från ett Python- eller TypeScript-skript. Mallen förvandlar ett vanligt mobilfoto av ett klädesplagg till en ren produktbild, och skriptet sparar resultatet bredvid originalet. Guiden tar ungefär fem minuter, varav själva körningen tar mindre än en minut.

Mobilfoto och produktbild

Vänster: fotot du skickar. Höger: produktbilden du får tillbaka.

En mall är ett publicerat ElevenCreative Flow: en kedja av modeller som tar en fast uppsättning indata och producerar en fast uppsättning utdata. Den du ska köra, Phone Photo to Packshot, tar en bild och returnerar en bild. Dess skapare har redan valt modellerna och prompterna, så din kod behöver bara skicka fotot.

För att köra en mall behöver du en Pro-plan eller högre.

Konfigurera

1

Skapa en API-nyckel

Skapa en API-nyckel i kontrollpanelen här, som du använder för att säkert få åtkomst till API:et.

Spara nyckeln som en hanterad hemlighet och skicka den till SDK:erna antingen som en miljövariabel via en .env-fil eller direkt i appens konfiguration, beroende på vad du föredrar.

.env
ELEVENLABS_API_KEY=<your_api_key_here>

Ge nyckeln behörigheten Image & Video.

2

Installera SDK:t

Vi använder också biblioteket dotenv för att läsa in vår API-nyckel från en miljövariabel.

pip install elevenlabs
pip install python-dotenv
3

Hämta ett foto

Ladda ner exempelfotot till mappen där du ska skapa ditt skript:

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

Hitta mallens kod

Öppna Phone Photo to Packshot i ElevenLabs-appen och välj fliken API. Varje mall har en sådan, med kod för att köra den i cURL, Python och TypeScript.

Mallens API-flik

API-fliken på mallens sida, som visar Python-kodexemplet.

Fliken guidar dig genom tre steg: hämta en API-nyckel, välj hur du vill få resultatet och kör mallen. Under Välj hur du vill få resultatet är Vänta på resultatet valt som standard. Koden i det tredje steget öppnas i cURL; välj Python eller TypeScript, så blir steget Kör och vänta på resultatet. Kodexemplet startar en körning, väntar på att den ska bli klar och skriver ut varje utdata. Det skickar ett värde under inputs för var och en av mallens indata, med indatats id som nyckel, och läser varje resultat från outputs med utdatats id. Den här mallen har en indata, garment_photo, och en utdata, packshot. Dessa två id:n är de enda namn din kod behöver.

Kör mallen

Skapa packshot.py eller packshot.mts. Det är kodexemplet från API-fliken med följande ändringar:

  • API-nyckeln läses in från din .env-fil.
  • Fotot skickas som base64 i stället för YOUR_ASSET_ID, id:t för en fil som redan har laddats upp till ElevenLabs.
  • Skriptet skriver ut en rad medan körningen pågår och sparar produktbilden till packshot.jpg i stället för att skriva ut dess 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 i TypeScript) startar körningen och kontrollerar sedan statusen med det intervall som API:t föreslår tills alla utdata är klara. En körning som misslyckas returneras i stället för att kasta ett fel, så skriptet kontrollerar utdatats status innan det läser det. version_id låser versionen av mallen som den här guiden skrevs för, så att en senare ändring av mallen inte kan göra att skriptet slutar fungera.

Kör skriptet. En körning av den här mallen använder ungefär 1 020 krediter, samma som när du kör den i appen.

python packshot.py

Efter 30 sekunder till en minut skriver skriptet ut:

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

Öppna packshot.jpg. Plagget från fotot är nu på en provdocka mot en enkel studiobakgrund, utan sängen och belysningen.

create_and_wait är för skript och för att testa mallar. I produktion bör du i stället ta emot slutförda körningar med en webhook, så att din applikation inte håller en begäran öppen medan en körning pågår. Kör ditt teams mall visar hur.

Kör den med ditt eget foto

Ta ett foto av valfritt klädesplagg med mobilen. Det behöver inte vara ett bra foto: en t-shirt på sängen eller en jacka över en stol fungerar. Spara det som en JPEG ovanpå garment.jpg och kör skriptet igen.

Du får en produktbild av ditt plagg med samma studiokänsla, eftersom varje körning av en mall använder samma modeller och inställningar. Detaljerna kan ändå variera mellan körningar, även med samma foto.

Det här har du lärt dig

  • En mall tar namngivna indata och producerar namngivna utdata, och dess flik API visar koden som kör den.
  • flows.templates.runs.create_and_wait startar en körning med ett värde per indata-id och returnerar när den är klar. Du läser varje utdata med dess id och kontrollerar dess status.
  • I produktion levererar en webhook varje slutförd körning, så att inget behöver vänta på den.

Nästa steg