Przejdź do nawigacji

Szybki start z szablonami

Uruchom we własnym kodzie szablon utworzony w ElevenCreative Flows.

W tym poradniku uruchomisz publiczny szablon ze skryptu w Pythonie lub TypeScripcie. Szablon zamienia zwykłe zdjęcie ubrania z telefonu w czyste zdjęcie produktowe, a skrypt zapisuje wynik obok niego. Poradnik zajmie około pięciu minut, a samo uruchomienie mniej niż minutę.

Zdjęcie z telefonu i packshot

Po lewej: wysłane zdjęcie. Po prawej: otrzymany packshot.

Szablon to opublikowany Flow ElevenCreative: łańcuch modeli, który przyjmuje stały zestaw danych wejściowych i tworzy stały zestaw danych wyjściowych. Szablon, który uruchomisz — Phone Photo to Packshot — przyjmuje jeden obraz i zwraca jeden obraz. Jego autor wybrał już modele i prompty, więc twój kod przekazuje tylko zdjęcie.

Uruchamianie szablonów wymaga planu Pro lub wyższego.

Konfiguracja

1

Utwórz klucz API

Utwórz klucz API w panelu tutaj, aby bezpiecznie uzyskać dostęp do API.

Przechowuj klucz jako zarządzany sekret i przekaż go do SDK jako zmienną środowiskową przez plik .env lub bezpośrednio w konfiguracji aplikacji — zależnie od preferencji.

.env
ELEVENLABS_API_KEY=<your_api_key_here>

Nadaj kluczowi uprawnienie Image & Video.

2

Zainstaluj SDK

Użyjemy też biblioteki dotenv, aby wczytać klucz API ze zmiennej środowiskowej.

pip install elevenlabs
pip install python-dotenv
3

Pobierz zdjęcie

Pobierz przykładowe zdjęcie do folderu, w którym utworzysz skrypt:

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

Znajdź kod szablonu

Otwórz Phone Photo to Packshot w aplikacji ElevenLabs i wybierz kartę API. Każdy szablon ją ma — zawiera kod do jego uruchomienia w cURL, Pythonie i TypeScripcie.

Karta API szablonu

Karta API na stronie szablonu z fragmentem kodu w Pythonie.

Karta prowadzi przez trzy kroki: pobranie klucza API, wybór sposobu odbioru wyniku i uruchomienie szablonu. W sekcji Choose how to get the result domyślnie wybrano Wait for the result. Kod w trzecim kroku otwiera się w cURL — wybierz Python lub TypeScript, a krok zmieni się na Run and wait for the result. Jego fragment uruchamia proces, czeka na jego zakończenie i wypisuje każde wyjście. Przekazuje po jednej wartości w inputs dla każdego wejścia szablonu, oznaczonej identyfikatorem wejścia, a każdy wynik odczytuje z outputs według identyfikatora wyjścia. Ten szablon ma jedno wejście, garment_photo, i jedno wyjście, packshot. To jedyne nazwy, których potrzebuje twój kod.

Uruchom szablon

Utwórz packshot.py lub packshot.mts. To fragment z karty API z tymi zmianami:

  • Klucz API jest wczytywany z pliku .env.
  • Zdjęcie jest przekazywane jako base64 zamiast YOUR_ASSET_ID, czyli identyfikatora pliku przesłanego już do ElevenLabs.
  • Skrypt wypisuje komunikat podczas działania procesu i zapisuje packshot jako packshot.jpg zamiast wypisywać jego 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 w TypeScripcie) uruchamia proces, a następnie sprawdza go w interwale sugerowanym przez API, aż zakończą się wszystkie wyjścia. Zakończony błędem proces jest zwracany, a nie zgłaszany jako wyjątek, więc skrypt sprawdza status wyjścia przed jego odczytem. version_id przypina wersję szablonu, dla której napisano ten poradnik, więc późniejsza edycja szablonu nie zepsuje skryptu.

Uruchom skrypt. Uruchomienie tego szablonu zużywa około 1020 kredytów — tyle samo, co w aplikacji.

python packshot.py

Po 30 sekundach do minuty skrypt wypisze:

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

Otwórz packshot.jpg. Ubranie ze zdjęcia jest teraz na manekinie, na jednolitym tle studyjnym — bez łóżka i oświetlenia.

create_and_wait służy do skryptów i testowania szablonów. W środowisku produkcyjnym odbieraj zakończone procesy przez webhook, aby twoja aplikacja nie utrzymywała otwartego żądania podczas działania procesu. Zobacz, jak uruchomić szablon swojego zespołu.

Uruchom z własnym zdjęciem

Zrób telefonem zdjęcie dowolnego ubrania. Nie musi być dobre: wystarczy t-shirt na łóżku lub kurtka przewieszona przez krzesło. Zapisz je jako JPEG pod nazwą garment.jpg i uruchom skrypt ponownie.

Otrzymasz packshot swojego ubrania w tym samym studyjnym stylu, ponieważ każde uruchomienie szablonu przechodzi przez te same modele i ustawienia. Szczegóły mogą się jednak różnić między uruchomieniami, nawet dla tego samego zdjęcia.

Czego się nauczysz

  • Szablon przyjmuje nazwane dane wejściowe i tworzy nazwane dane wyjściowe, a jego karta API pokazuje kod, który go uruchamia.
  • flows.templates.runs.create_and_wait rozpoczyna proces z jedną wartością dla każdego identyfikatora wejścia i zwraca wynik po jego zakończeniu. Każde wyjście odczytujesz według jego identyfikatora i sprawdzasz jego status.
  • W środowisku produkcyjnym każdy zakończony proces dostarcza webhook, więc nic na niego nie czeka.

Kolejne kroki