Konfigurationsprofile für Entwicklung und Produktion
Umgebungsspezifische Konfigurationen, Feature Flags und gestaffelte Deployments.
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 developmentKonfigurationsklassen 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 variablePydantic 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 missingPydantic 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 settingsWissenscheck: 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-settingsfü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.
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
- Umgebungsvariablen für Agenten
- .env-Dateien und python-dotenv
- Rotation und Sicherheit von Secrets
- Konfigurationsprofile für Entwicklung und Produktion