AI-agenten · Les

Configuratieprofielen voor development en productie

Omgevingsspecifieke configuraties, feature flags en gefaseerde deployments.

Les 4 van 413 stappen

Configuratieprofielen voor development en productie is een gratis AI-agenten-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.

Waarom configuratieprofielen belangrijk zijn

Een productieagent en een ontwikkelagent horen zich verschillend te gedragen: verschillende niveaus voor logregistratie, verschillende modelniveaus (kosten tegenover kwaliteit), verschillende databases en verschillende limieten voor aanvragen. Met configuratieprofielen gebeurt dit automatisch — één omgevingsvariabele schakelt alle instellingen tegelijk om.

Omgevingen detecteren met de ENV-variabele

Het standaardpatroon is om een ENV- of ENVIRONMENT-variabele te lezen die de huidige implementatiecontext aangeeft. Je code selecteert vervolgens het juiste configuratieprofiel op basis van deze waarde.

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

Configuratieklassen per omgeving

Definieer een basisklasse voor configuratie en subklassen voor elke omgeving. Elke subklasse overschrijft de waarden die verschillen. Dit is leesbaarder en typeveiliger dan een groot woordenboek met voorwaardelijke logica.

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}')

Configuratiefunctie: het juiste profiel selecteren

Een configuratiefunctie leest de ENV-variabele en retourneert de juiste configuratieklasse. Deze ene functie is de enige plek die kennis heeft van de logica voor het wisselen tussen omgevingen.

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

Pydantic Settings voor getypeerde configuratie

pydantic-settings biedt een krachtige, typeveilige manier om configuratie te definiëren. Het leest automatisch omgevingsvariabelen, controleert typen en kan gegevens uit .env-bestanden laden. Installeer het met pip install pydantic-settings.

# 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

Pydantic Settings met omgevingsspecifieke overschrijvingen

Combineer Pydantic Settings met berekende eigenschappen om omgevingsspecifieke standaardwaarden toe te passen die nog steeds door omgevingsvariabelen kunnen worden overschreven.

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'

Functievlaggen per omgeving

Gebruik configuratieprofielen om functies per omgeving in of uit te schakelen. Schakel bijvoorbeeld alleen in de ontwikkelomgeving een foutopsporingsinterface in, gebruik alleen in productie echte betalingen en verwijs in staging naar diensten in een sandbox.

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}')

Configuratie bij het opstarten controleren

Controleer alle configuratie bij het opstarten en druk een samenvatting af, zodat beheerders kunnen verifiëren dat de agent correct is geconfigureerd voordat deze begint met verwerken. Zo voorkom je onopgemerkte configuratiefouten in productie.

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)

Configuratiewaarden per omgeving overschrijven

Overschrijf in CI/CD-pijplijnen specifieke configuratiewaarden zonder het volledige profiel te wijzigen. Geef afzonderlijke variabelen naast de ENV-variabele door om instellingen voor een specifieke implementatie aan te passen.

# 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}')

Configuratieprofielen voor teamgenoten documenteren

Documenteer je configuratieprofielen duidelijk — in opmerkingen in de code, in de README of op beide plekken. Nieuwe ontwikkelaars moeten begrijpen wat er tussen omgevingen verandert om vol vertrouwen te kunnen implementeren.

# 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')

Configuratie in testen: geforceerd testprofiel

Testen moeten altijd met een specifieke testconfiguratie worden uitgevoerd — nooit met productie-instellingen. Maak een testfixture voor configuratie die de juiste instellingen toepast en onbedoelde API-aanroepen naar productie voorkomt.

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

Kennischeck: configuratieprofielen

Toets je begrip van omgevingsspecifieke configuratieprofielen.

Samenvatting: configuratieprofielen voor ontwikkeling en productie

Je hebt nu een complete strategie voor configuratiebeheer van agents in verschillende omgevingen:

  • Gebruik een ENV-variabele om de implementatiecontext aan te geven
  • Definieer configuratieklassen per omgeving met geschikte standaardwaarden
  • Gebruik een configuratiefunctie om automatisch het juiste profiel te selecteren
  • Gebruik pydantic-settings voor typeveilige, gevalideerde configuratie
  • Gebruik functievlaggen om functies per omgeving in of uit te schakelen
  • Controleer de configuratie bij het opstarten en druk deze af, zodat beheerders de instellingen kunnen verifiëren
  • Forceer een testconfiguratie in pytest-testfixtures om aanroepen naar productie te voorkomen

Goed configuratiebeheer zorgt ervoor dat dezelfde codebasis veilig kan worden uitgerold naar ontwikkeling, staging en productie.

Gratis beginnen

Leer AI-agenten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
60
Lessen
239

Veelgestelde vragen

Is de les “Configuratieprofielen voor development en productie” gratis?

Ja — de volledige tekst van “Configuratieprofielen voor development en productie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.

Wat leer ik in “Configuratieprofielen voor development en productie”?

Omgevingsspecifieke configuraties, feature flags en gefaseerde deployments. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-agenten te beginnen?

Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Configuratieprofielen voor development en productie”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-agenten?

Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Omgevingsvariabelen voor agents
  2. .env-bestanden en python-dotenv
  3. Secrets roteren en beveiligen
  4. Configuratieprofielen voor development en productie
← Terug naar AI-agenten