Farklı API’leri yönetmeden büyük ölçekte görüntü oluşturmayı otomatikleştirmenin en kolay yolu, iş akışını model sağlayıcıdan ayırmaktır. Her görüntü isteğini tek bir kuyruğa koyun, her işi güncel bir model kimliğine yönlendirin ve uyumlu istekleri tek bir CometAPI anahtarı ve OpenAI ile uyumlu temel URL üzerinden gönderin: https://api.cometapi.com/v1.
Bu eğitim, bu hattı Python ile kurar. Bir JSON Lines kuyruğundan ürün, reklam ve içerik işlerini kabul eder; bir model seçer; eşzamanlılığı sınırlar; geçici hataları yeniden dener; URL veya base64 tabanlı sonuçları depolar; ve iş başına kullanım ile tahmini maliyeti kaydeder. Örnek, bu üretim temel unsurlarını tek bir kompakt blokta tutar; böylece makaleyi bir kod referansına dönüştürmeden iş akışını test edebilirsiniz.
Birleşik Bir Görsel API’si Toplu Üretimi Nasıl Basitleştirir?
Sonunda iş akışı şu şekilde görünecek:
jobs.jsonl → bounded worker pool → CometAPI /v1/images/generations → object storage → manifest.jsonl
Kuyruk ve depolama katmanı size aittir. Görüntü modellerini değiştirmek, kimlik doğrulama sistemini veya ana istek yolunu değil, model değerini değiştirir. Birleşik bir görsel API’sinin pratik avantajı budur: model seçimi, ayrı bir sağlayıcı entegrasyonu yerine tek bir boru hattı içinde bir yönlendirme kararına dönüşür.
Görüntü Oluşturmayı Otomatikleştirmek İçin Ne Gerekiyor?
Python 3.10 veya üstü, requests paketi, bir CometAPI anahtarı, yazılabilir bir çıktı konumu ve en az bir güncel görüntü model kimliği gerekir.
Tek bağımlılığı yükleyin:
pip install requests
Anahtarınızı sunucuda ayarlayın; asla tarayıcı kodunda veya bir depoda değil:
export COMETAPI_KEY="your-key"
Temel URL https://api.cometapi.com/v1 ve uyumlu metinden-görüntüye işler POST /images/generations kullanır. Bir dağıtımdan önce, canlı model kataloğunda her modeli doğrulayın; katalog, geçerli kimliği, desteklenen uç noktayı, özellikleri ve fiyatlandırma meta verilerini, yetkilendirme başlığı gerektirmeden döndürür.
20 Ağustos 2026 itibarıyla, canlı katalog şu iki yararlı rotayı listeliyordu:
| İş yükü | Model ID | Neden uygun |
|---|---|---|
| Kontrollü çıktı ayarlarıyla ürün görselleri | gpt-image-2 | Belgelenmiş OpenAI uyumlu rotada kullanım verisi ve base64 görsel içeriği döndürür |
| Yüksek hacimli reklam ve içerik konseptleri | doubao-seedream-4-5-251128 | Aynı üretim rotasını kullanır ve istek başına fiyatlandırma ile listelenmiştir |
Tablo bir başlangıç noktasıdır; modellerin aynı yeteneklere sahip olduğu iddiası değildir. Boyut, kalite, format, referans görsel desteği ve yanıt davranışı model spesifiktir. İsteğe bağlı parametreleri geçmeden önce model kaydını ve bağlantılı belgelerini kontrol edin.
Python’da Toplu Görüntü Oluşturma İş Akışı Nasıl Kurulur?
1. Her işe kalıcı bir kimlik verin
Aynı işçiyi bir kuyruk, veritabanı dışa aktarımı veya elektronik tablo işinden besleyebilmek için her satırda bir JSON nesnesi kullanın:
{"id":"sku-1001","kind":"product","prompt":"Studio product photo of a ceramic coffee dripper on a warm neutral background"}
{"id":"campaign-204","kind":"ad","prompt":"Editorial summer travel image, vivid natural light, wide composition, no text"}
{"id":"blog-088","kind":"content","prompt":"Minimal illustration of a developer automating a creative workflow, no text"}
Kimlik, çıktı dosya adı ve manifest anahtarı olur. Üretimde, bunu idempotency anahtarı olarak kullanın ve bir kuyruğu yeniden işlerken halihazırda başarılı olarak işaretlenen kimlikleri atlayın.
2. İş türüne göre yönlendirin, ardından canlı kataloğa karşı doğrulayın
Örnek, ürün işlerini gpt-image-2 ile ve reklam veya içerik işlerini doubao-seedream-4-5-251128 ile eşler. Bir iş, kendi model alanıyla bu seçimi geçersiz kılabilir. Başlangıçta, işçi halka açık kataloğu indirir ve artık listelenmeyen bir kimliği reddeder.
Bu, uygulamanın her yerine sağlayıcıya özel bir SDK’yı sabitlemekten daha güvenlidir. Kendi istemleriniz için kalite, gecikme ve fiyatı değerlendirerek eşlemeyi tek noktadan değiştirebilirsiniz.
3. Tüm partiyi başlatmak yerine eşzamanlılığı sınırlayın
İşçi dört eşzamanlı istekle başlar. Bu sayı, evrensel bir hizmet limiti değil, temkinli bir uygulama ayarıdır. Gecikmeyi ve hesabınız için 429 yanıtlarını ölçün; ardından MAX_WORKERS değerini bilinçli olarak artırın veya azaltın.
Yalnızca 408, 429 ve 5xx yanıtları üssel geri çekilme ve jitter ile yeniden denenir. Kimlik doğrulama hataları, geçersiz model kimlikleri ve desteklenmeyen parametreler hemen başarısız olur; çünkü aynı hatalı isteği yeniden denemek sadece gecikmeyi artırır.
4. Depolamadan önce sonucu normalleştirin
Görüntü modelleri her zaman aynı kapsayıcıyı döndürmez. Belgelenmiş GPT Image yanıtı data[0].b64_json içerir; diğer uyumlu modeller data[0].url döndürebilir. İşçi her ikisini de işler, görseli geçici bir dosyaya yazar ve indirme veya çözme başarılı olduktan sonra yeniden adlandırır.
Üretim için yerel output/ dizinini S3, R2, GCS veya başka bir nesne deposu ile değiştirin. Sağlayıcı barındırmalı bir URL’yi, saklama politikası açıkça belirtmediği sürece kalıcı depolama olarak değerlendirmeyin.
5. Kullanımı, deneme sayısını ve tahmini maliyeti kaydedin
Her sonuç, iş kimliği, model, kaydedilen yol, durum ve canlı katalog yeterli fiyatlandırma verisi sağladığında tahmini USD maliyeti içeren kompakt bir manifest satırına dönüşür. Başarısız işler partiden kaybolmak yerine hatayı korur.
Toplu Görüntü Oluşturma İçin Tam Python Betiği
Aşağıdakini batch_image_pipeline.py olarak kaydedin, kuyruğu jobs.jsonl olarak yanına koyun ve python3 batch_image_pipeline.py komutunu çalıştırın.
import base64, json, os, random, time
from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
import requests
BASE_URL = "https://api.cometapi.com/v1"
KEY = os.environ["COMETAPI_KEY"]
WORKERS = int(os.getenv("MAX_WORKERS", "4"))
OUT = Path("output")
ROUTES = {
"product": "gpt-image-2",
"ad": "doubao-seedream-4-5-251128",
"content": "doubao-seedream-4-5-251128",
}
catalog = requests.get("https://api.cometapi.com/api/models", timeout=30)
catalog.raise_for_status()
CATALOG = {model["id"]: model for model in catalog.json()["data"]}
def generate(job):
model = job.get("model", ROUTES[job["kind"]])
if model not in CATALOG:
raise ValueError(f"Unknown model: {model}")
payload = {"model": model, "prompt": job["prompt"], "n": 1}
if model == "gpt-image-2":
payload.update(quality="low", size="1024x1024", output_format="jpeg")
for attempt in range(4):
response = requests.post(
f"{BASE_URL}/images/generations",
headers={"Authorization": f"Bearer {KEY}"},
json=payload,
timeout=180,
)
if response.status_code not in {408, 429} and response.status_code < 500:
break
time.sleep(2**attempt + random.random())
response.raise_for_status()
body = response.json()
item = body["data"][0]
if item.get("b64_json"):
data = base64.b64decode(item["b64_json"])
extension = body.get("output_format", "png")
else:
download = requests.get(item["url"], timeout=120)
download.raise_for_status()
data = download.content
extension = {"image/png": "png", "image/webp": "webp"}.get(
download.headers.get("content-type"), "jpg"
)
path = OUT / f"{job['id']}.{extension}"
path.write_bytes(data)
price, usage = CATALOG[model].get("pricing") or {}, body.get("usage", {})
cost = price.get("per_request")
if cost is None and price.get("input") is not None:
cost = (usage.get("input_tokens", 0) * price["input"] +
usage.get("output_tokens", 0) * price["output"]) / 1_000_000
return {"id": job["id"], "model": model, "path": str(path),
"estimated_usd": cost * price.get("ratio", 1) if cost is not None else None}
def safe_generate(job):
try:
return {"status": "success", **generate(job)}
except Exception as error:
return {"id": job["id"], "status": "failed", "error": str(error)}
OUT.mkdir(exist_ok=True)
jobs = [json.loads(line) for line in Path("jobs.jsonl").read_text().splitlines() if line]
with ThreadPoolExecutor(max_workers=WORKERS) as pool:
results = list(pool.map(safe_generate, jobs))
with (OUT / "manifest.jsonl").open("w") as manifest:
manifest.writelines(json.dumps(result) + "\n" for result in results)
Betik, çalışma zamanında güncel kataloğu kullanır; iki yedek eşleme ise 20 Ağustos 2026’da doğrulanmış örneklerdir. Kodu başka bir tarihte yayınlamadan veya dağıtmadan önce bunları yeniden kontrol edin.
Toplu Görüntü Oluşturma İş Akışını Nasıl Test Edersiniz?
Bir iş ve bir işçi ile başlayın:
MAX_WORKERS=1 python3 batch_image_pipeline.py
Başarılı bir GPT Image yanıtı şu yapıyı izler:
{
"created": 1776841943,
"output_format": "jpeg",
"quality": "low",
"size": "1024x1024",
"usage": {
"input_tokens": 16,
"output_tokens": 208,
"total_tokens": 224
},
"data": [{"b64_json": "<base64-image-data>"}]
}
İşçi görseli çözümler, output/<job-id>.jpeg dosyasını yazar ve output/manifest.jsonl dosyasına başarılı bir satır ekler. Bir model bunun yerine bir URL döndürürse, işçi onu indirir ve aynı manifest formatında yerel yolu depolar.
Kod yerel olarak söz dizimi kontrolünden geçirildi. Canlı üretim çağrısı yine de CometAPI anahtarınızı gerektirir; eşzamanlılığı artırmadan önce tek işlik duman testini çalıştırın.
Toplu Görüntü Oluşturmanın Maliyeti Ne Kadar?
Fiyatlandırma zaman damgalı olmalıdır; çünkü model ücretleri değişir. 20 Ağustos 2026 itibarıyla canlı CometAPI model kataloğu aşağıdaki temel fiyat alanlarını ve 0.8 faturalama katsayısını döndürüyordu:
gpt-image-2: 1M giriş belirteci için $5 ve 1M çıkış belirteci için $30; listelenen katsayı uygulanınca efektif oranlar 1M belirteç için $4 ve $24 olur.doubao-seedream-4-5-251128: istek başına $0.04; listelenen katsayı uygulanınca istek başına $0.032 olur.
CometAPI fiyatlandırma kılavuzu, resmi fiyatlandırmaya sahip modeller için belirteç tabanlı faturalamayı ve istek başına fiyatlandırılan modeller için çağrı tabanlı faturalamayı açıklar. Betik, çalışırken kataloğu okur ve aynı kuralı kullanır:
token cost = ratio × (input tokens × input rate + output tokens × output rate) / 1,000,000
request cost = ratio × per-request price
Örneğin, yukarıdaki belgelenmiş GPT Image yanıtı 16 giriş belirteci ve 208 çıkış belirteci bildirir. 20 Ağustos kataloğu değerleri kullanıldığında, bu örnek sonuç yaklaşık $0.005056 olarak tahmin edilir. Gerçek toplam, modele, kaliteye, boyuta, isteme, yeniden denemelere ve yanıt kullanımına göre değişir. API yanıtını ve hesap kullanım panosunu faturalandırma kaydı olarak kabul edin; sabit bir görsel başına varsayım değil.
Başarısız işleri de bütçelendirin. Onaylanmamış bir zaman aşımından sonra yapılan yeniden deneme ikinci bir faturalandırılabilir sonuç üretebilir ve teknik olarak başarılı olup denetimden geçemeyen bir görsel yine bütçe tüketir. Hem API maliyetini hem de kabul oranını takip edin:
effective cost per accepted image = total batch spend / approved images
Yaygın Görüntü Oluşturma API Hataları ve Çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| 401 | Eksik veya geçersiz anahtar | Sunucu tarafındaki COMETAPI_KEY değerini kontrol edin |
| 400 | Geçersiz model veya desteklenmeyen seçenek | Canlı kataloğu yeniden kontrol edin ve model özel alanları kaldırın |
| 429 | Aşırı eşzamanlılık | MAX_WORKERS değerini düşürün ve üssel geri çekilmeyi sürdürün |
| Tekrarlayan 5xx | Geçici üst akış hatası | Sınırlı sayıda yeniden deneyin; sonra işi inceleme kuyruğuna alın |
| Kayıt yok | Yanıt farklı bir kapsayıcı kullandı | data[0] alanını inceleyin ve b64_json ile url’yi destekleyin |
| Yinelenen harcama | Kısmi bir başarısızlıktan sonra iş yeniden oynatıldı | Kalıcı kimlikler kullanın ve yalnızca depolama başarılı olunca onaylayın |
Her hatayı yeniden denemeyin. Kalıcı bir 400 istek geçersiz kalır; sınırsız bir 429 yeniden deneme döngüsü ise bir trafik artışını birikmiş işe dönüştürebilir.
Üretimde Büyük Ölçekli Görüntü Oluşturma İçin En İyi Uygulamalar
Birden fazla işçi söz konusu olduğunda JSON Lines’tan kalıcı bir kuyruğa geçin. Görünürlük zaman aşımını maksimum üretim süresinden uzun ayarlayın, görsel ve manifest depolandıktan sonra iş onayı verin ve tüketilmiş işleri inceleme kuyruğuna gönderin.
İsteğe bağlı kontrolleri model özel yapılandırmada tutun. Paylaşılan bir yük yalnızca model, prompt ve n: 1 gibi ortak alanları içermelidir; quality, size veya output_format alanlarını, yalnızca seçilen model belgeleri bunları doğruladıktan sonra ekleyin. Geri düşüş yönlendirmesi eklerseniz, aynı görevi destekleyen bir model seçin ve sağlayıcıya özel seçenekleri körü körüne yeniden oynatmak yerine yükü o model için yeniden oluşturun.
API anahtarını bir gizli yöneticide saklayın, istem girdisini kısıtlayın, üretilen varlıkları politikanıza göre tarayın ve sağlayıcı URL’lerini uzun vadeli ürün kayıtlarının dışında tutun. İş kimliği, model kimliği, gecikme, deneme sayısı, kullanım, depolama yolu, inceleme sonucu ve katalog anlık görüntü tarihini günlüğe kaydedin. Bu alanlar, sadece manşet fiyat yerine kabul edilen görsel başına maliyete göre modelleri karşılaştırmanıza olanak tanır.
Son olarak bütçe korkulukları belirleyin: maksimum parti boyutu, iş başına yeniden deneme sınırı, günlük harcama uyarısı ve onay oranı düştüğünde durma koşulu. Zayıf bir istemi daha hızlı ölçeklendirmek bir optimizasyon değildir.
Ölçekli Görüntü Oluşturmayı Otomatikleştirme Hakkında SSS
Birden çok API yönetmeden görüntü oluşturmayı ölçekli olarak otomatikleştirmenin en kolay yolu nedir?
Tek bir kuyruk ve depolama iş akışı kullanın; ardından uyumlu görüntü isteklerini tek bir CometAPI anahtarı ve https://api.cometapi.com/v1/images/generations. üzerinden gönderin. Ayrı kimlik doğrulama ve sağlayıcı SDK’ları yerine yönlendirme katmanında model kimliğini değiştirin.
Tek bir istek gönderip birden fazla görüntü modelinden aynı anda üretim isteyebilir miyim?
Örnek, iş başına bir model gönderir. Fan-out bir uygulama iş akışıdır: bir işi farklı kimlikler ve model değerleriyle çoğaltın, ardından depolanan çıktıları karşılaştırın. Bu, maliyet ve inceleme durumunu her modele atfedilebilir kılar.
Hangi eşzamanlılığı kullanmalıyım?
Her hesap ve model için evrensel bir sayı yoktur. Dört işçi gibi küçük bir sınırlı havuzla başlayın, gecikmeyi ve 429 yanıtlarını izleyin ve kanıta dayalı olarak ayarlayın.
Döndürülen URL’yi mi yoksa görselin kendisini mi saklamalıyım?
Görseli kendi nesne depolamanızda saklayın. Döndürülen bir URL geçici olabilir; GPT Image modelleri ise URL yerine base64 içerik döndürebilir.
En ucuz modeli nasıl seçerim?
Sadece çağrı başına fiyatı değil, kabul edilen görsel başına maliyeti hesaplayın. Belirteç veya istek ücretlerini, yeniden denemeleri, başarısız indirmeleri, reddedilen varlıkları, son işlemleri ve insan incelemesini dahil edin. Yayın veya dağıtım yaptığınız gün canlı model kataloğunu yeniden kontrol edin.
Uç noktayı ve yanıt formatını nerede doğrulamalıyım?
CometAPI Hızlı Başlangıç, model katalog belgeleri, görüntü oluşturma referansı ve fiyatlandırma kılavuzunu kullanın.