Ağ geçitleri ve bulutlar için model kataloglarını uygulama

Sürüme özgü Codex varsayılanlarını alın, sağlayıcıya özgü geçersiz kılmaları uygulayın ve bir model kataloğu sunun

Bu sayfa, model kataloğunu tanımlayan ve model seçicinin çalışmasını sağlayan Codex Models biçimini uygulayan geliştiriciler içindir. Ağ geçidi veya bulut hizmeti gibi bir çıkarım sağlayıcısı geliştiriyorsanız Codex masaüstü uygulamasının ve CLI'ın modellerinizi keşfetmesini, talimatlarını ve yetenek ayarlarını kullanmasını sağlamak için bu belirtimi kullanın.

Bir kuruluşu yönetiyor ve model kataloğunu denetlemek istiyorsanız model_catalog_url yapılandırma kılavuzuna bakın.

Bu biçimi desteklemek için kimlik doğrulamalı bir katalog uç noktası uygulayın. İstekte bulunan Codex sürümü için üst sağlayıcınızın güncel varsayılanlarını alın, kendi geçersiz kılmalarınızı uygulayın ve ortaya çıkan kataloğu döndürün.

Katalog uç noktasını uygulayın

Varsayılan katalog uç noktası, sağlayıcının base_url adresi altındaki /models yoludur. Örneğin, base_url = "https://gateway.example.com/v1" kullanıldığında Codex şu isteği gönderir:

GET /v1/models?client_version=0.162.1
Authorization: Bearer <PROVIDER_ACCESS_TOKEN>

Varsayılan keşif, komut tabanlı kimlik doğrulamayı ve ChatGPT gibi Codex arka ucu üzerinden kimlik doğrulamayı destekler. Komut tabanlı kimlik doğrulama olmadan API key ile kimlik doğrulama kullanan özel bir sağlayıcı için model_providers.<id>.model_catalog_url ayarını uzaktan keşfi etkinleştirmek üzere açıkça belirtin. Tek başına bir API key, varsayılan yolda keşfi tetiklemez.

https://gateway.example.com/codex/models gibi tam bir katalog URL'si seçmek için model_catalog_url kullanın. Bu URL, varsayılan /v1/models uç noktasını da gösterebilir. Codex bu URL'yi /models eklemeden doğrudan kullanır. API key ile keşif için features.api_key_model_discovery ayarını etkin tutun; bu ayar varsayılan olarak açıktır. Özel üstbilgiler tek başına keşfi etkinleştirmez.

Codex, seçilen sağlayıcının kimlik doğrulama bilgilerini ve yapılandırılmış üstbilgileri gönderir; client_version ile sağlayıcının varsa query_params değerlerini ekler. Kataloğu, bu kimlik bilgilerini almaya yetkili bir hizmette barındırın.

Çağrıyı yapanın kimliğini doğrulayın, ilgili üst sağlayıcı varsayılanlarını alın, kendi geçersiz kılmalarınızı uygulayın ve ModelsResponse JSON'unun tamamını doğrudan döndürün. Her kayda benzersiz ve boş olmayan bir slug verin. Açıkça belirtilmiş bir model_catalog_url için Codex, yönlendirmeleri ve 1 MiB'tan büyük yanıtları reddeder. Çıkarım isteklerinde model erişim kurallarını uygulamaya devam edin.

Uç noktayı kullanan istemcilerden geçerli olan tüm model_catalog_json ayarlarını kaldırın: yerel dosya önceliklidir ve uzaktan veri alımını engeller.

İstemcinin şemasıyla eşleştirin

Katalog isteğindeki client_version sorgu parametresini okuyun. Codex, CLI sürümünü varsa ön sürüm son ekini kaldırarak major.minor.patch biçiminde gönderir. Masaüstü istemcilerinde bu, paketle birlikte gelen CLI sürümüdür.

Herkese açık Codex deposunda eşleşen rust-v<version> etiketini veya özel bir derleme için tam kaynak commit'ini kullanın. Bu bağlantılar rust-v0.162.1 kullanır; istemcinizle eşleşen revizyonu seçin:

Paketle birlikte gelen dosya, yayımlanan sürümün anlık görüntüsüdür. Kataloğunuzu oluşturmadan önce güncel varsayılanları alın.

Üst sağlayıcının güncel varsayılanlarını alın

OpenAI modellerini sunan bulut sağlayıcıları varsayılanları OpenAI'dan alır. Ağ geçitleri, dağıtımdaki modelin ayarlarını ve hesap ile bölge bazındaki kullanılabilirliğini korumak için bulut sağlayıcılarının veya üst sağlayıcılarının kataloğunu okur. İstekte bulunan Codex sürümünü her adımda iletin ve her uç noktada ayrı ayrı kimlik doğrulayın.

Varsayılanları doğrudan OpenAI'dan almak için Codex modeller uç noktasını aynı client_version değeriyle çağırın. Örneğin, bir OpenAI API key ile:

curl --fail --silent --show-error \
  'https://chatgpt.com/backend-api/codex/models?client_version=0.162.1' \
  -H "Authorization: Bearer $OPENAI_API_KEY"

ChatGPT entegrasyonu için çağrıyı yapanın ChatGPT erişim belirtecini ve uygun olduğunda ChatGPT-Account-ID üstbilgisini kullanın. Üst sağlayıcının uç noktası için yetkili kimlik bilgilerini kullanın; ağ geçidinizin kendi API key değeri OpenAI'da kimlik doğrulamaz.

Üst düzey models dizisi dahil yanıtın tamamını ayrıştırın. Bu uç nokta, talimatlar, akıl yürütme varsayılanları, araç ayarları, bağlam sınırları ve hizmet katmanları gibi Codex meta verilerini döndürür. Herkese açık /v1/models uç noktası bu kataloğu sağlamaz.

Codex sürümü değişmese bile bu varsayılanları yenileyin. İstekleri hedeflenen üst sağlayıcı kimliğiyle sınırlı tutun ve yanıtın önbellek denetimlerine uyun: kataloglar, çağrıyı yapanın erişimine bağlı olabilir. Geçersiz kılmalarınızı ayrı tutun; böylece bunları yeni varsayılanlara yeniden uygulayabilirsiniz.

Sağlayıcıya özgü geçersiz kılmaları uygulayın

Sürümün yanıt yapısını koruyarak alan değerlerini değiştirin:

  • Modelleri, çağrıyı yapanın kullanabilecekleriyle sınırlandırın. Her slug değerini desteklenen bir çıkarım rotasıyla eşleştirin ve display_name, description veya priority değerlerini ayarlayın. Model geçişi içermeyen bir takma ad için upgrade değerini null olarak ayarlayın.
  • Akıl yürütme seçeneklerini, bağlam sınırlarını, girdi modalitelerini ve hizmet katmanlarını modelinizin ve rotanızın desteklediği değerlere ayarlayın. Varsayılanları desteklenen seçeneklerle sınırlı tutun. Hizmet katmanları olmayan bir rota için service_tiers ve additional_speed_tiers alanlarını temizleyin ve default_service_tier değerini null olarak ayarlayın.
  • Yerine koyacağınız seçeneği test etmediyseniz üst sağlayıcının talimatlarını ve araç ayarlarını koruyun. Meta veriler modele yetenek eklemez veya çıkarım erişimi sağlamaz.

LiteLLM üzerinden Bedrock kullanımı için gerekli katalog düzenlemelerini uygulayın. Ortaya çıkan kataloğu desteklenen her Codex sürümüyle test edin.

Herkese açık Rust türlerini kullanın

İstemcinin şemasıyla aynı herkese açık Git etiketine veya commit'ine ait crate'leri kullanın:

  • codex_protocol::openai_models::{ModelsResponse, ModelInfo} için codex-protocol kullanın. serde_json::from_slice::<ModelsResponse>() ile ayrıştırın, catalog.models üzerinde düzenleme yapın ve sarmalayıcının tamamını serde_json::to_vec() ile serileştirin. Sarmalayıcı, model talimatlarına ilişkin uyumluluk alanlarını işler.
  • İlgili revizyonun paketle birlikte gelen statik kataloğunu ModelsResponse olarak yüklemek için codex-models-manager::bundled_models_response() kullanın. Bu, üst sağlayıcının güncel varsayılanlarını almaz.