RAG ve veri · 2026-10-17

Arapça metinden JSON çıktı: Jais 3 ve json_schema

Arapça müşteri mesajlarını Jais 3 ile JSON'a çevirin: response_format json_schema, sonucu kodda doğrulama ve Arap-Hint rakamları, Python örneğiyle.

Basit şema: Arapça metin https://llmtr.com/v1 üzerindeki ifm/jais-3-mova-36b-a4b'ye gider ve bir JSON nesnesi geri döner.

Kısa yanıt: response_format ile json_schema gönderin

LLMTR, farklı sağlayıcıların dil modellerine tek bir OpenAI uyumlu API ile erişim veren bir gateway'dir. Jais 3'ü ifm/jais-3-mova-36b-a4b kimliğiyle https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağırırsınız. Satır response_format alanında json_object ve json_schema kabul eder; şemayı strict olarak gönderdiğinizde cevap, content alanında şemaya uyan bir JSON metni olarak gelir.

IFM, model kartında Jais 3'ün Arapça ve İngilizce asistan ve ajan uygulamaları için tasarlandığını yazar. Arapça müşteri mesajlarını kategorilere ayırmak, bir metinden sipariş numarası ya da tarih çıkarmak ve Arapça kısa özet üretmek bu yolla tek istekte yapılabilir.

Arapça metinden JSON çıktı nasıl alınır?

Aşağıdaki Python örneği Arapça bir şikâyet mesajını alır ve üç alanlı bir JSON nesnesi ister: category dört değerden biri, order_id metindeki sipariş numarası, summary_ar ise Arapça tek cümlelik özet. Şema response_format içinde json_schema olarak, strict true ve additionalProperties false ile gider. Cevap choices[0].message.content alanında JSON metni olarak gelir; örnek bunu json.loads ile ayrıştırır.

Anahtarları İngilizce, değerleri Arapça tutmak kodunuzu sadeleştirir: alan adları sabit kalır, kullanıcıya gösterilecek metin Arapça olur. Çıktıyı ekrana yazarken ensure_ascii=False kullanın; aksi halde Arapça karakterler kaçış dizileri olarak görünür.

Model varsayılan olarak yanıttan önce düşünür. Düşünme metni ayrı bir alanda, reasoning_content içinde döner; content alanında yalnızca JSON bulunur. Düşünme token'ları max_tokens sınırına sayıldığı için örnek 4.096 token verir.

Arapça bir müşteri mesajını ifm/jais-3-mova-36b-a4b ile strict json_schema üzerinden kategori, sipariş numarası ve Arapça özete çeviren ve kategoriyi kodda doğrulayan 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"])

SCHEMA = {
    "type": "object",
    "properties": {
        "category": {"type": "string", "enum": ["shipping", "billing", "product", "other"]},
        "order_id": {"type": "string"},
        "summary_ar": {"type": "string"},
    },
    "required": ["category", "order_id", "summary_ar"],
    "additionalProperties": False,
}

text = "وصلني الطلب رقم 1042 متأخراً بثلاثة أيام والعلبة كانت مفتوحة."

response = client.chat.completions.create(
    model="ifm/jais-3-mova-36b-a4b",
    messages=[
        {"role": "system", "content": "Classify the customer message. Use an empty order_id if there is none."},
        {"role": "user", "content": text},
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {"name": "ticket", "strict": True, "schema": SCHEMA},
    },
    max_tokens=4096,
)

data = json.loads(response.choices[0].message.content)
if data["category"] not in SCHEMA["properties"]["category"]["enum"]:
    raise ValueError("unexpected category: " + data["category"])
print(json.dumps(data, ensure_ascii=False))

json_object mi, json_schema mı?

İki biçim de bu satırda açıktır. Alanları ve türlerini sabitlemek istiyorsanız json_schema kullanın; yalnızca geçerli bir JSON nesnesi yetiyorsa json_object yeterlidir. json_object kullanırken istenen alanları sistem isteminde açıkça yazın, çünkü şema gönderilmez.

LLMTR'de ifm/jais-3-mova-36b-a4b için response_format, 17 Ekim 2026 itibarıyla
response_formatNe zamanİstemde ne yazılır
json_schema (strict)Alan adları, türler ve izinli değerler sabit olmalıGörevi; alanlar şemadan gelir
json_objectGeçerli bir JSON nesnesi yeterliGörevi ve beklenen alanları
Alan yokSerbest metin cevapCevabın biçimini düz metinle

Sonucu doğrulamak ve Arapça değerleri işlemek

Şemaya uyan bir JSON dahi işiniz için yanlış bir değer taşıyabilir. Örnek, kategori değerini izinli listeyle karşılaştırır; sipariş numarası gibi alanları da kendi sisteminizde arayarak doğrulayın. Ayrıştırma ya da doğrulama başarısız olursa isteği bir kez tekrarlayın, yine olmazsa mesajı inceleme kuyruğuna alın.

Arapça metinlerde sayılar ١٠٤٢ gibi Arap-Hint rakamlarıyla yazılmış olabilir ve model değerleri bu rakamlarla döndürebilir. Sayıyı kodda kullanacaksanız rakamları normalize edin ya da sistem isteminde Batı rakamlarını isteyin. Arapça metinde sağdan sola yazım JSON'u etkilemez; değerler UTF-8 dizesi olarak taşınır.

Uzun metin listelerini işlerken her metni ayrı bir istekte gönderin. Tek istekte çok sayıda metin göndermek hem cevabı hem doğrulamayı zorlaştırır.

Toplu iş: bir dosyadaki mesajları işlemek

Bir CSV dosyasındaki yüzlerce mesajı işlerken her satırı ayrı bir istekte, sırayla gönderin. Model kısa sürede sınırlı sayıda istek kabul eder; kısa süreli istek sınırına takılan bir istek 429 ile birkaç saniyelik bir Retry-After döndürür. O süre kadar bekleyip aynı satırı tekrarlayın ve işi bir sonraki satırdan sürdürün.

Her satırın sonucunu, satır numarasıyla birlikte hemen diske yazın. Böylece iş yarıda kalırsa baştan başlamak yerine kaldığı yerden devam edersiniz. Doğrulamadan geçemeyen satırları ayrı bir dosyaya yazıp sonra gözden geçirin.

Günlük hak dolduğunda gelen 429'un Retry-After değeri saatlerle ölçülür. Bu durumda işi durdurun ve 00:00'dan (TSİ) sonra kalan satırlarla sürdürün.

Ücretsiz dönem, günlük hak ve veri notu

Satır 5 Kasım 2026 23:59'a (TSİ) kadar ücretsizdir; 1 milyon token başına girdi de çıktı da 0 $'dır. Her hesabın bu model için günde 200.000 token hakkı vardır, yeni açılan hesaplar ilk gün daha düşük bir hakla başlar; girdi ve çıktı birlikte sayılır, düşünme token'ları da çıktıya dahildir. Toplu işlerde her yanıttaki usage.total_tokens değerini toplayarak günlük hakkı izleyin. Hak dolduğunda API 429 döner, Retry-After başlığı ne zaman yeniden deneyebileceğinizi söyler ve hak 00:00'da (TSİ) yenilenir. 6 Kasım 2026 00:00'dan itibaren model 410 model_retired döner.

LLMTR'deki model sayfasının veri notuna göre istemler ve tamamlamalar sağlayıcı tarafından günlüğe kaydedilebilir ve modeli geliştirmek için kullanılabilir. Müşteri mesajlarında ad, telefon ya da adres gibi kişisel veri varsa göndermeden önce maskeleyin.

Arapça metinden JSON çıktı alma

Şemayı tanımlayın, ifm/jais-3-mova-36b-a4b'ye response_format json_schema ile gönderin ve sonucu kodda doğrulayın.

  1. Şemayı tanımlama. Alanları, türleri ve izinli değerleri JSON Schema olarak yazın; additionalProperties false ekleyin.
  2. İstek. Arapça metni ifm/jais-3-mova-36b-a4b'ye response_format json_schema ve strict true ile gönderin.
  3. Doğrulama. content alanını json.loads ile ayrıştırın, değerleri izinli listelerle ve kendi sisteminizle karşılaştırın.

Sık sorulan sorular

Jais 3 JSON Schema destekliyor mu?

Evet. LLMTR'de ifm/jais-3-mova-36b-a4b, response_format ile json_schema ve json_object kabul eder. Şemayı strict olarak gönderin ve sonucu yine de kodda doğrulayın.

JSON cevabında düşünme metni olur mu?

Hayır. Düşünme metni reasoning_content alanında ayrı döner, content alanında yalnızca JSON bulunur. Düşünme token'ları max_tokens sınırına sayılır.

Arapça rakamları nasıl işlerim?

Değerler ١٠٤٢ gibi Arap-Hint rakamlarıyla gelebilir. Sayıyı kodda kullanacaksanız rakamları normalize edin ya da sistem isteminde Batı rakamlarını isteyin.

İlgili yazılar