Entegrasyon rehberleri · 2026-08-29
Cline ile LLMTR: editör panelinde sağlayıcı kurulumu
Cline eklentisinde LLMTR sağlayıcısını ayarlar panelinden seçmeyi, Plan ve Act modlarının neden ayrı model alanı tuttuğunu ve SDK tarafındaki builtin kaydının varsayılan modelindeki emeklilik sorununu anlatıyoruz.
Entegrasyon editörün üç ayrı katmanına dokunuyor
Entegrasyon knowhycodata/cline deposunun feat/add-llmtr-provider dalında yaşıyor; eklentinin resmi sürümünde bu sağlayıcı kaydı bulunmaz, dolayısıyla kurulumu o daldan yapmanız gerekir. Cline tarafında LLMTR desteği tek bir dosyada durmaz. Sağlayıcı listesine bir kayıt eklenir, ayarlar arayüzüne bir bileşen konur ve isteği kuran bir işleyici sınıfı yazılır. Liste kaydı sağlayıcıyı açılır menüde görünür yapar; arayüz bileşeni anahtar alanı ile model seçiciyi çizer; işleyici sınıfı seçilen modeli gerçek isteğe çevirir.
Bu üçlü ayrım kurulumda işe yarar. Sağlayıcı menüde görünmüyorsa sorun liste kaydındadır; görünüyor ama alanlar boş geliyorsa arayüz bileşenindedir; alanlar dolu ama istek hata veriyorsa işleyicidedir. Hata mesajını hangi katmanın ürettiğini bilmek arama alanını daraltır.
- Sağlayıcı listesi kaydı: llmtr değeri ve LLMTR etiketi
- Ayarlar arayüzü bileşeni: anahtar alanı, model seçici ve model bilgi görünümü
- İstek işleyicisi: gateway adresine bağlanan akışlı sohbet tamamlama çağrısı
- Cline dokümantasyonunda LLMTR, aynı desende kurulan sağlayıcılar sayfasında listelenir
Ayarlar panelinde anahtar ve model
Panelde sağlayıcı olarak LLMTR seçildiğinde önce anahtar alanı gelir. Bu alanın yardım metni anahtarın yerel olarak saklandığını ve yalnızca eklentinin isteklerinde kullanıldığını söyler; aynı metin Cline'ın karmaşık istem şablonlarıyla çalıştığını, yeteneği daha düşük modellerin beklendiği gibi davranmayabileceğini de hatırlatır.
Anahtar girildikten sonra model seçici, eklentiyle birlikte gelen LLMTR model tanımlarından beslenir. Seçim yapıldığında altındaki bilgi görünümü o modelin tanımlı özelliklerini gösterir. Anahtarı yer tutucu değil gerçek değeriyle girmeniz gerekir; örneklerimizde anahtar llmtr-your_key biçiminde temsil edilir.
Plan ve Act modları ayrı model alanı tutar
Cline'ın en belirgin davranışı burada ortaya çıkar: model seçimi tek bir alana yazılmaz. Panel, o an hangi moddaysanız o modun alanını günceller. Yani planlama sırasında geniş bağlamlı bir modeli, uygulama sırasında daha hızlı bir modeli seçili bırakabilirsiniz; iki seçim birbirinin üzerine yazmaz.
Anahtar alanı ise moda bağlı değildir. Tek bir anahtar iki modu da besler, çünkü ikisi de aynı gateway adresine gider. Aşağıdaki tablo hangi eylemin hangi yapılandırma alanına yazıldığını özetler.
| Panelde yaptığınız | Yazılan alan | Etkisi |
|---|---|---|
| Plan modundayken model seçmek | planModeApiModelId | Yalnızca planlama turlarında kullanılacak model kaydedilir |
| Act modundayken model seçmek | actModeApiModelId | Yalnızca uygulama turlarında kullanılacak model kaydedilir |
| Anahtarı girmek | llmtrApiKey | Mod ayrımı yoktur, tek anahtar iki modu da besler |
| Sağlayıcıyı seçmek | Sağlayıcı listesindeki llmtr değeri | Panelde LLMTR bileşeni çizilir ve isteği LLMTR işleyicisi kurar |
İşleyici isteği nasıl kuruyor
İşleyici sınıfı istemciyi ilk kullanımda oluşturur ve gateway adresini sabit tutar. İstek her zaman akışlı gönderilir, kullanım sayaçları akışa dahil edilir ve sıcaklık sıfırlanır. Araç tanımları varsa OpenAI biçiminde eklenir, gelen parçalardaki araç çağrısı deltaları ayrı bir işleyiciden geçirilir.
Akışta üç tür parça ayrıştırılır: metin içeriği, araç çağrısı deltaları ve düşünme içeriği. Düşünme içeriği taşıyan modellerde bu parça metne karışmaz, ayrı bir akış türü olarak yayımlanır. Son parçadaki kullanım bilgisi giriş ve çıkış jetonu olarak raporlanır; ücretlendirme jeton bazlı olduğu için bu sayaç harcamayı izlemenin en doğrudan yoludur.
İstemci oluşturma ve akışlı istek çağrısı, işleyici sınıfından
this.client = createOpenAIClient({
baseURL: "https://llmtr.com/v1",
apiKey: this.options.llmtrApiKey,
})
const stream = await client.chat.completions.create({
model: model.id,
messages: openAiMessages,
temperature: 0,
stream: true,
stream_options: { include_usage: true },
...getOpenAIToolParams(tools),
})
SDK tarafındaki builtin kaydı ve emekli varsayılan
Editör eklentisinin yanında Cline'ın SDK paketleri de LLMTR'yi yerleşik bir sağlayıcı olarak tanır. Kayıt, sağlayıcıyı OpenAI uyumlu ailede tutar, ortam değişkeni olarak LLMTR_API_KEY okur ve model listesini ayrı bir üretici fonksiyondan alır.
Bu kayıtta dikkat edilmesi gereken bir nokta var. Varsayılan model kimliği llmtr/sincap olarak yazılmış; oysa bu rota herkese açık katalogda emekli durumda. Aynı kimlik SDK'nın statik Türkiye barındırmalı model listesinde de bulunuyor. Kurulumu yaparken varsayılana güvenmeyin, panelden canlı bir model seçin: llmtr/gemma-4 ve llmtr/qwen3-6-35b bu listedeki canlı seçeneklerdir. Aynı listedeki llmtr/medgemma-4b ve llmtr/ornith-1-35b ise 21 Ağustos 2026'da geri çekildi ve halefleri tanımlı değil; ikisi de artık istek karşılamıyor.
SDK yerleşik sağlayıcı kaydı, varsayılan model kimliği dahil
{
id: "llmtr",
name: "LLMTR",
description: "Turkey-based AI gateway with Turkey-hosted and global models",
family: "openai-compatible",
defaultModelId: "llmtr/sincap",
apiKeyEnv: ["LLMTR_API_KEY"],
modelsFactory: buildLlmtrModels,
defaults: { baseUrl: "https://llmtr.com/v1" },
}
Doğrulama ve hata okuma
Kurulumdan sonra ilk denemeyi küçük bir düzenleme isteğiyle yapın: eklenti araç çağrısı üretiyorsa hem akış hem araç yolu çalışıyor demektir. Hata alırsanız mesajın metni hangi katmanda durduğunuzu söyler.
Aşağıdaki tablo işleyici kodunda üretilen davranışları listeler. Bunlar tahmin değil, dal üzerindeki kodun doğrudan karşılıklarıdır.
| Durum | Nerede oluşur | Sonuç |
|---|---|---|
| Anahtar alanı boş bırakılmış | İstemci oluşturma adımı | İstek hiç gönderilmez, anahtarın zorunlu olduğunu söyleyen hata atılır |
| İstemci kurulurken hata oluşuyor | İstemci oluşturma adımı | Asıl hata mesajı, istemci oluşturma hatası olduğunu belirten bir önekle sarılır |
| Seçili model kimliği eklenti listesinde yok | Model çözümleme adımı | Kimlik yok sayılır ve varsayılan model kimliğine düşülür |
| Model düşünme içeriği döndürüyor | Akış döngüsü | İçerik metne karıştırılmaz, ayrı bir düşünme parçası olarak yayımlanır |
| Akışın son parçası kullanım bilgisi taşıyor | Akış döngüsü | Giriş ve çıkış jeton sayıları arayüze raporlanır |
Sık sorulan sorular
Plan modunda başka, Act modunda başka model kullanabilir miyim?
Evet. Model seçimi moda göre ayrı alanlara yazılır, bu yüzden planlama ve uygulama turları farklı modellerde çalışabilir. Anahtar alanı ortaktır; iki mod da aynı anahtarla aynı gateway adresine gider.
Girdiğim API anahtarı nerede saklanıyor?
Anahtar alanının yardım metni anahtarın yerel olarak saklandığını ve yalnızca bu eklentinin isteklerinde kullanıldığını belirtiyor. Anahtarı paylaşılan bir depoya veya proje yapılandırmasına yazmayın; panel dışında bir kopya tutmanız gerekiyorsa ortam dosyası kullanın.
Model listesinde olmayan bir kimlik yazarsam ne olur?
İşleyicinin model çözümleme adımı, kimliği eklentinin model tanımları içinde arar. Bulamazsa kimliği yok sayıp varsayılan modele düşer. Yani sessizce başka bir modelle çalışıyor olabilirsiniz; seçimi panelden doğrulayın.
SDK kaydındaki varsayılan model neden çalışmıyor?
Kayıttaki varsayılan model kimliği llmtr/sincap; bu rota herkese açık katalogda emekli durumda. Emekli bir rotaya giden istek 410 model_retired hatasıyla reddedilir ve yanıt halefi adıyla söyler, yani varsayılana bırakılan bir kurulum ilk istekte durur. Panelden canlı bir model kimliği seçmek bu durumu ortadan kaldırır.