RAG ve veri · 2026-10-12
YandexGPT JSON çıktı: 5.1 Pro ile metinden yapılandırılmış veri çıkarma
yandex/yandexgpt-5.1-pro ile serbest metinden fatura numarası, tarih, tutar ve para birimi kodunu JSON olarak çıkarın: istem, doğrulama ve maliyet.
Kısa yanıt: response_format json_object ve açık bir istem
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. YandexGPT 5.1 Pro burada yandex/yandexgpt-5.1-pro kimliğiyle, https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağrılır.
Serbest metinden yapılandırılmış veri çıkarmak için isteğe response_format {"type": "json_object"} ekleyin, istemde cevabın JSON olması gerektiğini açıkça yazın ve beklediğiniz anahtarları tek tek sayın. Gelen cevabı json.loads ile ayrıştırın, anahtarları ve tipleri kendi kodunuzda kontrol edin, hata olursa isteği bir kez tekrarlayın. LLMTR kataloğu 5.1 Pro'yu iş metni üretimi, belge analizi ve diyalog için tanımlar.
YandexGPT 5.1 Pro ile metinden JSON veri nasıl çıkarılır?
Örnek iş: bir e-postadan ya da taranmış bir belgenin metninden fatura numarasını, tarihi, toplam tutarı, para birimi kodunu ve karşı tarafın adını almak. Aşağıdaki Python örneği beş anahtarı sistem isteminde tipleriyle birlikte sayar, response_format ile JSON nesnesi ister, cevabı json.loads ile ayrıştırır ve anahtar ve tip kontrolünden geçirir.
Ayrıştırma ya da kontrol başarısız olursa istek bir kez tekrarlanır. finish_reason değeri length ise cevap yarıda kesilmiştir ve JSON eksik kalır; örnek bu durumda max_tokens değerini ikiye katlayıp yeniden dener. İkinci deneme de başarısız olursa hata fırlatılır ve belgeyi elle incelemeye ayırabilirsiniz.
yandex/yandexgpt-5.1-pro ile fatura alanlarını JSON olarak çıkaran, cevabı doğrulayan ve bir kez yeniden deneyen OpenAI Python SDK örneği.
import json
import os
from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])
SYSTEM = (
"Extract invoice data from the text. Answer only with a JSON object that has exactly "
"these keys: invoice_number (string), invoice_date (string, YYYY-MM-DD), total (number), "
"currency (string, ISO 4217 code such as USD or EUR), counterparty (string). "
"Use null for a value that is not in the text."
)
FIELDS = {"invoice_number": str, "invoice_date": str, "total": (int, float), "currency": str, "counterparty": str}
def check(data):
if not isinstance(data, dict) or set(data) != set(FIELDS):
raise ValueError("unexpected keys")
for key, kind in FIELDS.items():
value = data[key]
if value is not None and (isinstance(value, bool) or not isinstance(value, kind)):
raise ValueError("wrong type for " + key)
return data
def extract(text, max_tokens=300):
for attempt in range(2):
response = client.chat.completions.create(
model="yandex/yandexgpt-5.1-pro",
messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": text}],
response_format={"type": "json_object"},
max_tokens=max_tokens,
)
choice = response.choices[0]
if choice.finish_reason == "length":
max_tokens *= 2
continue
try:
return check(json.loads(choice.message.content or ""))
except ValueError:
continue
raise RuntimeError("no valid JSON after two attempts")
print(extract("Invoice INV-2026-0142 from Northwind Ltd., dated 3 October 2026. Total due: 1,250.00 EUR."))
İstemde JSON'u açıkça isteyin ve anahtarları sayın
Yandex'in yanıt biçimlendirme belgesi, JSON çıktı isterken istemde de cevabın JSON olması gerektiğini belirtmeyi önerir. response_format yalnızca biçimi belirler; hangi alanların dolacağını istem tanımlar. Anahtar adlarını, tiplerini ve metinde bulunmayan bir değer için ne döneceğini (örneğin null) istemde yazın.
Tablo örnekteki alanları gösterir. Tarih için tek bir biçim (YYYY-MM-DD) ve para birimi için ISO 4217 kodu (USD, EUR gibi) istemek, sonradan karşılaştırma ve toplama yapmayı kolaylaştırır. Aşağıdaki curl isteği aynı kuralları tek bir çağrıda gösterir.
| Anahtar | Tip | Örnek değer |
|---|---|---|
| invoice_number | metin | INV-2026-0142 |
| invoice_date | metin, YYYY-MM-DD | 2026-10-03 |
| total | sayı | 1250 |
| currency | metin, ISO 4217 kodu | EUR |
| counterparty | metin | Northwind Ltd. |
response_format json_object ile fatura alanlarını isteyen curl isteği.
curl https://llmtr.com/v1/chat/completions \
-H "Authorization: Bearer $LLMTR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "yandex/yandexgpt-5.1-pro",
"response_format": {"type": "json_object"},
"max_tokens": 300,
"messages": [
{"role": "system", "content": "Answer only with a JSON object with the keys invoice_number, invoice_date (YYYY-MM-DD), total (number), currency (ISO 4217 code) and counterparty. Use null for a missing value."},
{"role": "user", "content": "Invoice INV-2026-0142 from Northwind Ltd., dated 3 October 2026. Total due: 1,250.00 EUR."}
]
}'
Doğrulama: json_object neyi hedefler, neyi garanti etmez
json_object modunun amacı cevabın geçerli bir JSON nesnesi olmasıdır. Anahtarların istediğiniz adlarla gelmesini, tiplerin doğru olmasını ya da değerlerin metinle tutarlı olmasını garanti etmez. Bu modelde response_format için yalnızca json_object sunulur, json_schema sunulmaz; şema denetimi sizin kodunuzda yapılır.
Pratik kontrol listesi: json.loads hata vermiyor mu, anahtar kümesi beklenenle aynı mı, her değer beklenen tipte ya da null mu, tarih biçimi ve para birimi kodu kuralınıza uyuyor mu. Toplam tutarı metindeki sayıyla karşılaştırmak gibi iş kurallarını da bu adıma ekleyin. Başarısız bir cevabı bir kez yeniden isteyin; ikinci başarısızlıkta belgeyi elle incelemeye ayırın.
finish_reason değeri length olan cevap kesilmiştir ve JSON ayrıştırılamaz. Bu durumda max_tokens değerini yükseltip yeniden deneyin. Anahtar listesi uzadıkça cevap da uzar; max_tokens değerini beklenen JSON'un boyutuna göre ayarlayın.
Maliyet ve 32.768 token'lık bağlam bütçesi
YandexGPT 5.1 Pro'da girdi ve çıktı aynı fiyattan faturalanır: 1 milyon token başına 6,557376 $. Bu fiyat Yandex'in yayımladığı USD liste fiyatına eşittir; Yandex fiyatı 1.000 token başına yazar. Bu modelin fiyatına marj eklenmez; LLMTR'nin %8 platform payı yalnızca kredi yüklerken alınır.
Örnek hesap: her biri 2.000 token girdi ve 300 token çıktı olan 1.000 belge için tutar 1.000 x (2.000 + 300) x 6,557376 $ / 1 milyon = 15,081965 $'dır; belge başına yaklaşık 0,015082 $. Yeniden denenen her istek ayrıca faturalanır.
Bağlam penceresi 32.768 token'dır; sistem istemi, belge metni ve beklenen cevap bu pencereye sığmalıdır. Daha uzun belgeleri bölümlere ayırıp her bölümden ayrı JSON alın ve sonuçları kodunuzda birleştirin.
LLMTR ile başlamak: hesap, anahtar ve ilk istek
Adım 1: llmtr.com'da bir hesap oluşturun ve ön ödemeli kredi yükleyin. Adım 2: Dashboard > API Anahtarları altında bir anahtar oluşturun; ham anahtar yalnızca bir kez gösterilir, onu LLMTR_API_KEY gibi bir ortam değişkeninde saklayın. Adım 3: OpenAI uyumlu SDK'nızda base_url değerini https://llmtr.com/v1 yapın, model olarak yandex/yandexgpt-5.1-pro yazın ve ilk isteği gönderin. Aynı anahtar katalogdaki her modelde çalışır.
YandexGPT 5.1 Pro ile JSON çıktı almak için LLMTR kurulumu
Hesap açın, API anahtarı oluşturun ve yandex/yandexgpt-5.1-pro ile https://llmtr.com/v1 adresine response_format içeren ilk isteği gönderin.
- Hesap. llmtr.com'da bir hesap oluşturun ve ön ödemeli kredi yükleyin.
- API anahtarı. Dashboard > API Anahtarları altında bir anahtar oluşturun. Ham anahtar yalnızca bir kez gösterilir; LLMTR_API_KEY ortam değişkeninde saklayın.
- İlk istek. OpenAI uyumlu bir SDK'da base_url değerini https://llmtr.com/v1 yapın ve model olarak yandex/yandexgpt-5.1-pro ile ilk isteği gönderin.
Sık sorulan sorular
YandexGPT 5.1 Pro JSON çıktı verir mi?
Evet. İsteğe response_format {"type": "json_object"} ekleyin ve istemde cevabın JSON olması gerektiğini yazın. Bu mod geçerli bir JSON nesnesini hedefler; anahtar ve tip kontrolünü kendi kodunuzda yapın.
YandexGPT 5.1 Pro json_schema destekliyor mu?
LLMTR'de bu model için response_format'ta yalnızca json_object sunulur. Şema kurallarını istemde yazın ve cevabı json.loads ile ayrıştırdıktan sonra anahtarları ve tipleri kendiniz doğrulayın.
YandexGPT 5.1 Pro ile 1.000 belgeden veri çıkarmak ne kadar tutar?
Belge başına 2.000 token girdi ve 300 token çıktı varsayımıyla 1.000 belge 15,081965 $ tutar. YandexGPT 5.1 Pro'da girdi ve çıktı 1 milyon token başına 6,557376 $'dır.