Entegrasyon rehberleri · 2026-08-29
OpenBot’u LLMTR ile çalıştırmak: tek taban URL, iki ajan çalışma zamanı
OpenBot dağıtımını LLMTR üzerine taşırken OPENAI_BASE_URL değerinin hangi bileşenler tarafından okunduğunu, kiracı paketindeki model adının neden aynen yazıldığını ve araç çağrısı ile Responses API kısıtlarını adım adım anlatıyoruz.
Entegrasyon kodda değil, ortam değerinde
OpenBot kendi altyapınızda çalışan, her ajana kendi bilgisayarını verebilen açık kaynak bir sistemdir. LLMTR bağlantısı için deposunda bir sağlayıcı sınıfı yazılmadı; değişiklik knowhycodata/openbot deposunda openai-compatible-base-url dalında duruyor ve üç dosyaya dokunuyor: ortam örneği dosyası, deponun okuma belgesi ve yapılandırma belgesi. Bu dal OpenBot’un kendi sürümüne alınmadı.
Eklenen asıl değer OPENAI_BASE_URL. Tanımsız bırakıldığında istek OpenAI’ye gider. Tanımlandığında aynı sohbet tamamlama API’sini konuşan herhangi bir uç noktaya gider: birden çok sağlayıcıyı önden karşılayan bir gateway, bir vekil sunucu ya da kendi donanımınızdaki bir model.
Bu değerin önemi, tek bir Bot’u değil bütün dağıtımı taşımasıdır. Yapılandırma belgesinin ifadesiyle, dağıtımın yarısının bir yere, diğer yarısının başka bir yere bakması bu tasarımda mümkün değildir.
Hangi değeri kim okuyor
OpenAI biçimli çağrıları üç okuyucu yapar: kiracı paketindeki yerleşik ajanlar için API sunucusu, kendi istemcisini kuran agent-bot ve BOT_PROVIDER değeri openai olduğunda agent-langgraph. Üçü de aynı taban URL’yi okur, bu yüzden tek satır hepsini birlikte yönlendirir.
Anthropic ve Google için ayrı adlar bulunmasının sebebi başka bir URL değil, başka bir API olmalarıdır. ANTHROPIC_BASE_URL ve GOOGLE_GENERATIVE_AI_BASE_URL bu yüzden ayrı yaşar ve ikisi de API sunucusunun zaten okuduğu adlardır.
Aşağıdaki tablo, dala eklenen ve dalın dokunduğu değerleri okuyucularıyla birlikte listeler. Ortam dosyasındaki diğer değerler, örneğin bilgisayar ve gözetmen gizleri, model seçimiyle ilgili değildir.
| Değişken | Varsayılan | Bu değeri okuyan |
|---|---|---|
| OPENAI_API_KEY | tanımsız | API sunucusu, agent-bot, agent-langgraph |
| OPENAI_BASE_URL | tanımsız, yani OpenAI | Aynı üç okuyucu birden |
| BOT_PROVIDER | openai | Yalnızca agent-langgraph |
| ANTHROPIC_API_KEY | tanımsız | agent-langgraph, sağlayıcı anthropic iken |
| ANTHROPIC_BASE_URL | tanımsız | Anthropic API’sini konuşan yol |
| GOOGLE_API_KEY | tanımsız | agent-langgraph, sağlayıcı google iken |
| GOOGLE_GENERATIVE_AI_BASE_URL | tanımsız | Google API’sini konuşan yol |
| BOT_MODEL | Bot kodundaki sağlayıcı varsayılanı | Gönderilen iki Bot |
| BOT_RESPONSES_API | false | Yalnızca agent-langgraph |
Model adı kısaltılmadan iki yere birden yazılır
Model adları olduğu gibi taşınır. Katalogunu ad alanına ayıran bir uç nokta adın iki yarısını da ister; LLMTR kimlikleri saglayici/model biçimindedir, yani openai/gpt-4o yazılır, gpt-4o değil. Aynı kural iki yerde birden geçerlidir: ortam dosyasındaki BOT_MODEL ve kiracı paketindeki varsayılan model alanı.
Kiracı paketinde sağlayıcı alanının değeri openai olarak kalır, çünkü orada seçilen şey konuşulan API’dir, isteğin gittiği adres değil. Kimlik alanı ise saklanan bir kimlik bilgisine yapılan referanstır, kimlik bilgisinin kendisi değil. Bu iki kural, taban URL’yi değiştirdiğinizde paketin geri kalanına dokunmanız gerekmemesini sağlar.
Değerleri yazmadan önce doğrulamanın kolay yolu var: model listesi ucu anahtarsız okunur, yani hangi adın gerçekten yayımlandığını dağıtımı hiç başlatmadan görebilirsiniz.
Kiracı paketindeki model bloğu; varsayılan model adı yazıldığı gibi geçer
model:
provider: openai
credential_secret_ref: openai-api-key
default_model: openai/gpt-4o
İki çalışma zamanı, iki farklı hassasiyet
Gönderilen iki Bot aynı taban URL’yi okur ama esneklikleri aynı değil. Kavram kanıtı niteliğindeki Bot yapısı gereği yalnızca OpenAI API’sini konuşur; o API’yi doğrudan konuştuğu için sağlayıcı seçimi diye bir kavramı yoktur. Çerçeve tarafındaki agent-langgraph ise sağlayıcı değerine bakar ve openai, anthropic ya da google olabilir.
Bu ikinci çalışma zamanının bir katılığı var: seçilen sağlayıcının kendi anahtarını okur ve o anahtar yoksa başlamayı reddeder. Anthropic üzerinde çalışan bir dağıtım bu yüzden onun için hiç OpenAI anahtarına ihtiyaç duymaz.
Pratik sonuç şudur: taban URL’yi LLMTR’ye çevirdiğinizde her iki çalışma zamanı da tek hamlede taşınır, ama sağlayıcı değerini anthropic ya da google yaptığınızda o çalışma zamanı OpenAI biçimli yoldan çıkar ve ilgili API’nin kendi taban URL adını okumaya başlar.
- Kavram kanıtı Bot yalnızca OpenAI API’sini konuşur; sağlayıcı değişkenine bakmaz.
- agent-langgraph sağlayıcı değerine göre üç API’den birini konuşur.
- Seçilen sağlayıcının anahtarı yoksa bu çalışma zamanı başlamaz.
- Yerleşik ajanlar için OpenAI biçimli çağrıyı API sunucusu yapar, Bot’lar değil.
Responses API açılacaksa modelin bağlaması önemli
Yapılandırma belgesi bir gateway’e geçmeden önce bilinmesi gereken iki şeyden birini burada söylüyor: Responses API bayrağı açıldığında uç noktanın yalnız sohbet tamamlamayı değil, Responses API’sini de gerçekten uygulaması gerekir.
LLMTR tarafında bu, model bağlamasına bakmak demektir. Sohbet tamamlama isteği, modelin sohbet bağlaması veya Responses bağlaması olduğunda çalışır. Responses isteği ise yalnızca Responses bağlaması olan modellerde çalışır; ters yönde köprü yoktur. Yani bayrağı açıp öylece bırakırsanız, yalnız sohbet bağlaması taşıyan bir model o yoldan çağrılamaz.
Ortam dosyasındaki örnekte geçen üç ad da bugün katalogda canlıdır: openai/gpt-4o, llmtr/gemma-4 ve anthropic/claude-sonnet-4.5. Üçü de sohbet bağlaması taşır, yani bayrak kapalıyken sorunsuz çalışır. Bayrağı açacaksanız google/gemini-3.7-flash gibi iki bağlamayı birden taşıyan bir ad seçmek daha güvenli bir başlangıçtır.
Ortam örneği dosyasından kopyalanan değerler; anahtar yer tutucudur
OPENAI_BASE_URL=https://llmtr.com/v1
OPENAI_API_KEY=llmtr-your_key
BOT_MODEL=openai/gpt-4o
# Responses API'sine gececekseniz model bağlaması da uygun olmalı
# BOT_RESPONSES_API=true
# BOT_MODEL=google/gemini-3.7-flash
Araç çağrısı olmayan model bilgisayarını süremez
Belgenin söylediği ikinci şey daha sert: her katalog kaydı araç kabul etmez ve araç çağrısı olmayan bir Bot kendi bilgisayarını süremez. OpenBot’ta her ajana kendi bilgisayarını veren yapı tam da bu yüzden model seçimine bağımlıdır; modeli yanlış seçerseniz ajan konuşur ama hiçbir şey yapmaz.
Model listesi bunu söyler. Her kaydın desteklenen parametre listesinde, fonksiyon çağrısı yapabilen modellerde araç alanları görünür; yapamayanlarda görünmez. Sohbet dışı kayıtlarda ise bu liste tamamen boştur. Aşağıdaki komut yalnızca araç kabul eden kimlikleri döker.
Maliyet tarafı da model seçimine bağlıdır: ücretlendirme token bazlıdır ve kredi bakiyesinden düşer. LLMTR’de platform marjı yalnızca kredi yüklemede uygulanır ve yüzde 8’dir; model fiyatlarına marj eklenmez. Her ajanın kendi bilgisayarını sürdüğü bir kurulumda tur sayısı arttığı için, model seçimini araç yeteneği ve tüketim birlikte belirler.
Araç çağrısı yapabilen model kimliklerini anahtarsız listeleme
curl -s https://llmtr.com/v1/models \
| jq -r '.data[] | select(.supported_parameters | index("tools")) | .id'
Sık sorulan sorular
Taban URL’yi değiştirmek yalnızca Bot’ları mı etkiliyor?
Hayır. Aynı değeri kiracı paketindeki yerleşik ajanlar için API sunucusu da okur. Yapılandırma belgesindeki tasarım kararı budur: tek satır yerleşik ajanları ve iki Bot’u birlikte taşır, böylece dağıtımın yarısı başka bir yere bakar duruma gelmez.
Anthropic modelini bu yoldan mı çağırırım?
Hayır, onun için ANTHROPIC_BASE_URL vardır; farklı bir URL değil farklı bir API söz konusudur. LLMTR’nin Anthropic uyumlu ucu llmtr.com adresi altında mesajlar yolunda yayımlanır. Bu daldaki örnekler yalnızca OpenAI uyumlu yolu gösteriyor, Anthropic yolu belgelenmiş ama örneklenmemiştir.
Model adını kısaltabilir miyim?
Hayır. Adlar olduğu gibi taşınır ve katalogunu ad alanına ayıran bir uç nokta adın iki yarısını da bekler. LLMTR kimliklerini saglayici/model biçiminde yazın, hem BOT_MODEL değerinde hem de kiracı paketindeki varsayılan model alanında aynı şekilde.
Bot açılıyor ama hiçbir işlem yapmıyorsa neye bakmalıyım?
Önce seçtiğiniz modelin araç çağrısı yapıp yapmadığına bakın: araç çağrısı olmayan bir Bot kendi bilgisayarını süremez. Model listesindeki desteklenen parametre alanında araç girdileri yoksa model bu iş için uygun değildir. Bunu doğruladıktan sonra Responses bayrağının durumunu ve seçilen sağlayıcının anahtarının tanımlı olup olmadığını kontrol edin.