Entegrasyon rehberleri · 2026-08-29
Trae Agent ile LLMTR: Python yapılandırması ve çalışma kaydı
Trae Agent tarafında LLMTR bir Python istemci sınıfı olarak gelir. YAML ve JSON yapılandırma örneklerini, komut satırı çağrısını, modelin hangi uca yönlendirildiğini ve trajectory kaydında ne göründüğünü anlatıyoruz.
Tek sağlayıcı, iki istemci sınıfı
Kaynağı en baştan söyleyelim: bu entegrasyon upstream Trae Agent sürümüne merge edilmedi. İstemci dosyasını, testleri ve örnek yapılandırmaları knowhycodata/trae-agent deposunda feat/llmtr-provider dalı altında bulacaksınız. Yayımlanmış paketle kurulum yapan okuyucu llmtr sağlayıcısını göremez; önce bu dalı çalıştırın.
Entegrasyonun tamamı tek bir Python modülünde toplanmıştır. Modül üç şey tanımlar: kataloğu okuyup önbelleğe alan bir sınıf, sohbet tamamlama ucunu kullanan bir istemci, ve yanıtlar ucunu kullanan ayrı bir istemci. Dışarıya açılan yönlendirici sınıf ise modele bakıp bu ikisinden birini kurar ve tüm çağrıları ona devreder.
Bu yapı Trae Agent'ın geri kalanını değiştirmeden çalışır. Ajan döngüsü tek bir istemci gördüğünü sanır; uç seçimi, hata kurtarması ve önbellek yönetimi yönlendirici sınıfın içinde kalır.
- Yönlendirici sınıf: modeli çözer, istemciyi kurar, çağrıları devreder
- Sohbet tamamlama istemcisi: OpenAI uyumlu ortak taban sınıfın üstüne kurulur
- Yanıtlar istemcisi: mesaj geçmişini ve araç çağrılarını kendisi biçimlendirir
- Katalog sınıfı: uç nokta listesini indirir, diske yazar ve süresi dolunca yeniler
YAML yapılandırması
YAML örneği iki bölüme dokunur. Önce sağlayıcı tanımlanır: anahtar, sağlayıcı adı ve temel adres. Ardından bu sağlayıcıyı kullanan bir model girdisi eklenir; jeton üst sınırı, sıcaklık, örnekleme parametreleri ve yeniden deneme sayısı burada durur.
Model girdisini tanımlamak tek başına yeterli değildir. Ajanın hangi model girdisini kullanacağını da göstermeniz gerekir; örnek dosyadaki not tam olarak bunu söyler. Temel adres alanını boş bırakırsanız istemci varsayılan gateway adresini kendisi yazar, yani bu alan yalnızca araya kendi vekilinizi koyacaksanız gereklidir.
Sağlayıcı ve model girdisi, örnek YAML yapılandırmasından
model_providers:
llmtr:
api_key: llmtr-your_key
provider: llmtr
base_url: https://llmtr.com/v1
models:
llmtr_model:
model_provider: llmtr
model: anthropic/claude-sonnet-5
max_tokens: 4096
temperature: 0.5
top_p: 1
top_k: 0
max_retries: 10
parallel_tool_calls: true
JSON yapılandırması ve ortam değişkenleri
JSON örneği aynı alanları tek bir sağlayıcı nesnesinde toplar. YAML biçiminde sağlayıcı ile model ayrı bölümlere dağılırken, JSON örneğinde model adı doğrudan sağlayıcı girdisinin içinde durur. Hangi biçimi kullanırsanız kullanın alan adları aynıdır.
Anahtarı dosyaya yazmak istemiyorsanız iki ortam değişkeni tanımlıdır: biri anahtarı, diğeri temel adresi taşır. Depoya işlenen bir yapılandırma dosyasında anahtar alanını yer tutucu bırakıp gerçek değeri ortamdan vermek daha güvenli bir alışkanlıktır.
Aynı sağlayıcı, örnek JSON yapılandırmasında
{
"model_providers": {
"llmtr": {
"api_key": "llmtr-your_key",
"base_url": "https://llmtr.com/v1",
"model": "anthropic/claude-sonnet-5",
"max_tokens": 4096,
"temperature": 0.5,
"top_p": 1,
"top_k": 0,
"max_retries": 10
}
}
}
Komut satırında model seçmek
Çalıştırma komutunda sağlayıcı ve model ayrı bayraklarla verilir. Sağlayıcı adı llmtr, model ise gateway kataloğundaki kanonik kimliktir; ek bir yeniden adlandırma yoktur. Türkiye barındırmalı bir rota da küresel bir rota da aynı anahtarla aynı komuttan çağrılır.
Akıl yürütme gücünü model kimliğine iki nokta üst üste ile eklenen bir sonek belirler. İstemci yönlendirme yaparken bu soneki kimlikten ayırır, yani sonek uç seçimini bozmaz. Bir başka ayrıntı: ajan her adımı araç çağrısıyla ilerlettiği için yerel işlev çağrısı üretmeyen modeller döngüyü çalıştıramaz.
Ortam değişkenleri ve çalıştırma komutları
export LLMTR_API_KEY="llmtr-your_key"
export LLMTR_BASE_URL="https://llmtr.com/v1"
# Sohbet tamamlama ucundan giden bir rota
trae-cli run "Fix the bug in main.py" --provider llmtr --model "anthropic/claude-sonnet-5"
# Turkiye barindirmali rota
trae-cli run "Kodu Turkce yorumla" --provider llmtr --model "llmtr/trendyol-asure-12b"
# Akil yurutme gucu sonegiyle
trae-cli run "Plan this refactor" --provider llmtr --model "openai/gpt-5.3-codex:high"
Yönlendirme kararı ve katalog önbelleği
İstemci, modeli çağırmadan önce katalog uç noktasını okur ve o modelin hangi uçları yayımladığına bakar. Katalog anahtarsız okunabildiği için bu kontrol ilk ücretli istekten önce yapılabilir. Sonuç diske bir dosya olarak yazılır ve yirmi dört saatlik bir süre boyunca yeniden kullanılır; süre dolduğunda liste yeniden indirilir.
Gateway tarafındaki kural asimetriktir: sohbet tamamlama isteği, modelin sohbet tamamlama veya yanıtlar bağlaması varsa karşılanır; yanıtlar ucuna yapılan istek ise yalnızca yanıtlar bağlaması olan modellerde geçerlidir. İstemci bu asimetriye güvenmek yerine kataloğu okur ve modeli yayımlanan uca gönderir. Aşağıdaki tablo, testlerdeki katalog örneğinde yer alan modeller için kararın nasıl çıktığını gösterir; tablodaki kimliklerin tamamı herkese açık katalogda canlıdır.
| Model kimliği | Katalogda yayımlanan uç | Seçilen istemci |
|---|---|---|
| anthropic/claude-sonnet-5 | Sohbet tamamlama | Sohbet tamamlama istemcisi |
| llmtr/trendyol-asure-12b | Sohbet tamamlama | Sohbet tamamlama istemcisi |
| google/gemini-2.5-pro | Sohbet tamamlama ve yanıtlar | İki uç birden varsa sohbet tamamlama tercih edilir |
| openai/gpt-5.3-codex | Yalnızca yanıtlar | Yanıtlar istemcisi |
| xai/grok-4.3 | Yalnızca yanıtlar | Yanıtlar istemcisi |
| google/gemini-embedding-001 | Gömme | İstemci kurulmaz, çalıştırma baştan hata verir |
| google/veo-3.1-generate-001 | Video üretimi | İstemci kurulmaz, çalıştırma baştan hata verir |
| Katalogda bulunmayan bir kimlik | Bilinmiyor | Katalog bir kez tazelenir, sonra iyimser olarak sohbet tamamlama denenir |
Trajectory kaydı ve kurtarma davranışı
Trae Agent her adımı bir çalışma kaydına yazar ve bu kayıt entegrasyonun en pratik hata ayıklama aracıdır. Kayıt dosyasının alan listesinde sağlayıcı adı ayrı bir alan olarak durur; LLMTR üzerinden çalıştırdığınızda bu alanda llmtr değerini görürsünüz. Model adı, adım sınırı ve başarı durumu aynı belgede tanımlıdır.
Model çağrıları da kayda ayrı ayrı yazılır: gönderilen mesajlar, dönen yanıt, sağlayıcı, model ve varsa araç tanımları birlikte kaydedilir. Rota değişimi yaşanan bir çalışmada kaydı okumak, hangi istemcinin devreye girdiğini anlamanın en doğrudan yoludur. Kayıt sizin makinenizde tutulur; gateway tarafında istem ve yanıt gövdeleri veritabanına yazılmaz.
Aşağıdaki tablo istemcinin hangi durumda ne yaptığını özetler. Kurtarma davranışının tek seferlik olduğuna dikkat edin: rota değişimi yalnızca ilk başarılı alışverişten önce mümkündür.
| Durum | İstemcinin davranışı | Sizin yapmanız gereken |
|---|---|---|
| Seçilen model sohbet edemiyor | İstemci kurulmadan durur; hata mesajı desteklenen uçları ve aynı sağlayıcıdan sohbet edebilen modelleri sayar | Mesajda önerilen kimliklerden birini seçin |
| Gateway uç uyuşmazlığı bildiriyor | İlk başarılı alışverişten önce bir kez yanıtlar rotasına geçilir, tohumlanan geçmiş korunur | Ek bir işlem gerekmez; geçiş çalışma kaydından izlenebilir |
| Katalog indirilemiyor | Varsa eski önbellek kullanılır, yoksa boş katalogla iyimser davranılır | Ağ erişimini kontrol edin; yanlış uç seçilirse uyuşmazlık kurtarması devreye girer |
| İlk başarılı alışverişten sonra hata geliyor | Rota değiştirilmez, hata yukarı taşınır | Model kimliğini ve uç uyumunu katalogdan doğrulayın |
| Model araç çağrısı üretmiyor | İstemci yetenek varsaymaz ve engelleme yapmaz; kimlikten yetenek çıkarılmaz | Yerel işlev çağrısı olan bir model seçin; arama modelleri düz metin döndürebilir |
Sık sorulan sorular
Katalog önbelleği nerede tutuluyor ve ne zaman yenileniyor?
Uç nokta listesi Trae Agent'ın yerel depolama dizinine bir JSON dosyası olarak yazılır ve yirmi dört saat boyunca yeniden kullanılır. Süre dolduğunda liste yeniden indirilir. Ayrıca katalogda bulunmayan bir model kimliği verdiğinizde istemci kararı vermeden önce listeyi bir kez zorla tazeler.
Akıl yürütme gücünü nasıl seçiyorum?
Gücü model kimliğine iki nokta üst üste ile eklenen bir sonek belirler. İstemcinin normalleştirme fonksiyonu yönlendirme sırasında bu soneki ayırdığı için sonek uç seçimini etkilemez; kimlik katalogda soneksiz haliyle aranır.
Yanıtlar rotasında düşünme zinciri turlar arasında korunuyor mu?
Yanıtlar istemcisi isteği sunucu tarafında saklamayacak biçimde kurar ve şifrelenmiş düşünme içeriğini yanıta dahil ettirir. Şifreli kopyası dönen düşünme öğeleri bir sonraki isteğe yeniden eklenir; şifreli içeriği olmayan öğeler ise sağlayıcı reddedeceği için gönderilmeden düşürülür.
Testleri API anahtarı olmadan çalıştırabilir miyim?
Yönlendirme testleri katalog indirmesini taklit ettiği için anahtarsız çalışır. Gerçek gateway'e giden testler ise anahtar tanımlı değilse atlanır, ayrıca bir ortam değişkeni ile açıkça devre dışı bırakılabilir.