RAG ve veri · 2026-10-17
Ücretsiz Qwen3.8 27B ile JSON çıktı: json_object rehberi
qwen/qwen3.8-27b-free'den response_format json_object ile JSON nesnesi isteyin ve json.loads ile doğrulayın; günlük kotayla ücretsiz, OpenAI uyumlu API.
Kısa yanıt: response_format ile JSON nesnesi isteyin
LLMTR, farklı sağlayıcıların dil modellerine tek bir OpenAI uyumlu API ile erişim veren bir gateway'dir. Ücretsiz Qwen3.8 27B'yi burada qwen/qwen3.8-27b-free model kimliğiyle, https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağırırsınız. JSON çıktı için isteğe response_format alanını {"type": "json_object"} değeriyle ekler, istemde beklediğiniz anahtarları tarif edersiniz.
Model kartı bu satır için JSON modunu, araç çağırmayı ve görsel girdiyi listeler; JSON şemasını (structured outputs, yani response_format json_schema) listelemez. Satır günlük kullanım kotasıyla ücretsizdir: 1 milyon token başına girdi ve çıktı 0 $'dır. Bağlam penceresi 131.042 token, tek yanıtta üretilebilecek çıktı en fazla 16.384 token'dır. Qwen, Qwen3.8-27B'yi 27 milyar parametreli yoğun (dense) bir model olarak tanımlar.
Ücretsiz bir modelden JSON çıktı nasıl alınır?
Üç parça yeterlidir. Birincisi response_format: {"type": "json_object"}. İkincisi istem: sistem mesajında JSON istediğinizi, anahtar adlarını, tiplerini ve tarih gibi alanların biçimini yazın. JSON modu yanıtın bir JSON nesnesi olmasını ister; hangi anahtarların bulunacağını istem belirler. Üçüncüsü doğrulama: yanıtı json.loads ile ayrıştırın ve beklediğiniz anahtarların geldiğini kodda kontrol edin.
Aşağıdaki Python örneği serbest metinden bir sipariş kaydı çıkarır. temperature 0 aynı girdide çıktının değişkenliğini azaltır; max_tokens 1.024 kısa bir nesne için yeterli bir bütçedir. Daha uzun nesneler için bütçeyi artırın, ama bu satırda 16.384'ü geçmeyin. Son satırdaki json.dumps çağrısı ensure_ascii=False ile çalışır, böylece Türkçe karakterler kaçış dizisine dönüşmeden yazdırılır.
İstemde anahtarları dolu küçük bir örnek nesne vermek, modelin anahtar adlarını ve iç içe yapıyı izlemesine yardımcı olabilir. Örneği sistem mesajında tutun ve içine gerçek veriye benzemeyen değerler yazın; böylece örnekteki bir değer yanıta karışırsa bunu kolayca fark edersiniz.
Sonuç olarak hangi anahtarların geleceği istemin açıklığına, kullanılabilir olup olmadıkları da sizin doğrulamanıza bağlıdır.
qwen/qwen3.8-27b-free'den response_format json_object ile bir sipariş nesnesi isteyen, kesilmeyi ve eksik anahtarları kontrol eden 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"])
REQUIRED_KEYS = {"order_id", "items", "city", "delivery_date", "notes"}
text = "Order 4471: three A5 notebooks and two blue pens, deliver to Izmir on 21 October 2026, leave at the front desk."
response = client.chat.completions.create(
model="qwen/qwen3.8-27b-free",
messages=[
{
"role": "system",
"content": (
"Extract the order as a JSON object with these keys: "
"order_id (string), items (array of objects with name and quantity), "
"city (string), delivery_date (YYYY-MM-DD), notes (string or null). "
"Reply with the JSON object only."
),
},
{"role": "user", "content": text},
],
response_format={"type": "json_object"},
temperature=0,
max_tokens=1024,
)
choice = response.choices[0]
if choice.finish_reason == "length":
raise RuntimeError("The JSON was cut at max_tokens; raise max_tokens or shorten the input.")
data = json.loads(choice.message.content)
missing = REQUIRED_KEYS - data.keys()
if missing:
raise ValueError(f"Missing keys: {sorted(missing)}")
print(json.dumps(data, ensure_ascii=False, indent=2))
JSON modu ile JSON şeması arasındaki fark
OpenAI uyumlu API'lerde iki JSON türü vardır. json_object yanıtın geçerli bir JSON nesnesi olmasını ister ama anahtarları ve tipleri zorlamaz. json_schema ise bir JSON Schema gönderip yanıtın bu şemaya uymasını ister; buna structured outputs denir. Model kartı qwen/qwen3.8-27b-free için yalnızca JSON modunu listeler. Bu yüzden bu satırda json_object kullanın ve şemayı kendi kodunuzda uygulayın.
Şemanın kesin uygulanması gereken işlerde, örneğin yanıtın doğrudan bir veritabanına yazıldığı akışlarda, kartında structured outputs listelenen bir model seçin ya da bu satırın çıktısını pydantic veya jsonschema gibi bir kütüphaneyle doğrulayıp uymayan yanıtı yeniden isteyin. Tablo bu satırın katalogdaki değerlerini gösterir.
| Özellik | Değer |
|---|---|
| Model kimliği | qwen/qwen3.8-27b-free |
| Uç nokta | /v1/chat/completions |
| Fiyat (1 milyon token) | 0 $ girdi / 0 $ çıktı, günlük kullanım kotasıyla |
| Bağlam penceresi | 131.042 token |
| Yanıt başına çıktı sınırı | 16.384 token |
| JSON modu (json_object) | model kartında listelenir |
| JSON şeması (json_schema) | model kartında listelenmez |
| Araç çağırma ve görsel girdi | model kartında listelenir |
| reasoning_effort | yok; gönderilirse 400 döner |
Yanıtı doğrulamak: finish_reason, json.loads ve eksik anahtarlar
JSON çıktıyı bozan yaygın bir neden kesilmedir. finish_reason length ise model max_tokens sınırına ulaşmıştır ve JSON yarıda kalmış olabilir; json.loads bu durumda hata verir. Örnek bu durumu ayrıştırmadan önce yakalar. Çözüm max_tokens'ı yükseltmek ya da girdiyi küçültmektir; bu satırda 16.384'ün üstündeki bir değer 400 invalid_request döner.
İkinci adım anahtar kontrolüdür. Örnek, beklenen beş anahtardan eksik olanları listeler. Tiplere de bakın: items içindeki quantity bir sayı mı, delivery_date YYYY-MM-DD biçiminde mi? Uymayan yanıtı bir kez, hatayı belirten kısa bir ek mesajla yeniden isteyebilirsiniz; ikinci denemede de uymazsa kaydı insan incelemesine bırakın.
stream: true ile JSON parça parça gelir. Nesneyi ancak akış bitince, bütün parçaları birleştirdikten sonra ayrıştırın.
RAG akışında JSON çıktı nerede işe yarar?
Belge alma (retrieval) hattında JSON çıktı üç yerde işe yarar: dizinlemeden önce her parçaya kategori, tarih ve dil gibi meta veri etiketleri üretmek; kullanıcının sorusunu tarih aralığı ya da belge türü gibi bir arama filtresine çevirmek; bulunan parçalardan cevabı, dayandığı parça numaralarıyla birlikte döndürmek. Meta veri etiketlerinde izin verilen değerleri istemde sayın (örneğin kategori için fatura, sözleşme, yazışma) ve dönen değerin bu listede olduğunu kodda kontrol edin; JSON modu değerleri bir listeyle sınırlamaz.
Bulunan parçaları istemde numaralı olarak verin ve cevapta hangi numaralara dayandığını bir dizi olarak isteyin; kaynak gösterimini böylece kodda kurarsınız. Parçaların toplamı, istem ve yanıt payıyla birlikte 131.042 token'lık bağlama sığmalıdır. Model kartı bu satırda görsel girdiyi de listeler: taranmış bir belgeden alan çıkaracaksanız görseli image_url parçasıyla ekleyin ve aynı doğrulamayı uygulayın.
Ücretsiz kullanım: 429, veri notu ve ilk istek
HTTP 429, ücretsiz kullanım sınırlarından birine ulaşıldığını bildirir; bu sınır günlük ya da dakika başına olabilir ve yanıt Retry-After başlığını taşır. Başlıktaki süre kadar bekleyin; toplu çıkarma işlerinde istekleri sıraya alın. Günlük kotanın nasıl yönetileceği bu satırın günlük kota yazısında anlatılır.
Model kartındaki veri notuna göre istemler ve tamamlamalar sağlayıcı tarafından günlüğe kaydedilebilir ve modeli geliştirmek için kullanılabilir. RAG akışında isteme giren belge parçaları da bu kapsamdadır; kişisel veri ya da gizli belge içeren parçaları bu satıra göndermeyin.
Başlamak için llmtr.com'da bir hesap açın, Dashboard > API Anahtarları altında bir anahtar oluşturun, onu LLMTR_API_KEY ortam değişkeninde saklayın ve örneği kendi metninizle çalıştırın.
Ücretsiz Qwen3.8 27B'den JSON çıktı alma
response_format json_object ile qwen/qwen3.8-27b-free'den bir JSON nesnesi isteyin ve yanıtı kodda doğrulayın.
- Anahtar ve istemci. Dashboard > API Anahtarları altında bir anahtar oluşturun ve OpenAI istemcisinin base_url değerini https://llmtr.com/v1 yapın.
- JSON isteği. Sistem mesajında anahtarları ve tiplerini tarif edin, model olarak qwen/qwen3.8-27b-free ve response_format olarak {"type": "json_object"} gönderin.
- Doğrulama. finish_reason length değilse yanıtı json.loads ile ayrıştırın ve beklenen anahtarların geldiğini kontrol edin.
Sık sorulan sorular
Ücretsiz bir modelden JSON çıktı alabilir miyim?
Evet. LLMTR'de qwen/qwen3.8-27b-free için model kartı JSON modunu listeler: /v1/chat/completions isteğine response_format {"type": "json_object"} ekleyin, istemde anahtarları tarif edin ve yanıtı json.loads ile doğrulayın. Satır günlük kullanım kotasıyla ücretsizdir.
Bu satırda json_schema kullanabilir miyim?
Model kartı bu satır için JSON şemasını (structured outputs) listelemez, yalnızca JSON modunu listeler. json_object kullanın ve şemayı kendi kodunuzda uygulayın; şemanın kesin uygulanması gerekiyorsa kartında structured outputs listelenen bir model seçin.
JSON yanıtı neden yarım geliyor?
finish_reason length ise yanıt max_tokens sınırında kesilmiştir. max_tokens'ı yükseltin (bu satırda en fazla 16.384) ya da girdiyi küçültün.