Yönlendirme Profili Düzenleyicisi
OpenCodex kontrol panelindeki Modeller → Yönlendirme sekmesi, config.json
dosyasını elle düzenlemeden config.routingProfiles alanını yönetebilir.
Bir profil oluşturma
Bölüm başlığı “Bir profil oluşturma”- Kontrol panelinde Yönlendirme (Routing) sayfasını açın.
- Profil oluştur (Create profile) seçeneğini belirleyin.
- Bir
idgirin. Kurallı model kimliğipolicy/<id>olur. - Bir veya daha fazla açık sağlayıcı/model adayı ekleyin.
- İsteğe bağlı gereksinimleri, puanlama ağırlıklarını, maliyet sınırlarını
(
maxEstimatedCostUsd, isteğe bağlıonUnknownCost) ve bilinmeyen kanıt davranışını yapılandırın. - Profili kaydedin.
Profil kimlikleri oluşturulduktan sonra sabittir (immutable). Farklı bir kimlik kullanmak için yeni bir profil oluşturun ve arayanları güncelledikten sonra eskisini kaldırın.
Doğrulama ve kalıcılık
Bölüm başlığı “Doğrulama ve kalıcılık”Kontrol paneli, config.routingProfiles tarafından kullanılan aynı profil
nesnesini yönetim API’sine gönderir. Sunucu yazmadan önce adayın tamamını
doğrular:
- kimlikler ve takma adlar yönlendirme profili adlandırma ve çakışma kurallarına uymalıdır;
- her aday sağlayıcı mevcut olmalı ve etkinleştirilmelidir;
- yinelenen adaylar reddedilir;
- sayısal sınırlar ve gereksinimler desteklenen aralıkları içinde kalmalıdır; ve
- en az bir optimizasyon ağırlığı pozitif olmalıdır.
Başarılı bir kaydetme, profili normal yapılandırma yazıcısı aracılığıyla kalıcı hale getirir, canlı durumu uzlaştırır ve model kataloğunu yeniler. Doğrulama hataları önceki yapılandırmayı değiştirmeden bırakır ve düzenleyicide gösterilir.
limits.maxEstimatedCostUsd yapılandırıldığında, limits.onUnknownCost
varsayılan olarak "allow" değerini alır: bilinmeyen bir maliyet tahmini sınıra
özgü bir hariç tutma almaz ve deneme çalıştırması / canlı rota kararı izleri
cost.capOutcome: "unknown-allowed" damgasını vurur, böylece operatörler
sınırın kanıtlanmadığını anlayabilir. Tavanın kapalı olarak başarısız olması
gerektiğinde "exclude" olarak ayarlayın (cost.capOutcome: "unknown-excluded"
ile cost-limit-unknown). Yalnızca onUnknownCost’u yapılandırmak etkisizdir
ve bir sınır sonucu yayınlamaz. Bu, sınır sonucundan bağımsız olarak bilinmeyen
fiyatları hariç tutabilen veya cezalandırabilen unknownEvidence.cost’tan
ayrıdır.
Kaydedilmiş bir profilde deneme çalıştırması (dry-run) yapma
Bölüm başlığı “Kaydedilmiş bir profilde deneme çalıştırması (dry-run) yapma”Aday yetenekleri, kayıt defteri kuralları uygulandıktan sonraki etkin sağlayıcı
yapılandırmasını kullanır. Yerellik gereksinimleri (localOnly ve remoteAllowed)
bu nedenle etkin üst sunucu adresine göre değerlendirilir. Adres sınıflandırılamıyorsa,
adayın uygunluğunu profilin unknownEvidence.capability ayarı belirler.
Çözümlenemeyen geçersiz sağlayıcı yapılandırmaları, bilinmeyen yeteneklere izin
verilse bile route-unavailable ile her zaman dışlanır.
Eksik veya devre dışı sağlayıcılar da puanlama öncesinde route-unavailable ile dışlanır.
Kaydedilmiş bir profili seçin ve bağlam penceresi boyutu, araç kullanımı, görsel girişi veya yapılandırılmış çıktı gibi istek kanıtları eklemek için Deneme çalıştırması değerlendirmesi (Dry-run evaluation)’ı kullanın. Deneme çalıştırması uygunluğu ve puanlamayı değerlendirir ancak asla bir yukarı akış model isteği göndermez.
Kaydedilmemiş düzenlemeler deneme çalıştırması tarafından kullanılmaz. Görüntülenen revizyon ve değerlendirmenin aynı yapılandırmaya atıfta bulunması için önce profili kaydedin.
Yönetim API’si
Bölüm başlığı “Yönetim API’si”Düzenleyici şu uç noktaları kullanır:
GET /api/routing-profiles, normalleştirilmiş profilleri ve revizyonları listeler.PUT /api/routing-profiles, tek bir profili oluşturur veya günceller.mode: "create"veyamode: "update"gönderin; oluşturma modu mevcut bir kimliğin üzerine yazmayı reddeder.DELETE /api/routing-profiles?id=<id>, tek bir profili kaldırır.POST /api/routing-profiles/dry-run, yukarı akışa göndermeden kaydedilmiş bir profili değerlendirir.
Örnek kaydetme yükü:
{ "id": "fast", "mode": "create", "profile": { "alias": "ocx/fast", "candidates": [ { "provider": "anthropic", "model": "claude-sonnet-5" }, { "provider": "openai", "model": "gpt-5.6" } ], "require": { "tools": true, "minContextWindow": 128000 }, "optimize": { "latency": 0.55, "health": 0.25, "cost": 0.1, "quota": 0.1 }, "limits": { "maxEstimatedCostUsd": 0.5, "onUnknownCost": "allow" }, "unknownEvidence": { "capability": "exclude", "health": "penalize", "quota": "penalize", "cost": "penalize" } }}
