RAG ve veri · 2026-10-10
Görsel sınıflandırma API'si: Perplexity Decider ile evet/hayır, kategori ve kalite puanı
Görseli perplexity/pplx-decider-v1.1-27b ile sınıflandırın: base64 data URL, 1440 piksele küçültme, noul/choice/score soruları ve görsel başına maliyet hesabı.
Kısa cevap: görseli state dizisine koyun, soruları siz tanımlayın
LLMTR (llmtr.com), Türkiye'de ve global sağlayıcılarda barındırılan dil modellerine tek, OpenAI uyumlu API'den erişim veren bir gateway'dir. Bir görseli evet/hayır ya da kategoriyle sınıflandırmak için perplexity/pplx-decider-v1.1-27b modelini https://llmtr.com/v1/systemone uç noktasından çağırırsınız; temel adres https://llmtr.com/v1'dir. Görseli state dizisine base64 data URL olarak koyar, sorularınızı tanımlarsınız; her soru için bir olasılık, bir seçenek ya da bir puan döner.
Decider görseli betimleyen bir metin yazmaz; yalnızca sorduğunuz soruları yanıtlar. Bu, ürün fotoğraflarını kategoriye ayırmak, bir görselde kişi ya da yasaklı içerik olup olmadığını sormak veya ilan fotoğrafının kalitesini puanlamak gibi işlerde ayrıştırma adımını ortadan kaldırır. Fiyat 1 milyon girdi token'ı başına 0,02 $'dır; çıktının fiyatı yoktur.
Bir görsel API ile evet/hayır ya da kategoriye göre nasıl sınıflandırılır?
state alanını dizi olarak gönderin. Dizide metin parçaları ve {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}} biçiminde görsel parçaları yan yana durabilir. Kısa bir metin parçası, örneğin görselin bir satıcı ilanından geldiğini söylemek, modele bağlam verir. Sorular metin durumlarındaki gibi questions eşlemesinde tanımlanır.
Aşağıdaki Python örneği görseli önce en uzun kenarı 1440 piksel olacak şekilde küçültür, JPEG olarak base64'e çevirir ve tek istekte üç soru sorar: fotoğrafta kişi var mı (noul), hangi ürün kategorisi (choice) ve ilan için ne kadar kullanılabilir (score). Örnek requests ve Pillow kütüphanelerini kullanır.
Görseli 1440 piksele küçültüp data URL'ye çeviren ve noul, choice ve score sorularıyla sınıflandıran Python örneği.
import base64
import io
import os
import requests
from PIL import Image
def to_data_url(path, max_side=1440):
image = Image.open(path).convert("RGB")
image.thumbnail((max_side, max_side))
buffer = io.BytesIO()
image.save(buffer, format="JPEG", quality=90)
return "data:image/jpeg;base64," + base64.b64encode(buffer.getvalue()).decode()
response = requests.post(
"https://llmtr.com/v1/systemone",
headers={"Authorization": "Bearer " + os.environ["LLMTR_API_KEY"]},
json={
"model": "perplexity/pplx-decider-v1.1-27b",
"state": [
"Listing photo uploaded by a seller.",
{"type": "image_url", "image_url": {"url": to_data_url("listing.jpg")}},
],
"questions": {
"shows_person": {
"type": "noul",
"instructions": "Does the photo show a person?",
},
"category": {
"type": "choice",
"instructions": "Which product category does the photo show?",
"criteria": {"shoes": None, "bags": None, "clothing": None, "other": None},
},
"listing_quality": {
"type": "score",
"instructions": "How usable is this photo for a product listing?",
"criteria": ["Unusable", "Acceptable", "Good"],
},
},
},
timeout=90,
)
response.raise_for_status()
answers = response.json()["answers"]
print(answers["category"]["choice"], answers["category"]["confidence"])
Görseli hazırlamak: data URL, biçim ve boyut
Model görseli bir adresten indirmez. http ya da https adresi gönderilirse istek 400 provider_error ile döner; görseli her zaman PNG, JPEG ya da WebP biçiminde base64 data URL olarak koyun. Görsel en fazla 2.048 adet 32x32 piksellik kare kadar ayrıntıyla okunur, örneğin 1440x1440 ya da 2048x1024. Daha büyük bir görseli göndermeden önce bu boyuta küçültün; sınırı aşan görselin nasıl okunacağı garanti edilmez.
İstek gövdesi toplamda 24 MB ile sınırlıdır ve base64 kodlama dosyayı yaklaşık üçte bir büyütür. Küçültmek hem bu sınırın altında kalmanızı sağlar hem de isteği hafifletir. Aynı diziye birden fazla görsel koyabilirsiniz; her görsel her soruda ayrıca sayılır.
| Konu | Kural |
|---|---|
| Biçim | PNG, JPEG, WebP; base64 data URL |
| http/https adresi | kabul edilmez, 400 provider_error |
| Okunan ayrıntı | en fazla 2.048 adet 32x32 kare (ör. 1440x1440, 2048x1024) |
| Token | görsel başına, soru başına en fazla yaklaşık 2.050 |
| İstek gövdesi | toplam 24 MB; base64 yaklaşık üçte bir büyütür |
| Soru sayısı | istek başına en fazla 128 |
Hangi soru tipi ne zaman: noul, choice ve score
Bir şeyin görselde olup olmadığını ya da bir kurala uyup uymadığını soruyorsanız noul kullanın; evet olasılığını 0 ile 1 arasında verir. Kategori için choice kullanın ve görselin listeye uymayabileceği durumlar için other gibi bir seçenek ekleyin, yoksa model her zaman en yakın kategoriyi seçer. choice en fazla 255 seçenek alır ve seçilenle birlikte bütün seçeneklerin olasılığını ve bir confidence değerini döndürür.
Kalite ya da uygunluk gibi bir seviyeyi ölçecekseniz score kullanın; 2 ile 10 arasında sıralı seviye tanımlarsınız ve dönen değer iki seviyenin arasına düşebilir. Olasılıklar modelin tahminidir: canlıya almadan önce etiketini bildiğiniz kendi görsellerinizle eşik belirleyin ve düşük confidence değerli sonuçları insana yönlendirin.
Maliyet: görsel her soruda yeniden sayılır
Fiyat 1 milyon girdi token'ı başına 0,02 $'dır; çıktının fiyatı yoktur. Görsel girdi token'ı olarak sayılır ve her soru için yeniden sayılır; tek bir görsel soru başına en fazla yaklaşık 2.050 token tutar. Örnekteki üç soru görsel başına en fazla yaklaşık 6.150 token, yani yaklaşık 0,000123 $ eder; 10.000 görsel yaklaşık 1,23 $ tutar (kısa metin ve soru metinleri hariç).
Yalnızca kategoriyi soruyorsanız aynı 10.000 görsel yaklaşık 0,41 $'a iner. Bu yüzden sonucunu kullanmayacağınız soruları göndermeyin. Büyük görsellerde yanıt süresi uzayabilir; istemci zaman aşımını en az 90 saniye yapın.
LLMTR ile başlamak: hesap, anahtar ve ilk sınıflandırma
llmtr.com'da bir hesap açın, kredi yükleyin ve Dashboard > API Anahtarları altında bir anahtar oluşturun; ham anahtar bir kez gösterilir, onu LLMTR_API_KEY ortam değişkeninde saklayın. Ardından birkaç görselinizi yukarıdaki örnekle gönderip sonuçları kendi etiketlerinizle karşılaştırın. Ücret ön ödemeli krediden katalog fiyatıyla düşülür ve aynı anahtar katalogdaki her modelde çalışır.
Görseli Perplexity Decider ile sınıflandırma
Görseli 1440 piksele küçültüp base64 data URL'ye çevirin ve perplexity/pplx-decider-v1.1-27b ile https://llmtr.com/v1/systemone adresine noul, choice ya da score sorusuyla gönderin.
- Anahtar. llmtr.com'da hesap açın, kredi yükleyin ve Dashboard > API Anahtarları altında bir anahtar oluşturup LLMTR_API_KEY ortam değişkeninde saklayın.
- Görsel. Görseli en fazla 2.048 adet 32x32 kareye sığacak şekilde küçültün ve PNG, JPEG ya da WebP base64 data URL olarak state dizisine koyun.
- Sınıflandırma. Sorularınızı questions içinde tanımlayıp isteği https://llmtr.com/v1/systemone adresine gönderin; düşük confidence değerli sonuçları insana yönlendirin.
Sık sorulan sorular
Perplexity Decider görsel kabul ediyor mu?
Evet. perplexity/pplx-decider-v1.1-27b, state dizisindeki image_url parçasıyla gönderilen PNG, JPEG ya da WebP base64 data URL görselleri değerlendirir. http ya da https adresi kabul edilmez ve 400 provider_error döner.
Bir görseli sınıflandırmak ne kadar tutar?
1 milyon girdi token'ı 0,02 $'dır. Görsel soru başına en fazla yaklaşık 2.050 token tutar; tek soruyla bir görsel yaklaşık 0,000041 $, üç soruyla yaklaşık 0,000123 $ eder. Çıktının fiyatı yoktur.
Görseli göndermeden önce küçültmem gerekir mi?
Evet. Görsel en fazla 2.048 adet 32x32 kare kadar ayrıntıyla okunur, örneğin 1440x1440 ya da 2048x1024. Daha büyük görselin nasıl okunacağı garanti edilmez ve istek gövdesi toplam 24 MB ile sınırlıdır.