ナビゲーションにスキップ

テンプレートクイックスタート

ElevenCreative Flowsで作成したテンプレートを、自分のコードから実行します。

このチュートリアルでは、PythonまたはTypeScriptスクリプトから公開テンプレートを実行します。このテンプレートは、服をスマートフォンで気軽に撮影した写真を、きれいな商品写真に変換し、スクリプトがその隣に結果を保存します。所要時間は約5分で、実行自体は1分未満です。

スマートフォンで撮影した写真と商品写真

左:送信する写真。右:返される商品写真。

テンプレートは、公開されたElevenCreative Flowです。固定の入力セットを受け取り、固定の出力セットを生成するモデルの連鎖です。ここで実行するPhone Photo to Packshotは、画像を1枚受け取り、画像を1枚返します。モデルとプロンプトは作成者がすでに選んでいるため、コードでは写真を渡すだけです。

テンプレートの実行には、プロ以上のプランが必要です。

セットアップ

1

APIキーを作成

ダッシュボードでAPIキーを作成し、安全にAPIへアクセスするために使用します。

キーは管理されたシークレットとして保存し、好みに応じて.envファイルによる環境変数として、またはアプリの設定で直接SDKに渡してください。

.env
ELEVENLABS_API_KEY=<your_api_key_here>

キーに画像&ビデオ権限を付与します。

2

SDKをインストール

dotenvライブラリも使用して、環境変数からAPIキーを読み込みます。

pip install elevenlabs
pip install python-dotenv
3

写真を取得

サンプル写真を、スクリプトを作成するフォルダにダウンロードします。

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

テンプレートのコードを確認

ElevenLabsアプリでPhone Photo to Packshotを開き、APIタブを選択します。すべてのテンプレートにこのタブがあり、cURL、Python、TypeScriptで実行するコードが表示されます。

テンプレートのAPIタブ

テンプレートページのAPIタブ。Pythonスニペットを表示しています。

このタブでは、APIキーの取得、結果の取得方法の選択、テンプレートの実行という3つの手順を説明します。結果の取得方法を選択では、デフォルトで結果を待機が選択されています。3番目の手順ではcURLのコードが開きます。PythonまたはTypeScriptを選択すると、手順が実行して結果を待機に変わります。このスニペットは実行を開始し、完了を待ってから各出力を表示します。テンプレートの入力ごとに、入力IDをキーとしてinputsの下に1つの値を渡し、出力IDでoutputsから各結果を読み取ります。このテンプレートには、garment_photoという入力が1つ、packshotという出力が1つあります。コードで必要な名前は、この2つのIDだけです。

テンプレートを実行

packshot.pyまたはpackshot.mtsを作成します。APIタブのスニペットに、次の変更を加えたものです。

  • APIキーを.envファイルから読み込みます。
  • ElevenLabsにすでにアップロードされているファイルのIDであるYOUR_ASSET_IDの代わりに、写真をbase64で渡します。
  • スクリプトは実行中に1行表示し、URLを表示する代わりに商品写真をpackshot.jpgとして保存します。
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(TypeScriptではcreateAndWait)は実行を開始した後、すべての出力が完了するまでAPIが推奨する間隔で状態を確認します。失敗した実行は例外として送出されずに返されるため、スクリプトでは読み取る前に出力のstatusを確認します。version_idは、このチュートリアルで使用したテンプレートのバージョンを固定します。そのため、後でテンプレートが編集されてもスクリプトは壊れません。

スクリプトを実行します。このテンプレートの実行には約1,020クレジットかかり、アプリで実行する場合と同じです。

python packshot.py

30秒から1分後、スクリプトに次のように表示されます。

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

packshot.jpgを開きます。写真の服が、無地のスタジオ背景にあるマネキンに着せられ、ベッドや照明は取り除かれています。

create_and_waitはスクリプトやテンプレートの試用向けです。本番環境では、実行中に アプリケーションがリクエストを開いたままにしないよう、代わりにwebhookで 完了した実行を受け取ります。チームのテンプレートを実行で方法を確認できます。

自分の写真で実行

スマートフォンで好きな服を撮影します。良い写真である必要はありません。ベッドの上のTシャツや、椅子に掛けたジャケットでも使えます。garment.jpgとしてJPEG形式で保存し、もう一度スクリプトを実行します。

すべてのテンプレート実行で同じモデルと設定を使用するため、同じスタジオ風の服の商品写真が得られます。ただし、同じ写真でも実行ごとに細部は異なる場合があります。

学んだこと

  • テンプレートは名前付きの入力を受け取り、名前付きの出力を生成します。そのAPIタブには実行コードが表示されます。
  • flows.templates.runs.create_and_waitは、入力IDごとに1つの値を指定して実行を開始し、完了時に戻ります。各出力はIDで読み取り、statusを確認します。
  • 本番環境では、webhookが完了した各実行を配信するため、待機は発生しません。

次のステップ