Seçicideki bazı modeller tek bir model değildir. OpenRouter’daki typesafe/jev-router,
yani Jev Router, her isteğe bakar ve yanıtlamak için başka bir model seçer. aimo’da onu
seçtiğinizde yanıt veren model bir mesajdan ötekine değişebilir; platform da hangisinin
yanıt verdiğini size gösterir.
Bu makale bunun arkasındaki API çağrılarını izler: yönlendirici listeye nasıl girer, ağ geçidi ne gönderir, seçim nerede yapılır ve geri ne okuyabilirsiniz. Aşağıdaki komutların hepsi 5 Ekim 2026’da canlı bir kurulumda çalıştırıldı; aktarılan yanıtlar da o gün alınanlardır.
Kısa yanıt
aimo hiçbir zaman model değiştirmez. Yalnızca tek bir model kimliği gönderir,
OR/typesafe/jev-router; ağ geçidi de bu kimliği OpenRouter’a iletir. Seçim OpenRouter’ın içinde yapılır.
Yönlendiricinin arkasındaki karar modeli Jev, konuşmayı okur; görevi ve görevin ne kadar
zor olduğunu değerlendirir ve havuzunda çıtayı geçen en ucuz modeli seçer. Seçtiği model
yanıtın model alanında, onu çalıştıran sağlayıcı da provider alanında bildirilir.
Ağ geçidinin rolü daha küçüktür. Yönlendiriciyi diğer OpenRouter modelleri gibi listeler, hesabınızın kullanabileceği model listesini uygular, isteği gönderir ve OpenRouter’ın bildirdiği sağlayıcıyı ve maliyeti kaydeder.
Kim ne yapar
| Adım | Kim | Nerede |
|---|---|---|
| Yönlendiriciyi kaydetmek | Yönetici | Konsol, /providers → OpenRouter |
| Bir ekibe ya da kişiye izin vermek | Yönetici | Konsol, /keys → model profilleri |
| Sohbette seçmek | Herkes kendisi | aimo, model seçici |
| Bir betikten çağırmak | Herkes kendisi | Bir platform anahtarıyla herhangi bir HTTP istemcisi |
Adım 1: yönlendirici listede
Bir yönetici typesafe/jev-router’ı /providers sayfasının OpenRouter sekmesinde kaydeder.
Add & check, OpenRouter’a token harcatmayan iki soru sorar: anahtar geçerli mi ve
bu model kimliği var mı. Yönlendiricinin sabit bir uç noktası yoktur; bu yüzden uç nokta
listesinin boş olması normaldir ve hata sayılmaz. Denetim, modelin modalitesini kaydeder;
platform da bunu gösterdiği yeteneklere dönüştürür.
aimo, model seçicisini ağ geçidinin verdiği listeden doldurur. Aynı listeye kendiniz bakın:
GW=https://ai.corp.example
curl -s $GW/v1/models -H "Authorization: Bearer $BOSPHORUS_KEY" \
| jq -c '.data[] | select(.id=="OR/typesafe/jev-router")'
Canlı ağ geçidinin döndürdüğü kayıt:
{"capabilities":["vision","audio"],"id":"OR/typesafe/jev-router","nodes":["openrouter"],"object":"model","owned_by":"openrouter","type":"llm"}
OpenRouter modelleri OR/ önekiyle listelenir. Kayıt yalnızca hesabınızın kullanabileceği
modeller arasında yer alıyorsa görünür. Bir kayıtta eksik olan yetenek, platformun onu
doğrulayamadığı anlamına gelir; modelin o yeteneğe sahip olmadığı anlamına gelmez.
Adım 2: bir mesaj ne yapar
Bir mesaj gönderdiğinizde aimo, isteği /v1/chat/completions adresine
OR/typesafe/jev-router modeliyle gönderir. Ağ geçidi sonra:
OR/önekini kaldırır ve bundan sonratypesafe/jev-routerkimliğiyle çalışır.- İsteği yalnızca OpenRouter modellerinden karşılar. İsteği, aynı ada sahip bir modeli bulunan başka bir sağlayıcıya asla kaydırmaz.
- Modelin etkin olduğunu, onun için bir anahtar bulunduğunu ve hesabınızın onu kullanabildiğini denetler. Ardından politika denetimleriniz ve hız limitleriniz, her modelde olduğu gibi çalışır.
- İsteğe, OpenRouter maliyeti bildirsin diye tek bir alan ekleyip onu OpenRouter’a gönderir.
OpenRouter isteği, modeli seçen Jev’e verir. Yanıt, onu üreten modelin ve hizmet veren sağlayıcının adıyla geri gelir; ağ geçidi de yanıtı size değiştirmeden akış olarak iletir.
Adım 3: geçişi kendiniz görün
Birbirinden çok farklı iki istem gönderin ve her yanıtın model alanını karşılaştırın.
İlk komut küçük bir yardımcı tanımlar; böylece iki çağrı kısa kalır.
ask() {
curl -s $GW/v1/chat/completions \
-H "Authorization: Bearer $BOSPHORUS_KEY" -H 'Content-Type: application/json' \
-d "$1" \
| jq -c '{model, provider, cost: .usage.cost, tokens: .usage.completion_tokens}'
}
Kolay bir istem:
ask '{"model":"OR/typesafe/jev-router","max_tokens":200,"messages":[{"role":"user","content":"Say hello in one word."}]}'
{"model":"openai/gpt-6-luna","provider":"Azure","cost":0.0000037,"tokens":5}
Zor bir istem:
ask '{"model":"OR/typesafe/jev-router","max_tokens":3000,"messages":[{"role":"user","content":"Prove that the square root of 2 is irrational, then find the smallest solution of x^2 - 2y^2 = 1 with y>0."}]}'
{"model":"anthropic/claude-sonnet-5.5","provider":"Claude Platform on AWS","cost":0.005046,"tokens":494}
İstekte aynı model kimliği, yanıtlarda iki farklı model ve her biri için OpenRouter’ın o tek istek için bildirdiği maliyet. Bu ikisi, Jev’in o gün seçtiklerinin örnekleridir. Neyi seçeceği OpenRouter ile TypeSafe’e bağlıdır ve değişebilir.
"stream": true ile ilk çerçeve aynı iki alanı zaten taşır; bu yüzden bir istemci metin
gelmeden önce hangi modelin yanıt verdiğini gösterebilir:
{"model":"openai/gpt-6-luna","provider":"Azure"}
Havuzu daraltmak
Varsayılan olarak Jev bütün havuzundan seçer. Bir betik, isteğle birlikte bir jev-router
eklentisi göndererek havuzu daraltabilir. Her girdi tam bir model kimliği ya da
openai/* gibi bir desendir. Ağ geçidi bu alanı olduğu gibi geçirir. aimo’nun model
seçicisi eklenti göndermez.
ask '{"model":"OR/typesafe/jev-router","max_tokens":300,"plugins":[{"id":"jev-router","models":["openai/*"]}],"messages":[{"role":"user","content":"Prove that the square root of 2 is irrational, in three sentences."}]}'
{"model":"openai/gpt-6.1-sol","provider":"OpenAI","cost":0.001734,"tokens":169}
Yukarıda Anthropic’in modeline giden zor bir istem burada OpenAI’da kaldı. models
içinde hiçbir şeyle eşleşmeyen girdiler yok sayılır. excluded_models içindeki girdiler
asla yok sayılmaz: tüm adayları eliyorlarsa istek 404 ile başarısız olur.
Bir politika notu. Bir ekip için OR/typesafe/jev-router’a izin vermek, Jev’in
yönlendirdiği her şeye izin vermek demektir; çünkü platform seçilen modeli ancak yanıt
geldiğinde öğrenir. Bu önemliyse havuzu eklentiyle daraltın ya da belirli bir model seçin.
Bir betiğin hangi kimlik bilgisini gönderdiğini
kendi anahtarlarınızla API çağırma makalesi
anlatır.
Platform neyi kaydeder
Her istek bir kullanım kaydı bırakır. Kayıtta sizin istediğiniz model olan
typesafe/jev-router, isteği gerçekte karşılayan sağlayıcı ve OpenRouter’ın bildirdiği
maliyet bulunur. Yanıt veren modelin adı, bu kayıtta değil, size gelen yanıt gövdesindedir.
Konsolda aynı istekler /activity sayfasında, maliyet de /usage sayfasında görünür.
Bir şey yolunda gitmediğinde
| Gördüğünüz | Olası neden |
|---|---|
| Yönlendirici listede yok | Kayıtlı değil, devre dışı ya da hesabınızın kullanabileceği modeller onu dışarıda bırakıyor. Bir yöneticiye sorun. |
/providers sayfasını anan bir 503 |
Model kimliği kayıtlı değil ya da onun için tanımlı bir anahtar yok. |
403 model_not_allowed |
Hesabınızın kullanabileceği modeller onu içermiyor. aimo’da bu, sohbette bir mesaj olarak görünür. |
| Eklenti gönderdikten sonra 404 | excluded_models içindeki girdileriniz tüm adayları eledi. |
| Maliyet turdan tura değişiyor gibi görünüyor | Jev farklı bir model seçti. Her yanıtın model alanını karşılaştırın. |