AI Agents · Lektion

Konfigurationsprofile für Entwicklung und Produktion

Umgebungsspezifische Konfigurationen, Feature Flags und gestaffelte Deployments.

Lektion 4 von 413 Schritte

Konfigurationsprofile für Entwicklung und Produktion ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Warum Konfigurationsprofile wichtig sind

Ein Produktionsagent und ein Entwicklungsagent sollten sich unterschiedlich verhalten: mit unterschiedlichen Protokollierungsstufen, Modellklassen (Kosten im Vergleich zur Qualität), Datenbanken und Ratenlimits. Konfigurationsprofile automatisieren dies – eine Umgebungsvariable schaltet alle Einstellungen gleichzeitig um.

Umgebung mit der ENV-Variablen erkennen

Üblicherweise liest man eine ENV- oder ENVIRONMENT-Variable, die den aktuellen Bereitstellungskontext angibt. Der Code wählt anschließend anhand dieses Werts das passende Konfigurationsprofil aus.

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

Konfigurationsklassen pro Umgebung

Definieren Sie eine Basiskonfigurationsklasse und Unterklassen für jede Umgebung. Jede Unterklasse überschreibt die Werte, die sich unterscheiden. Das ist besser lesbar und typsicherer als ein großes Dictionary mit bedingten Ausdrücken.

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

Konfigurationsfabrik: Das richtige Profil auswählen

Eine Konfigurationsfabrik liest die ENV-Variable und gibt die passende Konfigurationsklasse zurück. Diese eine Funktion ist die einzige Stelle, die die Logik zum Umschalten zwischen Umgebungen kennt.

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 für typsichere Konfiguration

pydantic-settings bietet eine leistungsfähige und typsichere Möglichkeit, Konfigurationen zu definieren. Es liest Umgebungsvariablen automatisch ein, validiert Typen und kann aus .env-Dateien laden. Installieren Sie es mit 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 mit umgebungsspezifischen Überschreibungen

Kombinieren Sie Pydantic Settings mit berechneten Eigenschaften, um umgebungsspezifische Standardwerte anzuwenden, die weiterhin durch Umgebungsvariablen überschrieben werden können.

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'

Feature-Flags pro Umgebung

Verwenden Sie Konfigurationsprofile, um Funktionen je nach Umgebung zu aktivieren oder zu deaktivieren. Aktivieren Sie beispielsweise eine Debug-Oberfläche nur in der Entwicklung, verwenden Sie echte Zahlungen nur in der Produktion und verweisen Sie in der Staging-Umgebung auf Sandbox-Dienste.

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

Konfiguration beim Start validieren

Validieren Sie die gesamte Konfiguration beim Start und geben Sie eine Zusammenfassung aus, damit Betreiber prüfen können, ob der Agent vor Beginn der Verarbeitung korrekt konfiguriert ist. So vermeiden Sie unbemerkte Fehlkonfigurationen in der Produktion.

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)

Konfigurationswerte je nach Umgebung überschreiben

Überschreiben Sie in CI/CD-Pipelines bestimmte Konfigurationswerte, ohne das gesamte Profil zu ändern. Übergeben Sie einzelne Variablen zusätzlich zur ENV-Variablen, um die Einstellungen für eine bestimmte Bereitstellung anzupassen.

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

Konfigurationsprofile für Teammitglieder dokumentieren

Dokumentieren Sie Ihre Konfigurationsprofile klar und verständlich – in Kommentaren im Code, in der README-Datei oder an beiden Stellen. Neue Entwickler müssen verstehen, was sich zwischen den Umgebungen ändert, um zuverlässig bereitstellen zu können.

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

Konfiguration in Tests: Erzwungenes Testprofil

Tests sollten immer mit einer bestimmten Testkonfiguration ausgeführt werden – niemals mit Produktionseinstellungen. Erstellen Sie ein Testkonfigurations-Fixture, das die passenden Einstellungen anwendet und versehentliche Aufrufe der Produktions-API verhindert.

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

Wissenscheck: Konfigurationsprofile

Testen Sie Ihr Verständnis umgebungsspezifischer Konfigurationsprofile.

Zusammenfassung: Konfigurationsprofile für Entwicklung und Produktion

Sie verfügen nun über eine vollständige Strategie zur Konfigurationsverwaltung von Agenten in verschiedenen Umgebungen:

  • Verwenden Sie eine ENV-Variable, um den Bereitstellungskontext zu bestimmen
  • Definieren Sie Konfigurationsklassen pro Umgebung mit passenden Standardwerten
  • Verwenden Sie eine Konfigurationsfabrik, um automatisch das richtige Profil auszuwählen
  • Verwenden Sie pydantic-settings für typsichere und validierte Konfigurationen
  • Verwenden Sie Feature-Flags, um Funktionen je nach Umgebung zu aktivieren oder zu deaktivieren
  • Validieren Sie die Konfiguration beim Start und geben Sie sie aus, damit Betreiber die Einstellungen prüfen können
  • Erzwingen Sie in pytest-Fixtures eine Testkonfiguration, um Aufrufe der Produktionsumgebung zu verhindern

Eine gute Konfigurationsverwaltung ermöglicht es, dieselbe Codebasis sicher in Entwicklungs-, Staging- und Produktionsumgebungen bereitzustellen.

Kostenlos starten

Lerne AI Agents mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
60
Lektionen
239

Häufig gestellte Fragen

Ist die Lektion „Konfigurationsprofile für Entwicklung und Produktion“ kostenlos?

Ja — der vollständige Text von „Konfigurationsprofile für Entwicklung und Produktion“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Konfigurationsprofile für Entwicklung und Produktion“?

Umgebungsspezifische Konfigurationen, Feature Flags und gestaffelte Deployments. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Agents zu starten?

Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Konfigurationsprofile für Entwicklung und Produktion“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?

Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Umgebungsvariablen für Agenten
  2. .env-Dateien und python-dotenv
  3. Rotation und Sicherheit von Secrets
  4. Konfigurationsprofile für Entwicklung und Produktion
← Zurück zu AI Agents