Entegrasyon rehberleri · 2026-09-16

Motif 3 API kullanımı: LLMTR ile ilk istek

Motif 3 modelini OpenAI uyumlu bir istemciyle çağırma rehberi: base URL değişimi, araç çağrısı, şema zorlamalı JSON, akış, prompt cache ve ücretsiz satırda kotanın nasıl davrandığı.

Bir uygulamanın OpenAI uyumlu istemciyle LLMTR üzerinden Motif 3 modeline istek göndermesini ve araç çağrısı ile şema zorlamalı yanıt almasını gösteren entegrasyon şeması.

Değiştirmeniz gereken iki şey var

Motif 3, LLMTR üzerinde OpenAI uyumlu chat completions ucundan çağrılır. Mevcut istemcinizi koruyup yalnızca base URL ve model kimliğini değiştirmeniz yeterlidir; istek gövdesinin şekli aynıdır.

Model kimliği motif/motif-3'tür. İstek yalnızca metin taşıyabilir: görsel, ses veya doküman parçası içeren bir istek reddedilir ve bu reddi gateway sağlayıcıya gitmeden verir.

İlk istek

Aşağıdaki çağrı 200 döner ve yanıtın yanında bir akıl yürütme metni de gelir. Bu beklenen davranıştır: model her yanıttan önce düşünür ve bu kapatılamaz, dolayısıyla ilk token'a kadar geçen süreyi buna göre değerlendirin.

Motif 3 ile temel chat completions isteği

curl "$LLMTR_BASE_URL/v1/chat/completions" \
  -H "Authorization: Bearer llmtr-your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "motif/motif-3",
    "messages": [
      { "role": "user", "content": "Find the bug in this function." }
    ],
    "max_tokens": 8192
  }'

Araç çağrısı

tool_choice alanının auto, required ve adlandırılmış fonksiyon biçimlerinin üçü de çalışır. Model tek turda birden fazla araç çağırabilir, geri verdiğiniz araç sonucunu okur ve ondan cevap üretir. Akış üzerinde de aynı çağrı parça parça toplanır.

Tek kural şudur: araçların kullanılmasını istemiyorsanız isteğe tools alanını hiç eklemeyin. tools alanı doluyken tool_choice none göndermek bu satırda reddedilir, çünkü sağlayıcı o değeri uygulamıyor. Ayrıntısı serinin sessiz hatalar yazısında.

Zorunlu araç seçimiyle istek

curl "$LLMTR_BASE_URL/v1/chat/completions" \
  -H "Authorization: Bearer llmtr-your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "motif/motif-3",
    "messages": [
      { "role": "user", "content": "Read the build log and tell me which test failed." }
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "read_build_log",
          "description": "Returns the last build log for a branch",
          "parameters": {
            "type": "object",
            "properties": { "branch": { "type": "string" } },
            "required": ["branch"]
          }
        }
      }
    ],
    "tool_choice": "required",
    "max_tokens": 4096
  }'

Şema zorlamalı çıktı

response_format alanının json_object ve json_schema biçimleri desteklenir. Şemayı strict true ile gönderdiğinizde gerçekten zorlanır: ölçümde şemanın yasakladığı anahtarları ve yanlış tipte bir değeri isteyen bir isteme karşı bile şema korundu.

Bu, ajan adımlarında önemlidir. Modelin cevabını kod içinde ayrıştıracaksanız, serbest metni ayrıştırmaya çalışmak yerine şemayı zorlamak hem daha az kırılgan hem de yeniden deneme sayısını düşürür.

json_schema ile şema zorlamalı yanıt

curl "$LLMTR_BASE_URL/v1/chat/completions" \
  -H "Authorization: Bearer llmtr-your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "motif/motif-3",
    "messages": [
      { "role": "user", "content": "Summarise this stack trace." }
    ],
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "trace_summary",
        "strict": true,
        "schema": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "failing_file": { "type": "string" },
            "line": { "type": "integer" },
            "cause": { "type": "string" }
          },
          "required": ["failing_file", "line", "cause"]
        }
      }
    },
    "max_tokens": 1024
  }'

Akış ve kullanım sayaçları

Akış desteklenir. Akış sonunda dönen kullanım bloğunda giriş ve çıkış token sayılarının toplamı, bildirilen toplam değere birebir eşit çıktı.

Bir uyarı: bu satır akıl yürütme token sayacını her yanıtta sıfır olarak bildiriyor, tam bir akıl yürütme metni yayınlarken bile. Yani düşünme maliyetini o sayaçtan okuyamazsınız; akıl yürütme token'ları çıktı sayacının içindedir.

OpenAI Python istemcisiyle akış ve kullanım bloğu

from openai import OpenAI

client = OpenAI(
    base_url="https://llmtr.com/v1",
    api_key="llmtr-your_key",
)

stream = client.chat.completions.create(
    model="motif/motif-3",
    messages=[{"role": "user", "content": "Explain this regression in three sentences."}],
    max_tokens=2048,
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
    if chunk.usage:
        print()
        print(chunk.usage)

Prompt cache

Tekrarlanan istem önekleri önbelleğe alınır. Ölçümde 8.837 token'lık aynı önek tekrar gönderildiğinde önbellekten okunan token sayısı ilk çağrıdaki 0 değerinden sonraki çağrılarda 8.704 değerine çıktı, yani önekin neredeyse tamamı önbellekten geldi.

Bu satır bugün ücretsiz olduğu için önbellek faturaya yansımaz, ancak kullanım kayıtlarınızda görünür. Ajan döngülerinde sabit sistem istemini ve araç tanımlarını istemin başında tutmak, gecikmeyi düşürmenin en ucuz yoludur.

Ücretsiz satırda kota nasıl davranır

Kota token değil istek sayar. Kaç token harcadığınızdan bağımsız olarak her çağrı bir hak tüketir ve pencere kayandır: gece yarısı sıfırlanan bir sayaç yoktur, harcadığınız her hak kendi isteğinin üzerinden 24 saat geçtiğinde tek tek geri gelir.

Başarısız sonuçlanan çağrılar da hak tüketebilir. Bağlam penceresini aşan bir istem veya sağlayıcıdan dönen bir hata hakkınıza mal olabilir; yeniden deneme döngüleri yazarken bunu hesaba katın.

İsteğiniz hiç kabul edilmeden reddedilirse hak tüketilmez. Geçersiz gövde, modelin kabul etmediği bir içerik türü ve araçlarla birlikte gönderilen tool_choice none bu gruba girer. Kotaya takıldığınızda yanıt Retry-After başlığı taşır, yani yeni günü beklemek yerine o süreyi bekleyebilirsiniz. Ölçümlü modelleriniz bu kotadan etkilenmez.

  • Kota istek sayar, token değil.
  • Pencere kayandır ve haklar tek tek geri gelir.
  • Kabul edilmeden reddedilen istekler hak tüketmez.
  • Kotaya takıldığınızda Retry-After başlığı bekleme süresini söyler.

Üretime almadan önce

Bu satır ücretsizdir ama bedelsiz değildir: istekler yurt dışındaki üçüncü taraf altyapıda işlenir ve bu satır için sıfır veri saklama garantisi verilmemektedir. Hassas veriyi bu modele göndermeyin.

Belirlenimcilik beklemeyin. Sıcaklık sıfırda bile arka arkaya üç çağrı üç farklı yanıt verdi ve seed alanı tekrarlanabilirlik sağlamadı. Yanıtı bir altın kopyayla karşılaştıran testler bu modelde kırılgan olur; şema zorlamalı çıktı ile alan bazında doğrulama daha sağlam bir yaklaşımdır.

Son olarak n alanı desteklenmez ve 400 ile reddedilir; tek istekte birden fazla tamamlama alamazsınız. Birden fazla aday istiyorsanız birden fazla istek göndermeniz gerekir, ki bu ücretsiz satırda birden fazla hak demektir.

LLMTR üzerinden Motif 3 ile ilk isteği göndermek

OpenAI uyumlu bir istemciyi Motif 3 modeline yönlendirip araç çağrısı ve şema zorlamalı çıktıyı doğrulayan beş adım.

  1. API anahtarı oluşturun. LLMTR panelinde bir API anahtarı üretin ve onu ortam değişkeni olarak saklayın. Anahtarı kod deposuna veya istemci tarafına koymayın; bu model ücretsiz olsa da anahtar hesabınızın tamamına erişir.
  2. İstemcinin base URL değerini değiştirin. Mevcut OpenAI uyumlu istemcinizde yalnızca base URL ve model kimliğini değiştirin. Model kimliği motif/motif-3 olmalıdır; kütüphaneyi veya istek gövdesinin şeklini değiştirmeniz gerekmez.
  3. Basit bir tamamlama isteğiyle doğrulayın. Tek mesajlı bir istek gönderin ve 200 yanıtı aldığınızı görün. Yanıtta akıl yürütme metni de dönecektir; bu beklenen davranıştır ve kapatılamaz, dolayısıyla ilk yanıt süresini buna göre değerlendirin.
  4. Araç çağrısını deneyin. İsteğe bir araç tanımı ekleyip tool_choice değerini required yapın ve dönen tool_calls dizisini kontrol edin. Araçları kapatmak istediğinizde tool_choice none göndermeyin; isteğe tools alanını hiç eklemeyin.
  5. Çıktıyı şemaya bağlayın. Yanıtı kod içinde ayrıştıracaksanız response_format alanını json_schema ve strict true ile gönderin. Ölçümde şema, kendisini ihlal etmeye çalışan bir isteme karşı bile korundu, dolayısıyla ayrıştırma katmanınızı buna güvenerek yazabilirsiniz.

Sık sorulan sorular

Mevcut OpenAI SDK kodumu değiştirmem gerekir mi?

Hayır. İstemciyi koruyup base URL ve model kimliğini değiştirmeniz yeterlidir. Model kimliği motif/motif-3'tür ve istek gövdesinin şekli aynıdır.

Motif 3 akışı destekliyor mu?

Evet. Akış desteklenir ve araç çağrısı akış üzerinde parça parça toplanır. Akış sonunda dönen kullanım bloğunda giriş ile çıkış toplamı bildirilen toplam değere birebir eşittir.

Ücretsiz kota tam olarak neyi sayar?

İstek sayar, token değil. Harcadığınız token miktarından bağımsız olarak her çağrı bir hak tüketir, pencere kayandır ve haklar kendi isteğinin üzerinden 24 saat geçtiğinde tek tek geri gelir.

Başarısız bir istek kotamdan düşer mi?

Duruma göre. Kabul edilip işlenen ve sonra hata dönen bir istek hak tüketebilir. Geçersiz gövde, kabul edilmeyen bir içerik türü veya araçlarla birlikte gönderilen tool_choice none gibi hiç kabul edilmeyen istekler hak tüketmez.

Prompt cache ücretsiz satırda işe yarar mı?

Evet, gecikme tarafında yarar. Fatura zaten sıfırdır, ancak önbellekten okunan token sayısı kullanım kayıtlarınızda görünür ve tekrarlanan bir öneki istemin başında tutmak yanıt süresini kısaltır.

İlgili yazılar