Model Gateway'i Yapılandırma
Sağlayıcı ayarları, model tanımları, kimlik bilgisi yönetimi, TLS yapılandırması ve desteklenen model sağlayıcıları için dağıtım örnekleri dahil olmak üzere Model Gateway yapılandırma dosyasını nasıl oluşturacağınızı ve yöneteceğinizi öğrenin.
Model Gateway, Bob self-hosted'in OpenAI uyumlu endpoint'ler, AWS Bedrock ve Google Vertex AI dahil olmak üzere farklı sağlayıcılardaki desteklenen yapay zeka modellerine bağlanmasını ve istekleri yönlendirmesini sağlar. Bir Model Gateway yapılandırması model endpoint'lerini, kimlik doğrulama ayarlarını, yönlendirme davranışını ve model yeteneklerini tanımlarken, hassas kimlik bilgileri ve sertifikalar config.yaml aracılığıyla güvenli bir şekilde yönetilir.
Model gateway yapılandırması, ağ geçidinin hangi modellere bağlanacağını ve her bir sağlayıcıyla nasıl kimlik doğrulaması yapacağını tanımlayan bir YAML dosyasıdır.
Model gateway içinde aynı anda yalnızca bir temel çıkarım (core inference) modeli yapılandırın. Aynı anda birden fazla temel modelin yapılandırılması desteklenmez ve tanımsız davranışa yol açar.
Model belirtimi
models listesindeki her girdinin benzersiz bir model_name değeri olmalıdır. Tam model belirtimi şöyledir:
- model_name: example_model
# Sağlayıcı türleri (model başına birini seçin):
openai_compatible: # — OpenAI uyumlu herhangi bir REST endpoint'i (Azure, vLLM, …)
bedrock: # — AWS Bedrock çağırma (invoke) endpoint'i
vertex: # — Google Vertex AI (Gemini)
# Model meta verileri
model_info:
exposed: true # true: /v1/model/info listesinde görünür; false: yalnızca dahili
provider: openai # model sağlayıcısı (ör. openai, anthropic, google, nvidia, mistral)
family: gpt # sağlayıcı içindeki model ailesi (ör. gpt, sonnet, gemini)
version: "5.6-sol" # model sürüm dizisi (aşağıdaki tabloya bakın)
max_input_tokens: 270000 # bağlam penceresi boyutu (context window)
max_output_tokens: 20000 # modelin üretebileceği maksimum token sayısı
supports_prompt_caching: true # model prompt caching destekliyorsa true
supports_vision: true # model görsel girişlerini destekliyorsa true
mode: chat # chat | embedding | image_generation
# Sağlayıcıya gönderilen her isteğe eklenen standart parametreler (örneğin temperature, top_p,
# max_tokens) ve sağlayıcıya özgü uzantılar (örneğin top_k,
# repetition_penalty, anthropic_beta) dahil isteğe bağlı serbest biçimli istek parametreleri.
chat_inference_params:
temperature: 0.7
top_p: 0.9Kullanıcıların sohbet arayüzünden görsel girişi gönderebilmesi için temel çıkarım modelinin model_info bloğunda supports_vision: true ayarlanmış olmalıdır. Bu işaret yoksa veya false ise görsel girişi kullanılamaz.
Görsel girişlerini gerçekten desteklemeyen bir model için supports_vision değeri true olarak ayarlanırsa, görsel kullanımı sağlayıcıdan gelen bir hatayla başarısız olur. Bu işaretin yalnızca görsel girişlerini destekleyen modeller için etkinleştirildiğinden emin olun. Aşağıdaki modellerin görsel girişlerini desteklemediğini ve supports_vision: false değerine sahip olması gerektiğini unutmayın: Laguna S2.1 ve Nvidia Nemotron 3.
Desteklenen provider / family / version değerleri
Bob, modele özgü istem ayarlamalarını ve optimizasyonları seçmek için provider, family ve version alanlarını birlikte kullanır. Listede olmayan modeller için en yakın eşleşen değerleri kullanın.
provider | family | version | Örnek model ID |
|---|---|---|---|
openai | gpt | 5.6-sol | gpt-5.6-sol |
openai | gpt-oss | 20b | openai/gpt-oss-20b |
anthropic | sonnet | 5 | us.anthropic.claude-sonnet-5 |
google | gemini | 3.6-flash | gemini-3.6-flash |
google | gemini | 3.1-pro | gemini-3.1-pro |
nvidia | nemotron | 3-ultra | nvidia/nemotron-3-ultra-550b |
mistral | medium | 3.5 | mistralai/mistral-medium-3-5-0 |
poolside | laguna | s2.1 | poolside/laguna-s-2.1 |
Ayrılmış model adı slotları
Aşağıdaki model_name değerleri models listenizde bulunmalıdır:
model_name | Kullanım amacı |
|---|---|
premium-ide | Etkileşimli sohbet için varsayılan model |
security | Koruluk (guardrail) / güvenlik kontrolleri |
background | Arka plan ve otonom ajan görevleri |
Şablon, security ve background modellerini aktif modelin YAML birleştirme takma adları olarak tanımlar; bu sayede hepsi otomatik olarak aynı sağlayıcı yapılandırmasını izler. security ve background için, mevcut olduğunda daha küçük ve verimli bir model önerilir (örneğin openai/gpt-oss-20b).
Sağlayıcılar
openai_compatible
OpenAI uyumlu bir REST API'ye sahip harici olarak barındırılan herhangi bir modele bağlanır (örneğin, Azure OpenAI, vLLM, özel endpoint'ler).
- model_name: premium-ide
openai_compatible:
model: gpt-5.6-sol # Sağlayıcı tarafından beklenen Model ID
base_url: https://<resource>.cognitiveservices.azure.com/openai
api_key: env.AZURE_API_KEY # env.<VAR> model gateway secret'larından okur
extra_headers: # Çıkarım sırasında dahil edilecek ek başlıklar
example_header: env.HEADER_VALUE
ca_cert_pem: env.CA_CERT # TLS doğrulaması için CA sertifikası
model_info:
exposed: true
provider: openai
family: gpt
version: "5.6-sol"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chatbedrock
AWS Bedrock aracılığıyla sunulan bir modele bağlanır.
- model_name: premium-ide
bedrock:
model: us.anthropic.claude-sonnet-5 # Sağlayıcı tarafından beklenen Model ID
region: us-east-1 # Bedrock endpoint'inizin bulunduğu AWS bölgesi
access_key_id: env.AWS_ACCESS_KEY # Bedrock Access Key ID
secret_access_key: env.AWS_SECRET_ACCESS_KEY
model_info:
exposed: true
provider: anthropic
family: sonnet
version: "5"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chatvertex
Google Vertex AI (Gemini) aracılığıyla sunulan bir modele bağlanır. Kimlik bilgileri base64 kodlu bir servis hesabı (service account) JSON dizgisi olarak sağlanmalıdır.
- model_name: premium-ide
vertex:
model: gemini-3.6-flash # Sağlayıcı tarafından beklenen Model ID
project: <gcp-project-id> # GCP proje ID'si
location: global # Vertex AI bölgesi / Global API için "global"
credentials: env.GEMINI_CREDENTIALS # Servis hesabı JSON'u, base64 kodlu
model_info:
exposed: true
provider: google
family: gemini
version: "3.6-flash"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chatRouter'lar
routers bölümü, frontend ile backend arasındaki model çözümlemeyi yapılandırır. Yapılandırılan default_model, sohbet etkileşimlerinde kullanılacak ana LLM olacaktır.
routers:
- name: router
strategy: static
static:
default_model: premium-ide # models listesindeki bir model_name ile eşleşmelidir| Alan | Açıklama |
|---|---|
name | Router adı (her zaman router kullanın) |
strategy | Yönlendirme stratejisi. Şu anda yalnızca static desteklenmektedir |
static.default_model | Ana LLM olarak kullanılacak model_name. models listesindeki bir model_name girdisiyle tam olarak eşleşmelidir |
premium-ide zorunlu bir model adı slotudur (bkz. Ayrılmış model adı slotları); bu nedenle önerilen uygulama default_model: premium-ide değerini korumak ve models listenizdeki premium-ide girdisinin hangi sağlayıcı/modele işaret edeceğini değiştirmektir.
YAML çıpaları (anchors)
Model gateway yapılandırması standart YAML çıpalarını (&name) ve birleştirme anahtarlarını (<<: *name) destekler. Şablon, yeniden kullanımı desteklemek ve tekrarı önlemek için bunu kullanır.
x-providers:
gemini: &gemini
vertex:
model: gemini-3.6-flash
project: <gcp-project-id>
location: global
credentials: env.GEMINI_CREDENTIALS
model_info:
exposed: true
provider: google
family: gemini
version: "3.6-flash"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chat
models:
- &chat_llm
<<: *gemini
model_name: premium-ide
- <<: *chat_llm
model_name: security # birleştirilen çıpadaki premium-ide'nin üzerine yazar
- <<: *chat_llm
model_name: backgroundKimlik bilgisi ve secret yönetimi
Secret'lar
Model yapılandırmasında referans verilen tüm gizli bilgiler (API anahtarları, parolalar, sertifikalar) için bunları kurulumdaki config.yaml dosyasında bob.modelGateway.secrets altında yapılandırın. Secret'lar çalışma zamanında Inference Service container'ına bağlanır (mount edilir).
bob:
modelGateway:
secrets:
VAR_BAR_1: FOO_1
VAR_BAR_2: FOO_2
VAR_BAR_N: FOO_NModel yapılandırmasında bir secret'a env.<VAR_NAME> sözdizimini kullanarak referans verin:
api_key: env.VAR_BAR_1TLS ve sertifika gereksinimleri
Özel endpoint'ler veya dahili model sunucuları (örneğin, özel veya kendinden imzalı kurumsal sertifikalara sahip vLLM veya OpenShift AI) kullanırken, çıkarım container'larının TLS güvenini kurabilmesi için dahili Kök/Ara CA sertifikanızı sağlamalısınız.
Bu model endpoint'i TLS yapılandırması, Bob IDE ve Bob Shell'in Bob arka ucuna bağlanması için gereken sertifikadan ayrıdır. Arka uç endpoint sertifikası ve istemci güven adımları için bkz. TLS sertifikaları.
Çıkarım için CA eklemenin iki yolu vardır:
Seçenek 1 — Çıkarım güven paketi (önerilir)
Bir Kubernetes Secret'ını etiketleyerek CA'yı bob-inferencing-bundle-tls paketine ekleyin. Operator etiketi algılar ve paketi otomatik olarak yeniden oluşturur — model gateway yapılandırmasında değişiklik gerekmez ve CA tüm çıkarım container'larına hemen kullanılabilir hale gelir.
oc create secret generic my-model-endpoint-ca \
--from-file=tls.crt=model-ca.crt \
-n <instance-namespace>
oc label secret my-model-endpoint-ca \
bob.ibm.com/inferencing-bundle-ca=true \
-n <instance-namespace>bob-inferencing-bundle-tls Secret'ı, çıkarım container'larına güven deposu olarak bağlanır. Her zaman bob-bundle-tls içindeki her şeyi ve ek olarak etiketlenmiş Secret'ları içerir. Pod yeniden başlatması gerekmez — Secret'lar çalışan container'a yansıtılır.
Tüm ayrıntılar ve doğrulama adımları için bkz. TLS sertifikaları.
Seçenek 2 — Model başına ca_cert_pem (model gateway yapılandırması)
Diğer çıkarım container'larını etkilemeden tek bir model endpoint'i için CA sağlamanız gerektiğinde bunu kullanın. Özel TLS sertifikaları, API kimlik bilgileriyle aynı iki dosyalı dağıtılmış yapılandırma modelini izler:
model-gateway.yamliçinde:ca_cert_pemdeğerini bir ortam değişkeni adına ayarlayın (örneğin,env.CA_CERT).config.yamliçinde:bob.modelGateway.secretsaltına eşleşen değişken adını ekleyin ve tam PEM kodlu sertifika dizesini yapıştırın.
1. Model gateway yapılandırması (model-gateway.yaml):
models:
- model_name: example-model
openai_compatible:
model: mistral-3.5
base_url: https://vllm.internal.corp:8000/v1
api_key: env.MODEL_API_KEY
ca_cert_pem: env.CA_CERT # config.yaml içinde tanımlanan değişken adını gösterir
model_info:
exposed: true
mode: chat2. Kurulum yapılandırması (config.yaml):
bob:
modelGateway:
secrets:
MODEL_API_KEY: "<your-api-key>"
# Yukarıdaki env.CA_CERT ile eşleşen gerçek PEM sertifika içeriği:
CA_CERT: |
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQjJaDSmJT3g4qg05...
... [full PEM-encoded CA certificate data] ...
-----END CERTIFICATE-----Dağıtım sırasında bobctl, CA_CERT değerini bob-inference-model-secrets Kubernetes Secret'ına enjekte eder. Bu daha sonra çıkarım ağ geçidi servisine bağlanır ve özel model sunucunuza karşı TLS el sıkışması (handshake) için kullanılır.
Eksiksiz örnek
Aşağıda Bob Bundle'daki config-model-gateway-template.yaml dosyasının yapısını yansıtan eksiksiz bir örnek yer almaktadır. Dosyayı kaydedin (örneğin, /tmp/example/model-gateway.yaml) ve kurulum sırasında referans verin.
Model Gateway yapılandırması
# ── Sağlayıcı tanımları ───────────────────────────────────────────────────────
# x-providers anahtarı model gateway tarafından yok sayılır — sağlayıcı örnekleri için
# bir YAML çalışma alanıdır. Yalnızca aktif sağlayıcının çıpası aşağıda referans verilir.
x-providers:
# AWS Bedrock
bedrock: &bedrock
bedrock:
model: us.anthropic.claude-sonnet-5
region: us-east-1
access_key_id: env.AWS_ACCESS_KEY
secret_access_key: env.AWS_SECRET_ACCESS_KEY
model_info:
exposed: true
provider: anthropic
family: sonnet
version: "5"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chat
# Google Vertex AI (Gemini)
gemini: &gemini
vertex:
model: gemini-3.6-flash
project: <gcp-project-id>
location: global
credentials: env.GEMINI_CREDENTIALS
model_info:
exposed: true
provider: google
family: gemini
version: "3.6-flash"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chat
# Azure OpenAI
azure: &azure
openai_compatible:
model: gpt-5.6-sol
base_url: https://<resource>.cognitiveservices.azure.com/openai
api_key: env.AZURE_API_KEY
model_info:
exposed: true
provider: openai
family: gpt
version: "5.6-sol"
max_input_tokens: 270000
max_output_tokens: 20000
supports_prompt_caching: true
supports_vision: true
mode: chat
# Özel çıkarım servisi (RHOAI, vLLM vb.)
inference_service: &isvc
openai_compatible:
model: nvidia/nemotron-3-ultra-550b
base_url: https://<llm-inference-server>
api_key: env.INFERENCE_API_KEY
model_info:
exposed: true
provider: nvidia
family: nemotron
version: "3-ultra"
max_input_tokens: 262144
supports_vision: false
mode: chat
# ── Modeller ──────────────────────────────────────────────────────────────────
models:
# ── AKTİF MODEL ──────────────────────────────────────────────────────────────
# Sağlayıcı değiştirmek için <<: *bedrock yerine ör. *azure, *gemini veya *isvc yazın.
- &chat_llm
<<: *bedrock # ← sağlayıcıyı burada değiştirin
model_name: premium-ide
model_info:
exposed: true
# ── Takma adlar ───────────────────────────────────────────────────────────────
- <<: *chat_llm
model_name: security # birleştirilen çıpadaki premium-ide'nin üzerine yazar
- <<: *chat_llm
model_name: background
# ── Router ────────────────────────────────────────────────────────────────────
routers:
- name: router
strategy: static
static:
default_model: premium-ideSecret'lar (config.yaml)
bob:
modelGateway:
secrets:
AWS_ACCESS_KEY: "<your-aws-access-key-id>"
AWS_SECRET_ACCESS_KEY: "<your-aws-secret-access-key>"
GEMINI_CREDENTIALS: "<base64-encoded service-account JSON>"
AZURE_API_KEY: "<your-azure-api-key>"
INFERENCE_API_KEY: "<your-inference-api-key>"
CA_CERT: <PEM encoded CA cert>Kurulum komutu
bobctl install --model-config /tmp/example/model-gateway.yaml --accept-license --registry-creds <username:password>Bağlı bir ortam için icr.io erişim anahtarınızı belirtin. --registry-creds yalnızca kimlik doğrulaması gerektirmeyen bir özel registry'niz varsa atlanabilir.
Yapılandırmayı dağıtma
İlk kurulum sırasında
Kurulum sırasında --model-config bayrağını kullanarak model gateway yapılandırma dosyanızın yolunu iletin:
bobctl install --model-config path/to/model-gateway-config.yaml --accept-license --registry-creds <username:password>bobctl install komutu --model-config olmadan çalıştırılırsa, Bob boş bir model gateway yapılandırmasıyla kurulur. Inference Service çalışır ancak çıkarım için herhangi bir modele bağlantısı olmaz. Kümeye bir model yapılandırması göndermek için kurulum sonrasında bobctl update-model-config komutunu kullanın.
Kimlik bilgileri kümeye nasıl dağıtılır
Model gateway yapılandırma dosyası, kimlik bilgilerine ortam değişkenleri olarak referans verir (örneğin, env.AWS_ACCESS_KEY, env.AZURE_API_KEY). Farklı model sağlayıcıları farklı gizli bilgiler gerektirir — Bedrock için AWS IAM anahtarları, Azure OpenAI için API anahtarları veya Google Gemini için servis hesabı JSON'u.
Kurulum sırasında bu kimlik bilgileri config.yaml dosyanızda bob.modelGateway.secrets altında sağlanır. bobctl CLI bu bölümü otomatik olarak işler ve kümede bob-inference-model-secrets adlı bir Kubernetes Secret'ı oluşturarak anahtarları doğrudan çıkarım ağ geçidi servisi container'ı içine ortam değişkenleri olarak bağlar.
bob:
modelGateway:
secrets:
# AWS Bedrock kimlik doğrulaması
AWS_ACCESS_KEY: "<your-aws-access-key-id>"
AWS_SECRET_ACCESS_KEY: "<your-aws-secret-access-key>"
# Azure OpenAI kimlik doğrulaması
AZURE_API_KEY: "<your-azure-api-key>"
# Google Cloud Vertex AI / Gemini kimlik doğrulaması
GEMINI_CREDENTIALS: "<your-gemini-credentials-json>"
# Özel endpoint API anahtarları / token'ları veya dahili proxy kimlik doğrulaması
# RITS_APIKEY: "<your-api-key>"
# Kendinden imzalı dahili endpoint'ler için PEM biçiminde özel CA sertifikası
# CA_CERT: |
# -----BEGIN CERTIFICATE-----
# ...
# -----END CERTIFICATE-----Kurulum sonrası yapılandırmayı güncelleme (bobctl update-model-config)
Yeniden kurulum yapmadan çalışan bir kümeye model gateway yapılandırmasını ve/veya secret'ları göndermek için bobctl update-model-config komutunu kullanın. Bu, bobctl install komutunun --model-config olmadan çalıştırıldığı durumlarda gerekli yoldur ve temel çıkarım modelini değiştirirken kullanılan komuttur.
Arka planda yerel ibm-bob chart'ındaki model-config.yaml ve model-secrets.yaml şablonlarına karşı helm template çalıştırır ve oluşturulan manifest'leri kümeye uygular. Uygulandıktan sonra ibm-bob-operator, bob-inference dağıtımını yeni model yapılandırmasıyla mutabık kılar.
Komut iki ayrı küme kaynağını yönetir:
| Bayrak | Küme kaynağı | Kaynak |
|---|---|---|
--model-config <file> | ConfigMap bob-inference-model-config | İlettiğiniz dosya |
--update-secrets | Secret bob-inference-model-secrets | config.yaml içindeki bob.modelGateway.secrets |
İkisinden en az biri sağlanmalıdır — hiçbirinin iletilmemesi bir hatadır.
Önkoşullar:
- Kümede oturum açmış olmalısınız (
oc login) config.yamldosyasıbobctlyanında bulunmalıdır (config-template.yamldosyasından kopyalayın)helm≥ 3.14.0 PATH ortam değişkeninizde bulunmalıdır
Yaygın kullanım:
# Yalnızca model yapılandırma dosyasını güncelleyin
bobctl update-model-config --model-config ./my-model-config.yaml
# Yalnızca secret'ları güncelleyin (anahtarlar config.yaml dosyasından gelir)
bobctl update-model-config --update-secrets
# Her ikisini aynı anda güncelleyin
bobctl update-model-config --model-config ./my-model-config.yaml --update-secrets
# Kümeye dokunmadan nelerin uygulanacağını önizleyin
bobctl update-model-config --model-config ./my-model-config.yaml --update-secrets --dry-runTüm bayraklar:
| Bayrak | Varsayılan | Açıklama |
|---|---|---|
--model-config <file> | ConfigMap içine gönderilecek model yapılandırma dosyasının yolu | |
--update-secrets | config.yaml içindeki bob.modelGateway.secrets verilerini Secret içine gönderin | |
--output-config <file> | model-gateway-config.yaml | Oluşturulan ConfigMap manifest'inin yazılacağı yer |
--output-secret <file> | model-gateway-secret.yaml | Oluşturulan Secret manifest'inin yazılacağı yer |
--cleanup | false | Oluşturulan manifest dosyalarını uyguladıktan sonra silin |
--dry-run | false | Herhangi bir oc komutu çalıştırmadan nelerin çalıştırılacağını yazdırın |