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 on-premises'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ı, geri dönüş (fallback) seçeneklerini 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, …)
  bedrock:            # — AWS Bedrock çağırma (invoke) endpoint'i
  vertex:             # — Google Vertex AI (Gemini)

  # Model bilgisi parametreleri (isteğe bağlı)
  model_info:
    exposed: true                          # true: /models listesinde görünür; false: yalnızca dahili
    max_input_tokens: 128000               # bağlam penceresi boyutu (context window)
    max_output_tokens: 4096                # modelin üretebileceği maksimum token sayısı
    input_cost_per_token: 0.0000025        # girdi token'ı başına USD maliyeti (kullanım ölçümü için kullanılır)
    output_cost_per_token: 0.000010        # çıktı token'ı başına USD maliyeti
    cache_read_input_token_cost: 0.00      # önbellekten okunan girdi token maliyeti (prompt caching)
    cache_creation_input_token_cost: 0.00  # yeni önbellek girdisi yazma maliyeti
    supports_prompt_caching: true          # model prompt caching destekliyorsa true
    supports_function_calling: true        # model araç/fonksiyon çağrılarını destekliyorsa true
    supports_tool_choice: true             # tool_choice parametresi dikkate alınıyorsa true
    supports_reasoning: false              # model reasoning_effort parametresini destekliyorsa true
    supports_vision: false                 # model sohbet mesajlarında görsel girişlerini kabul ediyorsa true
    mode: chat                             # chat | embedding | image_generation

  # Bu model kullanılamadığında denenecek sıralı isteğe bağlı model_name değerleri listesi
  fallbacks:
    - fallback_model

  # 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
Uyarı:

supports_vision: true ayarını yalnızca görsel girişlerini kabul eden modellerde uygulayın. Görsel girişlerini desteklemeyen bir modelde supports_vision değeri true olarak ayarlanırsa, sohbette görsel göndermek sağlayıcı hatasına neden olur. Aşağıdaki modeller görsel girişlerini desteklemez ve supports_vision: false kullanmalı veya bu işareti atlamalıdır: Laguna S2.1 ve Nvidia Nemotron 3.

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, özel endpoint'ler).

openai_compatible:
  model: gpt-4o                          # Sağlayıcı tarafından beklenen Model ID
  base_url: https://base_url             # Model dağıtımının temel URL'si
  api_key: env.API_KEY                   # Kimlik doğrulaması için API anahtarı. env.<VAR> container ortamından okur
  extra_headers:                         # Çıkarım sırasında dahil edilecek ek başlıklar
    example_header: env.HEADER_VALUE
  insecure_skip_verify: true             # TLS doğrulamasını devre dışı bırakır (üretim için önerilmez)
  ca_cert_pem: env.CA_CERT               # TLS doğrulaması için CA sertifikası

bedrock

AWS Bedrock aracılığıyla sunulan bir modele bağlanır.

bedrock:
  model: claude                                  # 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   # Bedrock Secret Access Key

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.

vertex:
  model: gemini                              # Sağlayıcı tarafından beklenen Model ID
  project: my-gcp-project                    # 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

YAML çıpaları (anchors)

Kimlik bilgisi çıpaları

Tekrardan kaçınmak için kimlik bilgilerini bir kez tanımlayın ve birden çok model girdisinde <<: *anchor-name ile referans verin.

# AWS Bedrock kimlik bilgileri — bedrock modelleri tarafından referans verilir.
x-aws-bedrock-auth: &aws-bedrock-auth
  region: us-east-1
  access_key_id: env.AWS_ACCESS_KEY
  secret_access_key: env.AWS_SECRET_ACCESS_KEY

models:
  - model_name: my-bedrock-model
    bedrock:
      model: claude
      <<: *aws-bedrock-auth            # yukarıda tanımlanan kimlik bilgisi çıpasını birleştirin
    model_info:
      exposed: true
      mode: chat

Model çıpaları

Sağlayıcı yapılandırmasını ve model_info bilgilerini tekrarlamamak için birden çok girdi arasında tam bir model bloğunu birleştirin.

x-my-base-model: &my-base-model
  vertex:
    model: gemini-2.5-pro
    project: my-gcp-project
    location: global
    credentials: env.GEMINI_CREDENTIALS
  model_info:
    exposed: false
    supports_reasoning: true
    mode: chat

models:
  - model_name: my-gemini-model
    <<: *my-base-model

  - model_name: my-second-gemini-model
    <<: *my-base-model

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

Kök CA paketi, bulut sağlayıcıları için standart genel CA sertifikalarını içerir. Ancak özel endpoint'ler veya dahili model sunucuları (örneğin, özel veya kendinden imzalı kurumsal sertifikalara sahip vLLM veya OpenShift AI) kullanırken, TLS güvenini sağlamak 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ı.

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

Model gateway yapılandırması:

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

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 tüm sağlayıcı türlerini kapsayan eksiksiz bir örnek yer almaktadır. Model gateway yapılandırmasını bir dosyaya kaydedin (örneğin, /tmp/example/model-gateway.yaml) ve kurulum sırasında referans verin.

Model gateway yapılandırması (/tmp/example/model-gateway.yaml)

# ── Kimlik bilgisi çıpaları (YAML birleştirme anahtarları aracılığıyla model girdileri arasında paylaşılır) ──────
# AWS Bedrock kimlik bilgileri
x-aws-bedrock-auth: &aws-bedrock-auth
  region: us-east-1
  access_key_id: env.AWS_ACCESS_KEY
  secret_access_key: env.AWS_SECRET_ACCESS_KEY

# Google Vertex AI kimlik bilgileri
x-vertex-auth: &vertex-auth
  project: my-gcp-project
  location: global
  credentials: env.GEMINI_CREDENTIALS

# ── Paylaşılan model çıpaları (isteğe bağlı) ───────────────────────────────────
x-my-base-model: &my-base-model
  vertex:
    model: gemini-2.5-pro
    <<: *vertex-auth
  model_info:
    exposed: true
    max_input_tokens: 200000
    max_output_tokens: 12000
    input_cost_per_token: 0.00000125
    output_cost_per_token: 0.00001
    cache_read_input_token_cost: 0.000000125
    supports_reasoning: true
    mode: chat

# ── Modeller ──────────────────────────────────────────────────────────────────
models:
  # API anahtarlı OpenAI uyumlu model (ör. Azure OpenAI)
  - model_name: my-gpt-model
    openai_compatible:
      model: gpt-4o
      base_url: https://<resource>.cognitiveservices.azure.com/openai
      api_key: env.BOB_AZURE_API_KEY
    model_info:
      exposed: true
      max_input_tokens: 128000
      max_output_tokens: 4096
      input_cost_per_token: 0.0000025
      output_cost_per_token: 0.000010
      supports_function_calling: true
      supports_tool_choice: true
      mode: chat
    chat_inference_params:
      temperature: 0.7
      top_p: 0.9

  # AWS Bedrock modeli
  - model_name: my-bedrock-model
    bedrock:
      model: us.anthropic.claude-3-5-sonnet-20241022-v2:0
      <<: *aws-bedrock-auth
    fallbacks:                          # isteğe bağlı: geri dönüş model adlarının sıralı listesi
      - my-fallback-model
    model_info:
      exposed: false
      max_input_tokens: 200000
      max_output_tokens: 8192
      input_cost_per_token: 0.000003
      output_cost_per_token: 0.000015
      cache_creation_input_token_cost: 0.00000375
      cache_read_input_token_cost: 0.0000003
      supports_prompt_caching: true
      supports_function_calling: true
      supports_tool_choice: true
      mode: chat
    chat_inference_params:
      temperature: 0.7
      top_k: 50

  # Paylaşılan model çıpası kullanan Google Vertex AI (Gemini) modeli
  - model_name: my-gemini-model
    <<: *my-base-model

  # Özel CA sertifikasına sahip OpenAI uyumlu model
  - model_name: example-model-mini
    openai_compatible:
      model: gpt-4o-mini
      base_url: https://llm-mock-server.ca-tor.containers.appdomain.cloud
      ca_cert_pem: env.CA_CERT
    model_info:
      exposed: true
      max_input_tokens: 131072
      input_cost_per_token: 0.00000015
      output_cost_per_token: 0.0000006
      supports_function_calling: true
      supports_tool_choice: true
      mode: chat

  # Ek başlıklara sahip OpenAI uyumlu model
  - model_name: another-example-model-mini
    openai_compatible:
      model: gpt-4o-mini
      base_url: https://llm-mock-server.ca-tor.containers.appdomain.cloud
      extra_headers:
        model_key: env.MODEL_KEY
    model_info:
      exposed: true
      max_input_tokens: 131072
      input_cost_per_token: 0.00000015
      output_cost_per_token: 0.0000006
      supports_function_calling: true
      supports_tool_choice: true
      mode: chat

Secret'lar (config.yaml)

bob:
  modelGateway:
    secrets:
      BOB_AZURE_API_KEY: someapikeyvalue
      AWS_ACCESS_KEY: someapikeyvalue
      AWS_SECRET_ACCESS_KEY: someapikeyvalue
      GEMINI_CREDENTIALS: <base64_vertex_credentials>
      CA_CERT: <PEM encoded CA cert>
      MODEL_KEY: apikeyvalue

Kurulum komutu

bobctl install --model-config /tmp/example/model-gateway.yaml

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
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.BOB_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ı
      BOB_AZURE_API_KEY: "<your-azure-api-key>"

      # Google Cloud Vertex AI / Gemini kimlik doğrulaması
      BOB_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.

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 komutunu yürütmeden nelerin çalıştırılacağını yazdırın
Bu konu nasıl?