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.

Uyarı:

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.9
Not:

Kullanı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.

Uyarı:

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.

providerfamilyversionÖrnek model ID
openaigpt5.6-solgpt-5.6-sol
openaigpt-oss20bopenai/gpt-oss-20b
anthropicsonnet5us.anthropic.claude-sonnet-5
googlegemini3.6-flashgemini-3.6-flash
googlegemini3.1-progemini-3.1-pro
nvidianemotron3-ultranvidia/nemotron-3-ultra-550b
mistralmedium3.5mistralai/mistral-medium-3-5-0
poolsidelagunas2.1poolside/laguna-s-2.1

Ayrılmış model adı slotları

Aşağıdaki model_name değerleri models listenizde bulunmalıdır:

model_nameKullanım amacı
premium-ideEtkileşimli sohbet için varsayılan model
securityKoruluk (guardrail) / güvenlik kontrolleri
backgroundArka 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: chat

bedrock

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: chat

vertex

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: chat

Router'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
AlanAçıklama
nameRouter adı (her zaman router kullanın)
strategyYönlendirme stratejisi. Şu anda yalnızca static desteklenmektedir
static.default_modelAna LLM olarak kullanılacak model_name. models listesindeki bir model_name girdisiyle tam olarak eşleşmelidir
Not:

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: background

Kimlik 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_N

Model yapılandırmasında bir secret'a env.<VAR_NAME> sözdizimini kullanarak referans verin:

api_key: env.VAR_BAR_1

TLS 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.

Not:

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:

  1. model-gateway.yaml içinde: ca_cert_pem değerini bir ortam değişkeni adına ayarlayın (örneğin, env.CA_CERT).
  2. config.yaml içinde: bob.modelGateway.secrets altı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: chat

2. 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-ide

Secret'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>
Uyarı:

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:

BayrakKüme kaynağıKaynak
--model-config <file>ConfigMap bob-inference-model-configİlettiğiniz dosya
--update-secretsSecret bob-inference-model-secretsconfig.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.yaml dosyası bobctl yanında bulunmalıdır (config-template.yaml dosyası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-run

Tüm bayraklar:

BayrakVarsayılanAçıklama
--model-config <file>ConfigMap içine gönderilecek model yapılandırma dosyasının yolu
--update-secretsconfig.yaml içindeki bob.modelGateway.secrets verilerini Secret içine gönderin
--output-config <file>model-gateway-config.yamlOluşturulan ConfigMap manifest'inin yazılacağı yer
--output-secret <file>model-gateway-secret.yamlOluşturulan Secret manifest'inin yazılacağı yer
--cleanupfalseOluşturulan manifest dosyalarını uyguladıktan sonra silin
--dry-runfalseHerhangi bir oc komutu çalıştırmadan nelerin çalıştırılacağını yazdırın
Bu konu nasıl?