Entegrasyon rehberleri · 2026-10-22

Intern-S2 API ile bilimsel grafik ve tablo okuma

Intern-S2'ye bilimsel bir grafik ya da tablo görselini base64 ile gönderin ve satırları JSON olarak alın; model 31 Ekim 2026'ya kadar ücretsiz.

Şema: https://llmtr.com/v1 altında tek kutu, internlm/intern-s2-free; soldan bir tablo görseli girer, sağdan JSON satırlar çıkar.

Kısa yanıt: görseli Intern-S2'ye gönderin, JSON'u istemde isteyin

LLMTR, farklı sağlayıcıların dil modellerine tek bir OpenAI uyumlu API ile erişim veren bir gateway'dir. Bilimsel bir grafiği ya da tabloyu görselden okutacaksanız LLMTR'de Intern-S2'yi internlm/intern-s2-free kimliğiyle, https://llmtr.com/v1 adresindeki /v1/chat/completions uç noktasından çağırın; model görsel kabul eder ve 31 Ekim 2026 23:59'a (TSİ) kadar ücretsizdir. Görseli mesajın içinde image_url parçası olarak, sorunuzu yanında bir text parçası olarak gönderirsiniz. 31 Ekim 2026'dan sonra aynı iş için ücretsiz satır olarak nvidia/nemotron-3.5-super-vl-free'yi, ücretli satır olarak qwen/qwen3.6-35b-a3b'yi kullanın.

Shanghai AI Lab'ın model kartı Intern-S2'yi bilimsel zekâ ve uzun soluklu ajanlar için geliştirilmiş çok kipli bir temel model olarak tanımlar. Karta göre model, görsel ön eğitimle bilimsel literatürün ham sayfalarından doğrudan öğrenir ve 20'den fazla alanda bilimsel pekiştirmeli öğrenme görevleriyle eğitilmiştir; lisansı Apache 2.0'dır. LLMTR model sayfası da modelin şekil, grafik ve tablo içeren soruları görselden okuyabildiğini belirtir.

Bilimsel bir grafik ya da tablo görselden API ile nasıl okunur?

llmtr.com'da bir hesap açın, Panel > API Anahtarları altında bir anahtar oluşturun ve onu LLMTR_API_KEY ortam değişkenine yazın. OpenAI istemcisinin base_url değerini https://llmtr.com/v1 yapın. Görsel bir https adresinde duruyorsa image_url parçasına o adresi yazabilirsiniz; dosya yerel diskinizdeyse aşağıdaki örnekteki gibi okuyup base64'e çevirin ve data:image/png;base64, önekiyle bir data URL oluşturun.

Intern-S2'de JSON modu yoktur, bu yüzden biçimi istemde tarif edin: her satır için bir nesne, anahtar olarak sütun başlıkları, sayılar ve birimler görseldeki gibi. Örnek, yanıtı json.loads ile ayrıştırmayı dener; model JSON'u bir kod bloğunun içine koyduysa önce o işaretleri temizler, ayrıştırma başarısız olursa yanıtın başını yazdırır. Kullanım hakkı dolduğunda gelen 429 yanıtını da yakalar ve Retry-After başlığını gösterir.

finish_reason değerine her zaman bakın. stop, yanıtın kendiliğinden bittiğini; length, max_tokens sınırında kesildiğini gösterir. Kesik bir JSON dizisi ayrıştırılamaz; length gördüğünüzde max_tokens değerini yükseltin ya da tabloyu parçalara bölüp her istekte daha az satır isteyin. Örnekte max_tokens değeri 8192'dir, çünkü düşünme token'ları da bu sınıra sayılır.

Yerel bir tablo görselini base64 data URL olarak internlm/intern-s2-free modeline gönderen, satırları istemde JSON olarak isteyen, yanıtı json.loads ile ayrıştıran ve finish_reason ile usage değerlerini yazdıran OpenAI Python SDK örneği.

import base64
import json
import os

from openai import OpenAI, RateLimitError

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

# Until 31 October 2026, 23:59 (TRT). From 1 November 2026 this id returns 410:
# switch to "nvidia/nemotron-3.5-super-vl-free" or the paid "qwen/qwen3.6-35b-a3b".
MODEL = "internlm/intern-s2-free"

# Read a local PNG and send it as a base64 data URL.
with open("table.png", "rb") as f:
    image_url = "data:image/png;base64," + base64.b64encode(f.read()).decode("ascii")

# No JSON mode on this row: describe the JSON you want in the prompt.
prompt = (
    "Read the table in this image. Return only a JSON array with one object per row, "
    "using the column headers as keys. Copy numbers and units exactly as printed."
)

try:
    response = client.chat.completions.create(
        model=MODEL,
        messages=[{
            "role": "user",
            "content": [
                {"type": "text", "text": prompt},
                {"type": "image_url", "image_url": {"url": image_url}},
            ],
        }],
        # Reasoning is on by default and its tokens count toward max_tokens.
        # For a plain transcription you can turn it off: extra_body={"reasoning": False}
        max_tokens=8192,
    )
except RateLimitError as err:
    print("Limit reached, Retry-After:", err.response.headers.get("retry-after"))
    raise SystemExit(1)

choice = response.choices[0]
if choice.finish_reason == "length":
    print("Cut off at max_tokens: raise it or ask for fewer rows per request.")

text = (choice.message.content or "").strip()
if text.startswith("```"):
    # Remove a Markdown code fence if the model added one.
    text = text.strip("`").removeprefix("json").strip()
try:
    rows = json.loads(text)
    print(len(rows), "rows:", rows[:3])
except json.JSONDecodeError:
    print("Not valid JSON, first 300 characters:", text[:300])

print(response.usage)

Intern-S2'de istek ayrıntıları: görsel, JSON ve araçlar

response_format göndermeyin; bu satır JSON modunu desteklemez. Araç tanımlayacaksanız tool_choice için auto kullanın: required ya da adlandırılmış bir fonksiyon 400 döner, araçlar ekliyken none da 400 döner. Araç kullanmayacağınız bir istekte tools alanını hiç göndermeyin.

LLMTR'nin görsel girdi dokümantasyonu JPEG ya da PNG biçiminde, 5 MB altında ve kenarları 512 ile 2048 piksel arasında görseller önerir; görselde okunacak metin varsa yüksek kontrast ve keskin çözünürlük ister. Görsel de istemin parçasıdır ve hem bağlamdan hem günlük haktan pay alır; payını görmek için aynı soruyu görselli ve görselsiz gönderip usage.prompt_tokens değerlerini karşılaştırın.

LLMTR'de Intern-S2, 22 Ekim 2026 itibarıyla
ÖzellikIntern-S2
Model kimliğiinternlm/intern-s2-free
Uç nokta/v1/chat/completions (https://llmtr.com/v1)
Bağlam penceresi262.144 token
Tek yanıtta çıktıayrı bir sınır listelenmez, bağlam penceresiyle sınırlıdır
Girdimetin ve görsel (https adresi ya da base64 data URL); video_url 400 döner
JSONresponse_format desteklenmez; JSON'u istemde isteyin
tool_choiceyalnızca auto; required ve adlandırılmış fonksiyon 400, araçlar ekliyken none 400
Düşünmevarsayılan açık, reasoning_content alanında gelir; "reasoning": false ya da :fast ile kapanır; reasoning_effort 400
Dönem ve günlük hak31 Ekim 2026 23:59'a (TSİ) kadar; model başına günde 500.000 token (girdi ve çıktı birlikte), yeni hesaplar ilk gün daha düşük bir hakla başlar
1 Kasım 2026'dan sonra410 model_retired; istek başka bir modele yönlendirilmez

Uzun bir tabloda düşünme açık mı kalmalı, kapalı mı?

Intern-S2 varsayılan olarak yanıttan önce düşünür; düşünme metni reasoning_content alanında, yanıt content alanında gelir. Düşünme token'ları max_tokens sınırına ve günlük hakka sayılır. Hak model başına günde 500.000 token'dır, girdiyi ve çıktıyı birlikte sayar ve her gün 00:00'da (TSİ) yenilenir; yeni hesaplar ilk gün daha düşük bir hakla başlar. Girdi ve çıktı birlikte 8.000 token tutan bir okuma isteği bu haktan günde 62 kez karşılanır. Hak bitince istek 429 rate_limit_error döner ve Retry-After başlığı ne zaman tekrar deneyeceğinizi söyler.

Tercih işin türüne bağlıdır. Hücreleri olduğu gibi aktaran uzun bir döküm istiyorsanız düşünmeyi kapatın: "reasoning": false gönderin (Python'da extra_body={"reasoning": False}) ya da model kimliğinin sonuna :fast ekleyin. Böylece max_tokens'ın daha büyük kısmı satırlara kalır. Grafikten bir eğilim, iki seri arasındaki fark ya da eksenden okunup hesaplanan bir değer istiyorsanız düşünmeyi açık bırakın ve max_tokens'ı cömert tutun; :think ya da "reasoning": true düşünmeyi açık tutar. reasoning_effort bu satırda 400 döner: düşünmenin seviyesi yoktur, yalnızca açılır ya da kapanır.

Hangi durumda hangisi?

Aşağıdaki seçimler satırların kabul ettiği girdiden, JSON desteğinden, düşünme ayarından ve tarihten çıkar; okuma doğruluğunu kendi şekil ve tablolarınızla karşılaştırın.

  • Bilimsel bir şekli, grafiği ya da tabloyu görselden okutup sonucu 31 Ekim 2026 23:59'a (TSİ) kadar ücretsiz almak: Intern-S2.
  • Hücreleri aynen aktaran uzun bir tablo dökümü: Intern-S2'de düşünmeyi :fast ya da "reasoning": false ile kapatın.
  • Eğilim, fark ya da eksenden hesaplanan bir değer isteyen soru: Intern-S2'de düşünmeyi açık bırakın, max_tokens'ı cömert tutun ve finish_reason'a bakın.
  • JSON Schema ile zorlanmış çıktı, video ya da 31 Ekim 2026'dan sonra ücretsiz devam: Nemotron 3.5 Super VL; ücretli bir satır gerekiyorsa Qwen3.6 35B-A3B.
  • Hassas, kişisel ya da müşteri verisi taşıyan görsel: bu yazıdaki satırlara göndermeyin; Intern-S2 ve Nemotron 3.5 Super VL'nin 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 Intern-S2 yerine hangi satır?

1 Kasım 2026 00:00'dan (TSİ) itibaren Intern-S2'ye gelen istekler 410 model_retired döner ve başka bir modele yönlendirilmez; model kimliğini kendiniz değiştirmeniz gerekir. 31 Ekim 2026'dan sonra ücretsiz devam etmek için Nemotron 3.5 Super VL'yi nvidia/nemotron-3.5-super-vl-free kimliğiyle kullanın: görsel ve video kabul eder, bağlam penceresi 1.000.000 token'dır ve günlük kotayla çalışır. NVIDIA'nın model kartı onu akıl yürütme, kodlama, araç kullanımı, belge anlama ve video anlama için bir görsel-dil modeli olarak tanımlar. Görseli base64 data URL olarak gönderin; bu satır response_format ile json_object ve json_schema, tool_choice'ta auto, required ve adlandırılmış fonksiyon kabul eder, düşünme yine varsayılan açıktır ve "reasoning": false ya da :fast ile kapanır.

Ücretli bir satır isterseniz Qwen3.6 35B-A3B'yi qwen/qwen3.6-35b-a3b kimliğiyle çağırın. 1 milyon token başına 0,07 $ girdi ve 0,70 $ çıktıyla faturalanır, önbellek indirimi yoktur; 10.000 girdi ve 5.000 çıktı token'lık bir okuma isteği 0,0042 $ tutar. Qwen'in model kartı onu görsel kodlayıcılı ve varsayılan olarak düşünme modunda çalışan bir model olarak tanımlar. LLMTR'de görsel kabul eder, response_format ile json_object ve json_schema destekler ve "reasoning": false ile düşünmeyi kapatır; tool_choice'ta yalnızca auto kullanın, required ve adlandırılmış fonksiyon bu satırda desteklenmez. Bakiyeyi Panel > Faturalandırma'dan yükleyin.

Intern-S2 ile bir grafik ya da tablo görselini okuma

Bir LLMTR anahtarı oluşturun, görseli base64 data URL'ye çevirin ve satırları JSON olarak isteyen bir istemle Intern-S2'ye gönderin.

  1. Anahtar. llmtr.com'da hesap açın, Panel > API Anahtarları altında bir anahtar oluşturun ve LLMTR_API_KEY ortam değişkeninde saklayın.
  2. Görsel ve istem. Görseli data:image/png;base64, önekli bir data URL'ye çevirin ve istemde her satır için bir JSON nesnesi isteyin.
  3. İstek ve kontrol. İsteği https://llmtr.com/v1/chat/completions uç noktasına gönderin, finish_reason değerine bakın ve yanıtı json.loads ile ayrıştırın.

Sık sorulan sorular

Intern-S2 görseli URL ile mi, base64 ile mi alır?

İkisini de kabul eder: image_url parçasına bir https adresi ya da data:image/png;base64, önekli bir data URL yazabilirsiniz. Dosya yerel diskinizdeyse base64 data URL kullanın; aynı biçim 31 Ekim 2026'dan sonra geçebileceğiniz Nemotron 3.5 Super VL'de de çalışır.

Intern-S2'den JSON nasıl alınır?

response_format göndermeyin; bu satırda JSON modu desteklenmez. Biçimi istemde tarif edin, yanıtı json.loads gibi bir ayrıştırıcıyla kontrol edin ve finish_reason length ise max_tokens değerini yükseltip isteği tekrarlayın.

Intern-S2 1 Kasım 2026'dan sonra kullanılabilir mi?

Hayır. 1 Kasım 2026 00:00'dan (TSİ) itibaren istekler 410 model_retired döner ve başka bir modele yönlendirilmez. 31 Ekim 2026'dan sonra ücretsiz devam için nvidia/nemotron-3.5-super-vl-free, ücretli bir satır için qwen/qwen3.6-35b-a3b kullanın.

İlgili yazılar