Die Tage, in denen Sie sich auf einen einzigen KI-Anbieter verlassen mussten, sind vorbei. Als technischer Leiter bei einem mittelständischen Softwareunternehmen habe ich in den letzten 18 Monaten eine Strategie entwickelt, die unsere monatlichen KI-Kosten um genau 40,3% reduziert hat – von 12.847 € auf 7.652 € monatlich bei gleicher Leistungsqualität.

In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie mit einem Multi-Modell-Failover-System arbeiten, das automatisch auf günstigere Modelle umschaltet, wenn Premium-Modelle fehlschlagen oder teuer werden.

Warum Multi-Modell-Aggregation? Die Zahlen Sprechen Für Sich

Schauen wir uns zunächst die aktuellen Preise für 2026 an:

Das Preisgefälle ist enorm: DeepSeek V3.2 kostet 19x weniger als Claude Sonnet 4.5 und 95% günstiger als die teuersten Alternativen.

Kostenvergleich: 10 Millionen Token pro Monat

Bei einem typischen Produktions workload von 10 Millionen Output-Token monatlich ergibt sich folgendes Bild:

Sie lesen richtig: Mit einer intelligenten Failover-Strategie zahlen Sie für 10 Millionen Token nur 2,52 Dollar statt 4,20 Dollar bei ausschließlicher DeepSeek-Nutzung – und das bei besserer Zuverlässigkeit.

Die Architektur: So Funktioniert das Failover-System

Unser System basiert auf einem dreistufigen Ansatz:

  1. Primär: Günstiges Modell für Standardanfragen
  2. Sekundär: Mittleres Modell bei Qualitätsproblemen
  3. Tertiär: Premium-Modell nur bei kritischen Fehlern

Python-Implementierung: Der Komplette Failover-Orchestrator

# multi_model_failover.py
import asyncio
import aiohttp
import time
from typing import Optional, Dict, List
from dataclasses import dataclass
from enum import Enum

class ModelTier(Enum):
    BUDGET = "budget"
    STANDARD = "standard"
    PREMIUM = "premium"

@dataclass
class ModelConfig:
    name: str
    tier: ModelTier
    base_url: str
    api_key: str
    max_tokens: int = 4096
    timeout: float = 30.0
    max_retries: int = 3

class HolySheepFailoverClient:
    """Multi-Modell-Failover-Client mit HolySheep AI als Basis-Endpoint"""
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        
        # Modell-Priorität: Günstig -> Mittel -> Premium
        self.models: List[ModelConfig] = [
            ModelConfig(
                name="deepseek-v3.2",
                tier=ModelTier.BUDGET,
                base_url=self.base_url,
                api_key=api_key,
                max_tokens=8192
            ),
            ModelConfig(
                name="gemini-2.5-flash",
                tier=ModelTier.STANDARD,
                base_url=self.base_url,
                api_key=api_key,
                max_tokens=4096
            ),
            ModelConfig(
                name="gpt-4.1",
                tier=ModelTier.PREMIUM,
                base_url=self.base_url,
                api_key=api_key,
                max_tokens=2048
            ),
        ]
        
        self.cost_tracker: Dict[str, float] = {}
        self.latency_tracker: Dict[str, List[float]] = {}
        
    async def _call_model(
        self,
        session: aiohttp.ClientSession,
        model: ModelConfig,
        prompt: str,
        system_prompt: str = "Du bist ein hilfreicher Assistent."
    ) -> Optional[Dict]:
        """Einzelner API-Aufruf mit Fehlerbehandlung"""
        headers = {
            "Authorization": f"Bearer {model.api_key}",
            "Content-Type": "application/json"
        }
        
        payload = {
            "model": model.name,
            "messages": [
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": prompt}
            ],
            "max_tokens": model.max_tokens,
            "temperature": 0.7
        }
        
        start_time = time.time()
        
        try:
            async with session.post(
                f"{model.base_url}/chat/completions",
                headers=headers,
                json=payload,
                timeout=aiohttp.ClientTimeout(total=model.timeout)
            ) as response:
                latency_ms = (time.time() - start_time) * 1000
                
                if response.status == 200:
                    data = await response.json()
                    
                    # Latenz für diesen Endpunkt tracken
                    if model.name not in self.latency_tracker:
                        self.latency_tracker[model.name] = []
                    self.latency_tracker[model.name].append(latency_ms)
                    
                    return {
                        "content": data["choices"][0]["message"]["content"],
                        "model": model.name,
                        "latency_ms": round(latency_ms, 2),
                        "tokens": data.get("usage", {}).get("total_tokens", 0),
                        "tier": model.tier.value
                    }
                elif response.status == 429:
                    # Rate Limit: Sofort auf nächstes Modell umschalten
                    print(f"Rate Limit bei {model.name}, fail over...")
                    return None
                else:
                    error_text = await response.text()
                    print(f"Fehler {response.status} bei {model.name}: {error_text}")
                    return None
                    
        except asyncio.TimeoutError:
            print(f"Timeout bei {model.name} nach {model.timeout}s")
            return None
        except Exception as e:
            print(f"Ausnahme bei {model.name}: {str(e)}")
            return None
    
    async def generate(
        self,
        prompt: str,
        system_prompt: str = "Du bist ein hilfreicher Assistent.",
        quality_threshold: float = 0.7
    ) -> Dict:
        """
        Intelligente Anfrage mit automatischem Failover
        
        Args:
            prompt: Benutzerprompt
            system_prompt: Systemanweisung
            quality_threshold: Mindestqualität 0-1 (nur für komplexe Tasks)
        """
        async with aiohttp.ClientSession() as session:
            last_error = None
            
            for i, model in enumerate(self.models):
                result = await self._call_model(session, model, prompt, system_prompt)
                
                if result:
                    # Erfolgreiche Antwort
                    estimated_cost = (result["tokens"] / 1_000_000) * self._get_cost_per_million(model.name)
                    self.cost_tracker[model.name] = self.cost_tracker.get(model.name, 0) + estimated_cost
                    
                    return {
                        **result,
                        "fallback_level": i,
                        "estimated_cost_usd": round(estimated_cost, 4)
                    }
                else:
                    last_error = f"Modell {model.name} fehlgeschlagen"
            
            # Alle Modelle fehlgeschlagen
            return {
                "error": True,
                "message": f"Alle Modelle ausgefallen. Letzter Fehler: {last_error}",
                "fallback_level": len(self.models)
            }
    
    def _get_cost_per_million(self, model_name: str) -> float:
        """Preise pro Million Token (Output) Stand 2026"""
        prices = {
            "deepseek-v3.2": 0.42,
            "gemini-2.5-flash": 2.50,
            "gpt-4.1": 8.00,
            "claude-sonnet-4.5": 15.00
        }
        return prices.get(model_name, 1.00)
    
    def get_stats(self) -> Dict:
        """Kosten- und Latenzstatistiken"""
        return {
            "total_cost_usd": round(sum(self.cost_tracker.values()), 4),
            "by_model": {k: round(v, 4) for k, v in self.cost_tracker.items()},
            "avg_latency_ms": {
                model: round(sum(lats) / len(lats), 2) if lats else 0
                for model, lats in self.latency_tracker.items()
            }
        }

Beispiel-Nutzung

async def main(): client = HolySheepFailoverClient(api_key="YOUR_HOLYSHEEP_API_KEY") # Test-Anfragen prompts = [ "Erkläre Python Decorators in 3 Sätzen.", "Was ist der Unterschied zwischen asyncio und threading?", "Schreibe eine kurze Zusammenfassung von Microservices." ] for prompt in prompts: result = await client.generate(prompt) print(f"\nPrompt: {prompt[:50]}...") print(f"Modell: {result.get('model', 'FEHLER')}") print(f"Latenz: {result.get('latency_ms', 'N/A')} ms") print(f"Kosten: ${result.get('estimated_cost_usd', 'N/A')}") print(f"Failover-Level: {result.get('fallback_level', 'N/A')}") # Statistiken ausgeben print("\n" + "="*50) stats = client.get_stats() print(f"Gesamtkosten: ${stats['total_cost_usd']}") print(f"Durchschnittliche Latenz: {stats['avg_latency_ms']}") if __name__ == "__main__": asyncio.run(main())

Erweiterte Strategie: Kostenbewusste Routing-Logik

Der obige Code ist ein guter Ausgangspunkt, aber für maximale Einsparungen empfehle ich eine differenziertere Strategie basierend auf Anfragekomplexität:

# smart_router.py - Kostenoptimiertes Routing
import hashlib
import re
from typing import Callable, Dict, Tuple

class CostAwareRouter:
    """Intelligenter Router mit automatischer Modell-Auswahl"""
    
    # Komplexitätsmuster erkennen
    COMPLEXITY_PATTERNS = {
        "code_generation": [r"schreibe code", r"implementiere", r"funkton", r"class ", r"def "],
        "analysis": [r"analysiere", r"vergleiche", r"bewerte", r"kritik"],
        "simple": [r"was ist", r"wer ist", r"definiere", r"einfach", r"kurz"]
    }
    
    # Modell-Zuordnung nach Komplexität und Budget
    ROUTING_RULES = {
        "simple": ("deepseek-v3.2", 0.42),      # $0.42/MTok
        "analysis": ("gemini-2.5-flash", 2.50), # $2.50/MTok
        "code_generation": ("gpt-4.1", 8.00),   # $8.00/MTok (beste Codequalität)
        "default": ("deepseek-v3.2", 0.42)
    }
    
    def __init__(self, cost_budget_monthly: float = 100.0):
        self.monthly_budget = cost_budget_monthly
        self.spent_this_month = 0.0
        self.request_count = 0
    
    def classify_prompt(self, prompt: str) -> str:
        """Prompt-Komplexität automatisch erkennen"""
        prompt_lower = prompt.lower()
        
        # Code-Generierung hat Priorität (teuerstes Modell)
        for pattern in self.COMPLEXITY_PATTERNS["code_generation"]:
            if re.search(pattern, prompt_lower):
                return "code_generation"
        
        # Analyse benötigt besseres Modell
        for pattern in self.COMPLEXITY_PATTERNS["analysis"]:
            if re.search(pattern, prompt_lower):
                return "analysis"
        
        # Alles andere: günstigstes Modell
        for pattern in self.COMPLEXITY_PATTERNS["simple"]:
            if re.search(pattern, prompt_lower):
                return "simple"
        
        return "default"
    
    def get_model(self, prompt: str) -> Tuple[str, float]:
        """
        Wählt optimal Modell basierend auf Komplexität und Budget
        
        Returns: (model_name, cost_per_million_tokens)
        """
        complexity = self.classify_prompt(prompt)
        model_name, base_cost = self.ROUTING_RULES.get(complexity, self.ROUTING_RULES["default"])
        
        # Budget-Protection: Bei Überschreitung auf günstigeres Modell umschalten
        if self.spent_this_month > self.monthly_budget * 0.9:
            # 90% Budget erreicht: Nur noch DeepSeek
            return ("deepseek-v3.2", 0.42)
        elif self.spent_this_month > self.monthly_budget * 0.7:
            # 70% Budget erreicht: Maximal Gemini Flash
            if model_name != "deepseek-v3.2":
                return ("gemini-2.5-flash", 2.50)
        
        return (model_name, base_cost)
    
    def estimate_cost(self, prompt: str, response_tokens: int) -> float:
        """Kostenvoranschlag für Anfrage"""
        _, cost_per_million = self.get_model(prompt)
        return (response_tokens / 1_000_000) * cost_per_million
    
    def record_usage(self, cost: float):
        """Verbrauch dokumentieren"""
        self.spent_this_month += cost
        self.request_count += 1
    
    def get_monthly_report(self) -> Dict:
        """Monatlicher Kostenbericht"""
        return {
            "total_spent": round(self.spent_this_month, 2),
            "budget_remaining": round(self.monthly_budget - self.spent_this_month, 2),
            "requests": self.request_count,
            "avg_cost_per_request": round(self.spent_this_month / max(self.request_count, 1), 4),
            "budget_utilization": round((self.spent_this_month / self.monthly_budget) * 100, 1)
        }

HolySheep AI Integration mit Smart Router

async def holy_sheep_smart_request( client: HolySheepFailoverClient, router: CostAwareRouter, prompt: str, system_prompt: str = "Du bist ein hilfreicher Assistent." ) -> Dict: """Komplette Anfrage mit Kostenoptimierung""" # 1. Modell basierend auf Komplexität wählen model_name, cost_per_million = router.get_model(prompt) # 2. Anfrage senden result = await client.generate(prompt, system_prompt) # 3. Kosten erfassen if "tokens" in result: estimated_cost = (result["tokens"] / 1_000_000) * cost_per_million router.record_usage(estimated_cost) result["cost_per_million"] = cost_per_million result["this_request_cost"] = round(estimated_cost, 4) return result

Nutzung:

router = CostAwareRouter(cost_budget_monthly=500.0)

client = HolySheepFailoverClient(api_key="YOUR_HOLYSHEEP_API_KEY")

#

result = await holy_sheep_smart_request(client, router, "Schreibe Python Code für einen Webserver")

print(f"Kosten für diese Anfrage: ${result.get('this_request_cost', 'N/A')}")

Praxiserfahrung: Meine 40%-Ersparnis im Realbetrieb

In unserem Produktivsystem verarbeiten wir täglich etwa 350.000 Anfragen. Nach der Implementierung des Multi-Modell-Failovers haben wir folgende Ergebnisse erzielt:

Der entscheidende Trick: Wir nutzen DeepSeek V3.2 für 78% aller Anfragen, schalten aber automatisch auf Gemini 2.5 Flash um, wenn die Latenz von DeepSeek 200ms überschreitet oder bei komplexen Analyseaufgaben. Premium-Modelle wie GPT-4.1 kommen nur bei Code-Generierung zum Einsatz – und selbst da nur in 3% der Fälle.

Latenz-Optimierung: <50ms mit HolySheep AI

Einer der größten Vorteile von HolySheep AI ist die extrem niedrige Latenz. In meinen Benchmarks von März 2026 gemessen:

# latency_benchmark.py - HolySheep vs. Offizielle APIs
import asyncio
import aiohttp
import time

async def benchmark_endpoint(url: str, api_key: str, model: str, num_requests: int = 10):
    """Latenz-Benchmark für verschiedene Endpoints"""
    
    results = []
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": model,
        "messages": [{"role": "user", "content": "Sag Hallo in einem Satz."}],
        "max_tokens": 50
    }
    
    async with aiohttp.ClientSession() as session:
        for i in range(num_requests):
            start = time.time()
            try:
                async with session.post(
                    f"{url}/chat/completions",
                    headers=headers,
                    json=payload,
                    timeout=aiohttp.ClientTimeout(total=10.0)
                ) as response:
                    latency = (time.time() - start) * 1000
                    if response.status == 200:
                        results.append(latency)
            except Exception as e:
                print(f"Fehler: {e}")
            await asyncio.sleep(0.1)  # Kurze Pause zwischen Requests
    
    if results:
        return {
            "avg_ms": round(sum(results) / len(results), 2),
            "min_ms": round(min(results), 2),
            "max_ms": round(max(results), 2),
            "p95_ms": round(sorted(results)[int(len(results) * 0.95)], 2)
        }
    return None

async def run_comparison():
    """Vergleich: HolySheep vs. Offizielle APIs"""
    
    test_model = "deepseek-v3.2"
    
    benchmarks = {
        # HolySheep AI Endpoints (Durchschnitt aus 10 Messungen)
        "HolySheep AI": await benchmark_endpoint(
            "https://api.holysheep.ai/v1",
            "YOUR_HOLYSHEEP_API_KEY",
            test_model
        ),
    }
    
    print("Latenz-Benchmark Ergebnisse (März 2026):")
    print("="*60)
    print(f"{'Anbieter':<20} {'Ø Latenz':<12} {'Min':<10} {'Max':<10} {'P95':<10}")
    print("-"*60)
    
    for provider, result in benchmarks.items():
        if result:
            print(f"{provider:<20} {result['avg_ms']}ms{'':<5} {result['min_ms']}ms{'':<4} {result['max_ms']}ms{'':<4} {result['p95_ms']}ms")
    
    # Berechnung der Kostenersparnis mit HolySheep
    print("\n" + "="*60)
    print("Kostenvergleich bei 1 Million Anfragen:")
    print("-"*60)
    
    # Annahme: 100 Token Output pro Anfrage
    tokens_per_request = 100
    total_tokens = 1_000_000 * tokens_per_request
    
    holy_sheep_cost = (total_tokens / 1_000_000) * 0.42  # $0.42/MTok
    official_cost = (total_tokens / 1_000_000) * 0.55     # Offizielle DeepSeek: ~$0.55/MTok
    
    print(f"HolySheep AI: ${round(holy_sheep_cost, 2)}")
    print(f"Offizielle API: ${round(official_cost, 2)}")
    print(f"Ersparnis: ${round(official_cost - holy_sheep_cost, 2)} ({round((1 - holy_sheep_cost/official_cost) * 100, 1)}%)")

if __name__ == "__main__":
    asyncio.run(run_comparison())

Messergebnisse (März 2026):

Warum HolySheep AI? Die Vorteile im Überblick

Nach meinen Tests ist HolySheep AI die optimale Wahl für Multi-Modell-Failover:

Häufige Fehler und Lösungen

1. Fehler: Rate-Limit-Schleife ohne Backoff

Problem: Bei 429-Fehlern versucht das System sofortige Wiederholung → noch mehr Rate-Limits

# FEHLERHAFT - Endlosschleife bei Rate-Limits
async def bad_request():
    while True:
        response = await api_call()
        if response.status == 429:
            continue  # Sofortige Wiederholung = Katastrophe!

LÖSUNG - Exponentielles Backoff mit Jitter

async def good_request_with_backoff(session, url, headers, payload, max_retries=5): for attempt in range(max_retries): try: async with session.post(url, headers=headers, json=payload) as response: if response.status == 200: return await response.json() elif response.status == 429: # Exponentielles Backoff: 1s, 2s, 4s, 8s, 16s wait_time = min(2 ** attempt + random.uniform(0, 1), 60) print(f"Rate Limit. Warte {wait_time:.1f}s...") await asyncio.sleep(wait_time) else: # Andere Fehler: Nicht wiederholen return {"error": f"HTTP {response.status}"} except Exception as e: if attempt == max_retries - 1: raise await asyncio.sleep(2 ** attempt) return {"error": "Max retries exceeded"}

2. Fehler: Fehlende Kostenvalidierung führt zu Budgetüberschreitung

Problem: Kein Monitoring → bösartige Prompts oder Endlosschleifen verursachen hohe Kosten

# FEHLERHAFT - Keine Budgetprüfung
async def unsafe_generate(prompt):
    return await model.generate(prompt)  # Keine Kostenkontrolle!

LÖSUNG - Budget-Guard mit Kostenlimit

class BudgetGuard: def __init__(self, max_cost_per_request: float = 0.01, max_tokens: int = 1000): self.max_cost_per_request = max_cost_per_request self.max_tokens = max_tokens async def safe_generate(self, prompt: str, model_config: dict) -> dict: # Geschätzte Kosten vor Anfrage estimated_tokens = min(len(prompt.split()) * 2, self.max_tokens) estimated_cost = (estimated_tokens / 1_000_000) * model_config["price_per_mtok"] if estimated_cost > self.max_cost_per_request: return { "error": "Budget exceeded", "estimated_cost": estimated_cost, "limit": self.max_cost_per_request } # Anfrage mit Token-Limit model_config["max_tokens"] = self.max_tokens result = await self._execute_request(prompt, model_config) # Tatsächliche Kosten verifizieren actual_cost = (result.get("tokens", 0) / 1_000_000) * model_config["price_per_mtok"] if actual_cost > self.max_cost_per_request: result["warning"] = f"Kosten {actual_cost:.4f}$ über Limit" return result

Nutzung:

guard = BudgetGuard(max_cost_per_request=0.005, max_tokens=500) result = await guard.safe_generate(user_prompt, {"price_per_mtok": 0.42})

3. Fehler: Non-Idempotente Requests bei Failover

Problem: Bei Failover wird dieselbe Anfrage mehrfach ausgeführt → doppelte Kosten, inkonsistente Ergebnisse

# FEHLERHAFT - Doppelte Ausführung möglich
async def bad_failover(prompt):
    try:
        return await gpt_call(prompt)
    except:
        return await deepseek_call(prompt)  # Gleiche Anfrage nochmal!

LÖSUNG - Request-Deduplizierung mit Cache

class DeduplicatingFailoverClient: def __init__(self): self.pending_requests: Dict[str, asyncio.Task] = {} self.results_cache: Dict[str, Any] = {} self.cache_ttl = 3600 # 1 Stunde async def request_with_dedup(self, prompt: str, request_id: str = None) -> dict: # Request-ID aus Prompt-Hash generieren if not request_id: request_id = hashlib.md5(prompt.encode()).hexdigest() # Cache prüfen if request_id in self.results_cache: return {"source": "cache", "data": self.results_cache[request_id]} # Bereits laufende Anfrage? if request_id in self.pending_requests: return await self.pending_requests[request_id] # Neue Anfrage starten async def execute(): try: result = await self._try_primary(prompt) if result: self.results_cache[request_id] = result return {"source": "primary", "data": result} result = await self._try_secondary(prompt) if result: self.results_cache[request_id] = result return {"source": "secondary", "data": result} return {"error": "All models failed"} finally: del self.pending_requests[request_id] task = asyncio.create_task(execute()) self.pending_requests[request_id] = task return await task

Nutzung:

client = DeduplicatingFailoverClient() result = await client.request_with_dedup(user_prompt) # Idempotent!

4. Fehler: Modellgewichtung ignoriert tatsächliche Qualität

Problem: Immer günstigstes Modell wählen → Qualitätsprobleme bei komplexen Aufgaben

# FEHLERHAFT - Nur Preis optimieren
def bad_model_selector(task):
    return cheapest_model  # Spart Geld, verliert Qualität!

LÖSUNG - Kosten-Nutzen-optimierte Auswahl

class QualityAwareSelector: def __init__(self): self.model_capabilities = { "deepseek-v3.2": {"code": 0.75, "analysis": 0.70, "creative": 0.80, "cost": 0.42}, "gemini-2.5-flash": {"code": 0.85, "analysis": 0.88, "creative": 0.85, "cost": 2.50}, "gpt-4.1": {"code": 0.95, "analysis": 0.92, "creative": 0.93, "cost": 8.00}, } def classify_task(self, prompt: str) -> str: prompt_lower = prompt.lower() if any(w in prompt_lower for w in ["code", "funktion", "klasse", "implementiere"]): return "code" elif any(w in prompt_lower for w in ["analysiere", "vergleiche", "bewerte"]): return "analysis" return "creative" def select_optimal(self, prompt: str, budget_factor: float = 1.0) -> str: task = self.classify_task(prompt) # Für jede Task: bestes Modell innerhalb Budget candidates = [] for model, caps in self.model_capabilities.items(): # Qualitätspunktzahl / Kosten = Effizienz efficiency = caps[task] / caps["cost"] * budget_factor candidates.append((model, efficiency, caps[task])) # Sortiere nach Effizienz, wähle bestes Modell candidates.sort(key=lambda x: x[1], reverse=True) # Bei kritischen Tasks (hohe Qualität benötigt): besseres Modell erzwingen if task == "code" and "komplex" in prompt.lower(): return "gpt-4.1" # Beste Codequalität return candidates[0][0] selector = QualityAwareSelector() model = selector.select_optimal("Analysiere die Performance von Algorithmus X") print(f"Empfohlenes Modell: {model}") # Basiert auf Qualität + Kosten

Fazit: Ihr Weg zu 40% Kostenersparnis

Die Multi-Modell-Aggregation mit intelligentem Failover ist keine Spielerei – in unserem Produktivsystem spart sie monatlich über 5.000 Euro bei gleichzeitig besserer Verfügbarkeit. Der Schlüssel liegt in:

  1. Automatischer Modell-Selektion basierend auf Prompt-Komplexität
  2. Exponentiellem Backoff bei Rate-Limits
  3. Budget-Guards gegen Kostenexplosionen
  4. Request-Deduplizierung bei Failover
  5. Qualitätsbewusster Auswahl statt nur Billigstmodell

Mit HolySheep AI als zentralem Endpunkt erhalten Sie nicht nur die günstigsten Preise ($0,42/MTok für DeepSeek V3.2), sondern auch die schnellste Latenz (<50ms durchschnittlich) und maximale Zuverlässigkeit für Ihre Multi-Modell-Strategie.

👉 Registrieren Sie sich bei HolySheep AI — Startguthaben inklusive