0Pricing
AI Agents · Ders

Geliştirme ve Üretim İçin Yapılandırma Profilleri

Ortama özel yapılandırmalar, özellik bayrakları ve aşamalı dağıtımlar.

Geliştirme ve Üretim İçin Yapılandırma Profilleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Yapılandırma Profilleri Neden Önemlidir

Üretim ajanı ile geliştirme ajanı farklı davranmalıdır: farklı günlükleme düzeyleri, farklı model seviyeleri (maliyet ve kalite açısından), farklı veritabanları ve farklı istek hızı sınırları. Yapılandırma profilleri bunu otomatik hâle getirir — tek bir ortam değişkeni tüm ayarları bir kerede değiştirir.

ENV Değişkeniyle Ortamı Belirleme

Yaygın yaklaşım, mevcut dağıtım bağlamını belirleyen bir ENV (veya ENVIRONMENT) değişkenini okumaktır. Kodunuz daha sonra bu değere göre uygun yapılandırma profilini seçer.

import os

# Read the environment identifier
ENV = os.getenv('ENV', 'development').lower()

if ENV not in ('development', 'staging', 'production'):
    raise ValueError(
        f'Invalid ENV value: "{ENV}". '
        f'Must be: development, staging, or production'
    )

print(f'Running in {ENV} mode')

# Usage:
# ENV=development python agent.py   -> dev settings
# ENV=staging python agent.py       -> staging settings
# ENV=production python agent.py    -> prod settings
# python agent.py                   -> defaults to development

Her Ortam İçin Yapılandırma Sınıfları

Bir temel yapılandırma sınıfı ve her ortam için alt sınıflar tanımlayın. Her alt sınıf, farklı olan değerleri geçersiz kılar. Bu yaklaşım, koşullu ifadeler içeren büyük bir sözlükten daha okunabilir ve tür açısından daha güvenlidir.

import os

class BaseConfig:
    OPENAI_API_KEY: str = os.environ.get('OPENAI_API_KEY', '')
    MAX_STEPS: int = 20
    LOG_LEVEL: str = 'INFO'
    CACHE_ENABLED: bool = True
    CACHE_TTL_SECONDS: int = 3600

class DevelopmentConfig(BaseConfig):
    MODEL: str = 'gpt-4o-mini'  # cheaper in dev
    LOG_LEVEL: str = 'DEBUG'    # verbose logging in dev
    CACHE_ENABLED: bool = False  # fresh results in dev
    MAX_STEPS: int = 10          # shorter loops in dev

class StagingConfig(BaseConfig):
    MODEL: str = 'gpt-4o-mini'
    LOG_LEVEL: str = 'INFO'
    MAX_STEPS: int = 20

class ProductionConfig(BaseConfig):
    MODEL: str = 'gpt-4o'       # best quality in prod
    LOG_LEVEL: str = 'WARNING'  # less noise in prod
    MAX_STEPS: int = 30         # more steps allowed in prod

if __name__ == '__main__':
    for cls in (DevelopmentConfig, StagingConfig, ProductionConfig):
        c = cls()
        print(f'{cls.__name__}: model={c.MODEL} log_level={c.LOG_LEVEL} max_steps={c.MAX_STEPS} cache={c.CACHE_ENABLED}')

Yapılandırma Fabrikası: Doğru Profili Seçme

Bir yapılandırma fabrikası işlevi ENV değişkenini okur ve uygun yapılandırma sınıfını döndürür. Ortam değiştirme mantığını bilen tek yer bu işlevdir.

import os

def get_config():
    env = os.getenv('ENV', 'development').lower()
    configs = {
        'development': DevelopmentConfig,
        'staging': StagingConfig,
        'production': ProductionConfig
    }
    config_class = configs.get(env)
    if not config_class:
        raise ValueError(f'Unknown environment: {env}')
    return config_class()

# Usage throughout your agent:
config = get_config()
print(f'Model: {config.MODEL}')
print(f'Max steps: {config.MAX_STEPS}')
print(f'Log level: {config.LOG_LEVEL}')

# All code uses config.MODEL, config.LOG_LEVEL etc.
# Switching environments requires only changing ENV variable

Tür Güvenli Yapılandırma İçin Pydantic Settings

pydantic-settings, yapılandırmayı tanımlamak için güçlü ve tür güvenli bir yol sunar. Ortam değişkenlerini otomatik olarak okur, türleri doğrular ve .env dosyalarından yükleme yapabilir. pip install pydantic-settings komutuyla yükleyin.

# pip install pydantic-settings
from pydantic_settings import BaseSettings
from pydantic import Field
from typing import Literal

class AgentSettings(BaseSettings):
    # Required fields — raise error if not set
    openai_api_key: str
    search_api_key: str

    # Optional with defaults
    env: Literal['development', 'staging', 'production'] = 'development'
    model: str = 'gpt-4o-mini'
    max_steps: int = Field(default=20, ge=1, le=100)  # validated range
    log_level: str = 'INFO'
    cache_enabled: bool = True
    cache_ttl_seconds: int = Field(default=3600, ge=60)

    class Config:
        env_file = '.env'
        case_sensitive = False  # OPENAI_API_KEY -> openai_api_key

# settings = AgentSettings()  # raises ValidationError if required vars missing

Ortama Özel Geçersiz Kılmalarla Pydantic Settings

Ortama özel varsayılanları uygulamak için Pydantic Settings'i hesaplanan özelliklerle birleştirin; bu varsayılanlar yine de ortam değişkenleriyle geçersiz kılınabilir.

from pydantic_settings import BaseSettings
from pydantic import model_validator
import os

class AgentSettings(BaseSettings):
    openai_api_key: str
    env: str = 'development'
    model: str = ''
    log_level: str = ''
    max_steps: int = 0

    @model_validator(mode='after')
    def apply_env_defaults(self) -> 'AgentSettings':
        env_defaults = {
            'development': {'model': 'gpt-4o-mini', 'log_level': 'DEBUG', 'max_steps': 10},
            'staging':     {'model': 'gpt-4o-mini', 'log_level': 'INFO',  'max_steps': 20},
            'production':  {'model': 'gpt-4o',      'log_level': 'WARNING', 'max_steps': 30}
        }
        defaults = env_defaults.get(self.env, env_defaults['development'])
        if not self.model:     self.model     = defaults['model']
        if not self.log_level: self.log_level = defaults['log_level']
        if not self.max_steps: self.max_steps = defaults['max_steps']
        return self

    class Config:
        env_file = '.env'

Her Ortam İçin Özellik Bayrakları

Özellikleri ortama göre etkinleştirmek veya devre dışı bırakmak için yapılandırma profillerini kullanın. Örneğin hata ayıklama arayüzünü yalnızca geliştirme ortamında etkinleştirin, gerçek ödemeleri yalnızca üretimde kullanın ve hazırlık ortamında yalıtılmış deneme hizmetlerine bağlanın.

import os

class AgentFeatureFlags:
    env = os.getenv('ENV', 'development')

    # Enable memory persistence (requires DB)
    MEMORY_ENABLED: bool = env in ('staging', 'production')

    # Use real payment processing
    REAL_PAYMENTS: bool = env == 'production'

    # Enable verbose step-by-step output
    VERBOSE_STEPS: bool = env == 'development'

    # Use cheap model for unit test runs
    FORCE_MINI_MODEL: bool = os.getenv('CI') == 'true'

flags = AgentFeatureFlags()
print(f'Memory: {flags.MEMORY_ENABLED}')
print(f'Verbose: {flags.VERBOSE_STEPS}')
print(f'Payments: {flags.REAL_PAYMENTS}')

Başlangıçta Yapılandırmayı Doğrulama

Başlangıçta tüm yapılandırmayı doğrulayın ve bir özet yazdırın; böylece operatörler ajan işlemeye başlamadan önce doğru yapılandırıldığını doğrulayabilir. Bu, üretimde sessiz yapılandırma hatalarını önler.

import os
import sys

def validate_and_print_config(config) -> None:
    print(f'=== Agent Configuration ===')
    print(f'Environment : {config.env}')
    print(f'Model       : {config.model}')
    print(f'Max steps   : {config.max_steps}')
    print(f'Log level   : {config.log_level}')
    print(f'Cache       : {"enabled" if config.cache_enabled else "disabled"}')
    print(f'OpenAI key  : ...{config.openai_api_key[-4:]}')
    print('===========================')

    # Critical validations
    if config.env == 'production' and config.log_level == 'DEBUG':
        print('WARNING: DEBUG logging in production exposes sensitive data!')

    if not config.openai_api_key:
        print('FATAL: OPENAI_API_KEY not set')
        sys.exit(1)

    print('Configuration validated.')

if __name__ == '__main__':
    from types import SimpleNamespace
    demo_config = SimpleNamespace(
        env='development', model='gpt-4o-mini', max_steps=10,
        log_level='DEBUG', cache_enabled=False, openai_api_key='sk-demo-1234'
    )
    validate_and_print_config(demo_config)

Yapılandırma Değerlerini Ortama Göre Geçersiz Kılma

CI/CD işlem hatlarında tüm profili değiştirmeden belirli yapılandırma değerlerini geçersiz kılın. Belirli bir dağıtımın ayarlarını özelleştirmek için ENV değişkeninin yanında tek tek değişkenler de gönderin.

# Staging deployment with custom model override:
# ENV=staging AGENT_MODEL=gpt-4o python agent.py

# Production with reduced max_steps for cost control:
# ENV=production AGENT_MAX_STEPS=15 python agent.py

# CI test run — use production profile but with cheap model:
# ENV=production AGENT_MODEL=gpt-4o-mini CI=true python agent.py

# The config class reads ENV first for the profile,
# then individual overrides take precedence:
import os

env = os.getenv('ENV', 'development')
config = get_config()  # loads base profile for env

# Individual overrides applied on top:
if os.getenv('AGENT_MODEL'):
    config.MODEL = os.getenv('AGENT_MODEL')
if os.getenv('AGENT_MAX_STEPS'):
    config.MAX_STEPS = int(os.getenv('AGENT_MAX_STEPS'))

print(f'Final model: {config.MODEL}')

Ekip Arkadaşları İçin Yapılandırma Profillerini Belgeleme

Yapılandırma profillerinizi kod açıklamalarında, README dosyasında veya her ikisinde açıkça belgeleyin. Yeni geliştiricilerin güvenle dağıtım yapabilmesi için ortamlar arasında nelerin değiştiğini anlaması gerekir.

# config_profiles.py — Configuration per environment
#
# | Setting        | development    | staging        | production  |
# |----------------|----------------|----------------|-------------|
# | MODEL          | gpt-4o-mini    | gpt-4o-mini    | gpt-4o      |
# | MAX_STEPS      | 10             | 20             | 30          |
# | LOG_LEVEL      | DEBUG          | INFO           | WARNING     |
# | CACHE_ENABLED  | False          | True           | True        |
# | MEMORY_DB      | SQLite (local) | PostgreSQL     | PostgreSQL  |
#
# To switch environments:
#   ENV=staging python agent.py
#
# To override a single setting:
#   ENV=production AGENT_MAX_STEPS=15 python agent.py

print('Config profile table documents all per-environment differences')

Sınamalarda Yapılandırma: Zorunlu Sınama Profili

Sınamalar her zaman belirli bir sınama yapılandırmasıyla çalışmalı, üretim ayarlarıyla asla çalışmamalıdır. Uygun ayarları uygulayan ve yanlışlıkla üretim API çağrısı yapılmasını önleyen bir sınama yapılandırması fixture'ı oluşturun.

import os
import pytest

@pytest.fixture(autouse=True)
def test_environment(monkeypatch):
    'Force test configuration for all tests'
    monkeypatch.setenv('ENV', 'test')
    monkeypatch.setenv('AGENT_MODEL', 'gpt-4o-mini')
    monkeypatch.setenv('AGENT_MAX_STEPS', '5')  # short loops in tests
    monkeypatch.setenv('LOG_LEVEL', 'DEBUG')
    monkeypatch.setenv('CACHE_ENABLED', 'false')
    # Use a fake API key — tests should mock all LLM calls
    monkeypatch.setenv('OPENAI_API_KEY', 'test-key-not-real')

# This fixture runs before every test automatically
# Tests cannot accidentally use production settings

Bilgi Kontrolü: Yapılandırma Profilleri

Ortama özel yapılandırma profillerine ilişkin anlayışınızı sınayın.

Özet: Geliştirme ve Üretim İçin Yapılandırma Profilleri

Artık farklı ortamlardaki ajanlar için eksiksiz bir yapılandırma yönetimi stratejiniz var:

  • Dağıtım bağlamını belirlemek için bir ENV değişkeni kullanın
  • Uygun varsayılanlarla her ortam için yapılandırma sınıfları tanımlayın
  • Doğru profili otomatik olarak seçmek için bir yapılandırma fabrikası kullanın
  • Tür güvenli ve doğrulanmış yapılandırma için pydantic-settings kullanın
  • Özellikleri ortama göre etkinleştirmek veya devre dışı bırakmak için özellik bayraklarını kullanın
  • Operatörlerin ayarları doğrulayabilmesi için başlangıçta yapılandırmayı doğrulayın ve yazdırın
  • Üretim çağrılarını önlemek için pytest'te bir sınama yapılandırmasını fixture kullanarak zorunlu kılın

İyi yapılandırma yönetimi, aynı kod tabanının geliştirme, hazırlık ve üretim ortamlarına güvenle dağıtılabilmesini sağlar.

Sıkça Sorulan Sorular

“Geliştirme ve Üretim İçin Yapılandırma Profilleri” dersi ücretsiz mi?

Evet — “Geliştirme ve Üretim İçin Yapılandırma Profilleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Geliştirme ve Üretim İçin Yapılandırma Profilleri” dersinde ne öğreneceğim?

Ortama özel yapılandırmalar, özellik bayrakları ve aşamalı dağıtımlar. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Geliştirme ve Üretim İçin Yapılandırma Profilleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Aracılar İçin Ortam Değişkenleri
  2. .env Dosyaları ve python-dotenv
  3. Gizli Bilgileri Yenileme ve Güvenlik
  4. Geliştirme ve Üretim İçin Yapılandırma Profilleri
← AI Agents Sayfasına Dön