RAG ve veri · 2026-10-22

Atria-Dawn ile uzun dokümandan JSON Schema ile veri çıkarma

Atria-Dawn'ın 524.288 token bağlamıyla uzun bir dokümanı tek istekte verip json_schema ile alan çıkarmanın adımları, token hesabı ve doğrulama.

Şema: https://llmtr.com/v1 altında tek kutu, internlm/atria-dawn-free.

Kısa yanıt: dokümanı tek mesajda verin, json_schema isteyin, düşünmeyi kapatın

LLMTR, farklı sağlayıcıların dil modellerine tek bir OpenAI uyumlu API ile erişim veren bir gateway'dir. Shanghai AI Lab'ın Atria-Dawn modeli (internlm/atria-dawn-free) https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağrılır, 524.288 token bağlam penceresi sunar ve 31 Ekim 2026 23:59'a (TSİ) kadar ücretsizdir. Uzun bir dokümanı kullanıcı mesajında verip response_format alanında "type": "json_schema" ve "strict": true ile bir şema gönderdiğinizde cevap, content alanında o şemaya göre bir JSON nesnesi olarak gelir; çıkarma işinde düşünmeyi :fast ya da "reasoning": false ile kapatın. Aynı ayarları Atria-Dawn Preview (internlm/atria-dawn-preview-free) de kabul eder. Agents-A1 (internlm/agents-a1-free) ve Sage-A1.5 (internlm/sage-a1.5-free) json_schema destekler ama bağlamları 262.144 token'dır; Intern-S2'de (internlm/intern-s2-free) response_format yoktur. 1 Kasım 2026'dan itibaren Agnes 2.5 Flash (agnes/agnes-2.5-flash), Nemotron 3 Ultra (nvidia/nemotron-3-ultra-550b-a55b) ya da ücretli DeepSeek V4.1 Flash (deepseek/deepseek-flash) kullanılır.

Satırın veri notuna göre istekler üçüncü taraf bir sağlayıcı üzerinden işlenir; istemler ve tamamlamalar sağlayıcı tarafından günlüğe kaydedilebilir ve modeli geliştirmek için kullanılabilir. Bu yüzden müşteri sözleşmesi, kişisel veri ya da gizli belge göndermeyin. Kamuya açık bir teknik şartname, bir şablon sözleşme ya da kişisel veri içermeyen toplantı tutanakları bu iş için uygun örneklerdir.

524.288 token'lık bağlamla uzun bir dokümandan JSON Schema ile veri nasıl çıkarılır?

Üç adım yeter: dokümanın tamamını tek bir kullanıcı mesajına koyun, çıkarmak istediğiniz alanları strict: true olan bir JSON Schema olarak response_format içinde gönderin ve cevabın content alanını json.loads ile ayrıştırıp şemaya göre doğrulayın. Şemada her alanı required listesine yazın ve additionalProperties: false kullanın; dokümanda bulunmayabilecek bir değer için sistem mesajında boş metin ("") isteyin, böylece eksik değeri kodunuzda ayırt edersiniz.

Sistem mesajındaki talimatı kısa tutun ve alanları sayın. Bütün alanları tek bir şemada toplayıp doküman başına bir istek gönderin; bu satırlarda önbellek indirimi listelenmez, tekrar gönderilen doküman her seferinde tam girdi olarak sayılır.

Tablo beş Shanghai AI Lab satırını bu iş için karşılaştırır.

Shanghai AI Lab satırları uzun doküman çıkarma işi için, LLMTR kataloğu, 22 Ekim 2026 itibarıyla
ModelBağlamJSON (response_format)Görsel girdiBu iş için
Atria-Dawn524.288 tokenjson_object ve json_schemayok, görsel içeren istek 400 döneruygun; kararlı sürüm
Atria-Dawn Preview524.288 tokenjson_object ve json_schemayok, görsel içeren istek 400 döneruygun; MIT lisanslı açık önizleme
Agents-A1262.144 tokenjson_object ve json_schemavardoküman 262.144 token'a sığıyorsa ya da sayfa görseli varsa
Sage-A1.5262.144 tokenjson_object ve json_schemavarAgents-A1 ile aynı
Intern-S2262.144 tokenyok; JSON'u istemde isteyinvarşemaya bağlı çıktı gerekiyorsa uygun değil

Tek istek günlük hakkın ne kadarını kullanır?

Girdi, çıktı ve düşünme aynı 524.288 token'lık pencereyi paylaşır ve üçü birlikte günlük haktan düşer. Hak her hesap için ve her model için günde 500.000 token'dır, düşünme dahil; yeni hesaplar ilk gün daha düşük bir hakla başlar. Pencere haktan büyük olduğu için tek bir istekte istem ve cevabın toplamı günün kalan hakkını geçemez: istem kalan haktan büyükse istek 429 rate_limit_error döner ve hata daha kısa bir istek göndermenizi söyler.

Örneğin 450.000 token'lık bir şartname, 2.000 token'lık talimat ve şema ile 3.000 token'lık bir JSON cevabı düşünün, düşünme kapalı: istek 450.000 + 2.000 + 3.000 = 455.000 token tutar, yani 500.000 token'lık günlük hakkın %91'ini tek istekte kullanır; yeni hesaplar ilk gün daha düşük bir hakla başlar ve o gün bu istek hiç sığmayabilir. Aynı gün kalan 45.000 token aynı dokümanı ikinci kez taşımaz; ikinci istek hakkın 00:00'da (TSİ) yenilenmesini bekler.

Düşünme token'ları da aynı hesaba eklenir; çıkarma işinde düşünmeyi kapatmak hem haktan hem pencereden yer açar. Dokümanınızın token sayısını bilmiyorsanız önce bir bölümünü gönderip usage.prompt_tokens değerine bakın ve tamamını buna göre tahmin edin.

Python örneği: dosyadan metin, json_schema ile alanlar

Aşağıdaki örnek bir metin dosyasını okur, dokümanı tek mesajda Atria-Dawn'a gönderir ve şartnameden altı alanı strict json_schema ile ister. Düşünme extra_body={"reasoning": False} ile kapatılır; aynı sonucu model kimliğinin sonuna :fast ekleyerek de alırsınız. Örnek önce finish_reason değerine bakar: "length" ise cevap kesilmiştir ve JSON eksiktir. Sonra json.loads ile ayrıştırır, altı alanın varlığını ve türünü kontrol eder; uyuşmazlıkta durur ve eksik ya da yanlış türdeki alanları yazar.

Bir metin dosyasını okuyup Atria-Dawn'a https://llmtr.com/v1/chat/completions üzerinden strict json_schema ve düşünme kapalı gönderen, cevabı json.loads ile ayrıştırıp doğrulayan OpenAI Python SDK örneği.

import json
import os
from pathlib import Path

from openai import OpenAI

client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])

# A public specification or a template contract; no customer or personal data.
document = Path("specification.txt").read_text(encoding="utf-8")

EXPECTED_TYPES = {
    "title": str,
    "issuer": str,
    "effective_date": str,
    "deliverables": list,
    "delivery_deadline": str,
    "penalty_clause": str,
}
SCHEMA = {
    "type": "object",
    "properties": {
        "title": {"type": "string"},
        "issuer": {"type": "string"},
        "effective_date": {"type": "string", "description": "YYYY-MM-DD"},
        "deliverables": {"type": "array", "items": {"type": "string"}},
        "delivery_deadline": {"type": "string", "description": "YYYY-MM-DD"},
        "penalty_clause": {"type": "string"},
    },
    "required": list(EXPECTED_TYPES),
    "additionalProperties": False,
}

response = client.chat.completions.create(
    model="internlm/atria-dawn-free",
    messages=[
        {"role": "system", "content": "Extract the fields from the document. Use an empty string when a value is not stated."},
        {"role": "user", "content": document},
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {"name": "specification_fields", "strict": True, "schema": SCHEMA},
    },
    extra_body={"reasoning": False},  # or call "internlm/atria-dawn-free:fast"
    max_tokens=8192,
)

choice = response.choices[0]
print("prompt_tokens:", response.usage.prompt_tokens, "completion_tokens:", response.usage.completion_tokens)
if choice.finish_reason == "length":
    raise SystemExit("The answer was cut off: raise max_tokens or send a shorter document.")

data = json.loads(choice.message.content)
missing = [key for key in EXPECTED_TYPES if key not in data]
wrong = [key for key, kind in EXPECTED_TYPES.items() if key in data and not isinstance(data[key], kind)]
if missing or wrong:
    # A retry sends the whole document again and counts toward the daily allowance again.
    raise SystemExit(f"Schema mismatch: missing={missing} wrong_type={wrong}")

print(json.dumps(data, indent=2, ensure_ascii=False))

Şema uyuşmazlığında ne yapılır?

json.loads hata verirse ya da zorunlu bir alan eksikse önce finish_reason değerine bakın. "length", cevabın max_tokens sınırında ya da kalan hakta kesildiğini gösterir; sınırı yükseltin, düşünmeyi kapatın ya da daha kısa bir doküman parçası gönderin. finish_reason "stop" iken şemaya uymayan bir cevap aldıysanız isteği bir kez tekrarlayın; tekrar da uymazsa şemayı sadeleştirin, örneğin iç içe nesneleri azaltın. Her tekrar dokümanın tamamını yeniden gönderir ve günlük haktan yeniden düşer.

Doküman tek isteğe sığmıyorsa bölümlere ayırın, her bölümü aynı şemayla gönderin ve sonuçları kendi kodunuzda birleştirin; her bölüm kendi istem token'larıyla haktan düşer.

Hangi durumda hangisi?

Seçim dokümanın boyutuna, görsel içerip içermediğine ve verinin hassasiyetine göre yapılır; çıktı kalitesini kendi dokümanlarınızla karşılaştırın.

  • Doküman 262.144 token'ı aşıyor ve yalnızca metin: Atria-Dawn; açık ağırlıklı sürümü denemek istiyorsanız Atria-Dawn Preview.
  • Doküman 262.144 token'a sığıyor ve sayfa görselleri de var: Agents-A1 ya da Sage-A1.5; ikisi de json_schema ve görsel kabul eder.
  • Şemaya bağlı çıktı şart değil ve görselden bilimsel bir tablo okunacak: Intern-S2; JSON'u istemde isteyin, response_format göndermeyin.
  • Hassas, kişisel ya da müşteri verisi içeren doküman: bu satırların hiçbirini kullanmayın; veri notu istemlerin günlüğe kaydedilebileceğini ve modeli geliştirmek için kullanılabileceğini söyler.

1 Kasım 2026'dan sonra uzun doküman çıkarma

31 Ekim 2026 23:59'dan (TSİ) sonra, yani 1 Kasım 2026 00:00'dan itibaren Atria-Dawn 410 model_retired döner ve başka bir modele yönlendirilmez; model kimliğini değiştirmeniz gerekir. Ücretsiz devam için Agnes 2.5 Flash (agnes/agnes-2.5-flash) aynı 524.288 token bağlamı ve json_schema sunar; kotası token değil istek sayar ve tek yanıt en fazla 65.536 token olabilir. Nemotron 3 Ultra (nvidia/nemotron-3-ultra-550b-a55b) 1.000.000 token bağlam ve JSON modu (json_object) sunar ve günlük kotayla çalışır; kartında json_schema listelenmez. Nemotron 3 Ultra'nın veri notu da istemlerin günlüğe kaydedilebileceğini ve modeli geliştirmek için kullanılabileceğini söyler.

Ücretli tarafta DeepSeek V4.1 Flash (deepseek/deepseek-flash) 1.000.000 token bağlam ve JSON modu sunar, ama json_schema desteklemez: response_format içinde yalnızca json_object gönderin, şemayı sistem mesajında tarif edin ve cevabı kendi kodunuzda doğrulayın. Fiyatı 1 milyon token başına yoğun saat dışında 0,15 $ girdi ve 0,60 $ çıktıdır, önbellekten okunan girdi daha düşük fiyatlıdır; hafta içi yoğun saatlerde, Çin resmî tatilleri hariç, her kalem iki katıdır. Örneğin 450.000 token girdi ve 3.000 token çıktı yoğun saat dışında 0,0693 $ (0,0675 $ girdi + 0,0018 $ çıktı), yoğun saatte 0,1386 $ tutar.

Atria-Dawn ile uzun dokümandan JSON Schema ile alan çıkarma

Alanları bir JSON Schema olarak yazın, dokümanı tek istekte Atria-Dawn'a gönderin ve cevabı doğrulayın.

  1. Şema. Çıkaracağınız alanları strict: true, additionalProperties: false ve tam required listesiyle bir JSON Schema olarak yazın.
  2. İstek. Dokümanı tek kullanıcı mesajında, düşünme kapalı ve response_format ile https://llmtr.com/v1/chat/completions uç noktasına gönderin.
  3. Doğrulama. finish_reason değerine bakın, content alanını json.loads ile ayrıştırın ve zorunlu alanları kontrol edin.

Sık sorulan sorular

Intern-S2 ile JSON Schema kullanabilir miyim?

Hayır. Intern-S2'de response_format desteklenmez; JSON'u istemde isteyin ve cevabı kendiniz doğrulayın. Şemaya bağlı çıktı için Atria-Dawn, Atria-Dawn Preview, Agents-A1 ya da Sage-A1.5'i kullanın.

524.288 token'lık bir dokümanı tek istekte gönderebilir miyim?

Pencere 524.288 token'dır, ama istem ve cevap birlikte günün kalan hakkını geçemez. Hak her model için günde 500.000 token'dır ve yeni hesaplar ilk gün daha düşük bir hakla başlar; tek istekte gönderebileceğiniz doküman, cevap payı düşüldükten sonra kalan hak kadardır.

Cevap finish_reason: "length" ile gelirse ne yapmalıyım?

Cevap max_tokens sınırında ya da kalan hakta kesilmiştir ve JSON eksiktir. max_tokens değerini yükseltin, düşünmeyi :fast ya da "reasoning": false ile kapatın veya dokümanı bölümler halinde gönderin.

İlgili yazılar