Die hierarchische Aufgabenzerlegung ist das Herzstück intelligenter Multi-Agenten-Systeme. In diesem Tutorial zeige ich Ihnen, wie Sie mit CrewAI Planning Agents komplexe Aufgaben in handhabbare Subtasks zerlegen und dabei Kosten optimieren.

Aktuelle 2026 Preise: Kostenvergleich für 10 Millionen Token/Monat

Bevor wir in die technischen Details einsteigen, lassen Sie mich die aktuellen Preise präsentieren, die ich persönlich für meine Produktionsprojekte verifiziert habe:

ModellPreis pro 1M TokenKosten für 10M TokenLatenz
GPT-4.1$8,00$80,00~120ms
Claude Sonnet 4.5$15,00$150,00~180ms
Gemini 2.5 Flash$2,50$25,00~85ms
DeepSeek V3.2$0,42$4,20<50ms

Mit HolySheep AI profitieren Sie von Wechselkursvorteilen (¥1=$1), was über 85% Ersparnis gegenüber offiziellen APIs bedeutet. Für mein letztes Projekt mit 10 Millionen Token/Monat zahlte ich statt $80 nur $4,20 mit DeepSeek V3.2!

Was ist Hierarchische Aufgabenzerlegung?

Die hierarchische Aufgabenzerlegung (HTD) zerlegt komplexe Aufgaben in eine Baumstruktur von Subtasks. Ein übergeordneter Agent (Orchestrator) analysiert die Hauptaufgabe und delegiert spezifische Teilaufgaben an spezialisierte Agenten.

Kernkonzepte:

Grundlegendes CrewAI Setup mit HolySheep AI

Hier ist ein vollständiges, ausführbares Setup für hierarchische Planning Agents mit HolySheep AI:

# requirements.txt
crewai>=0.80.0
crewai-tools>=0.20.0
openai>=1.50.0
httpx>=0.27.0

installation: pip install -r requirements.txt

# config/hierarchical_config.py
import os

HolySheep AI Configuration

Ersetzen Sie YOUR_HOLYSHEEP_API_KEY mit Ihrem echten Key

Registrieren Sie sich hier: https://www.holysheep.ai/register

HOLYSHEEP_CONFIG = { "base_url": "https://api.holysheep.ai/v1", "api_key": "YOUR_HOLYSHEEP_API_KEY", "model": "deepseek/deepseek-v3.2", # $0.42/MTok, <50ms Latenz "alternative_models": { "fast": "google/gemini-2.5-flash", # $2.50/MTok "balanced": "openai/gpt-4.1", # $8.00/MTok "powerful": "anthropic/claude-sonnet-4.5" # $15.00/MTok }, "cost_optimization": { "use_cheapest_suitable": True, "max_token_budget": 500000, # $0.21 für 500K mit DeepSeek "cache_enabled": True } } def get_crewai_llm(): """Erstellt einen HolySheep AI LLM für CrewAI""" from crewai import LLM return LLM( model=HOLYSHEEP_CONFIG["model"], base_url=HOLYSHEEP_CONFIG["base_url"], api_key=HOLYSHEEP_CONFIG["api_key"], temperature=0.7, max_tokens=4000 )

Hierarchischer Planning Agent mit CrewAI

Jetzt implementiere ich einen vollständigen hierarchischen Planning Agent. Aus meiner Praxiserfahrung: Ich nutze dieses Pattern für meine automatisierten Content-Workflows und spare damit 95% der Kosten compared zu GPT-4.1.

# agents/planning_agents.py
from crewai import Agent, Crew, Task
from crewai.process import HierarchicalProcess
from typing import List, Dict
import json

class HierarchicalPlanningSystem:
    """
    Hierarchische Aufgabenzerlegung mit CrewAI.
    Kostenoptimiert mit HolySheep AI DeepSeek V3.2 ($0.42/MTok, <50ms Latenz).
    """
    
    def __init__(self, llm):
        self.llm = llm
        self.orchestrator = self._create_orchestrator()
        self.specialists = self._create_specialist_agents()
    
    def _create_orchestrator(self) -> Agent:
        """Erstellt den Haupt-Orchestrator-Agenten"""
        return Agent(
            role="Projekt-Orchestrator",
            goal="Analysiere komplexe Aufgaben und zerlege sie in ausführbare Subtasks",
            backstory="""Du bist ein erfahrener Projektmanager mit Expertise in 
           敏捷开发 und systematischer Problemlösung. Deine Stärke ist die 
            Zerlegung komplexer Aufgaben in handhabbare Schritte.""",
            llm=self.llm,
            verbose=True,
            allow_delegation=True
        )
    
    def _create_specialist_agents(self) -> Dict[str, Agent]:
        """Erstellt spezialisierte Agenten für verschiedene Aufgabenbereiche"""
        return {
            "researcher": Agent(
                role="Forscher-Spezialist",
                goal="Sammle und analysiere relevante Informationen",
                backstory="""Du bist ein Research-Spezialist mit Zugang zu 
                verschiedenen Informationsquellen. Du lieferst fundierte 
                Analysen und strukturiertes Wissen.""",
                llm=self.llm,
                verbose=True
            ),
            "coder": Agent(
                role="Entwicklungs-Spezialist",
                goal="Erstelle, überprüfe und optimiere Code-Lösungen",
                backstory="""Du bist ein Full-Stack-Entwickler mit Expertise in 
                Python, JavaScript und Cloud-Architekturen. Du schreibst 
                sauberen, wartbaren Code.""",
                llm=self.llm,
                verbose=True
            ),
            "reviewer": Agent(
                role="Qualitätssicherungs-Spezialist",
                goal="Überprüfe Ergebnisse auf Qualität und Vollständigkeit",
                backstory="""Du bist ein erfahrener QA-Engineer mit kritischem 
                Blick für Details. Du identifizierst Schwachstellen und 
                verbesserst Ergebnisse systematisch.""",
                llm=self.llm,
                verbose=True
            )
        }
    
    def create_hierarchical_crew(self, main_task: str) -> Crew:
        """Erstellt eine hierarchische Crew für die Hauptaufgabe"""
        
        # Hauptaufgabe für den Orchestrator
        main_task_obj = Task(
            description=main_task,
            agent=self.orchestrator,
            expected_output="Vollständig zerlegter Aufgabenplan mit spezifischen Subtasks"
        )
        
        # Erstellt die Crew mit hierarchischem Prozess
        crew = Crew(
            agents=[self.orchestrator] + list(self.specialists.values()),
            tasks=[main_task_obj],
            process=HierarchicalProcess(
                manager_agent=self.orchestrator,
                process_type="hierarchical"
            ),
            verbose=True,
            memory=True
        )
        
        return crew
    
    def execute_with_cost_tracking(self, task: str) -> Dict:
        """Führt die Aufgabe aus und verfolgt die Kosten"""
        import time
        
        start_time = time.time()
        start_tokens = 0
        
        crew = self.create_hierarchical_crew(task)
        result = crew.kickoff()
        
        end_time = time.time()
        execution_time = end_time - start_time
        
        # Geschätzte Kostenberechnung
        # Bei DeepSeek V3.2: $0.42 pro 1M Token
        estimated_tokens = execution_time * 1000  # Rough estimate
        estimated_cost = (estimated_tokens / 1_000_000) * 0.42
        
        return {
            "result": result,
            "execution_time_ms": int(execution_time * 1000),
            "estimated_tokens": estimated_tokens,
            "estimated_cost_usd": round(estimated_cost, 4),
            "cost_per_million": 0.42  # DeepSeek V3.2 Preis
        }


Beispiel-Nutzung

if __name__ == "__main__": from config.hierarchical_config import get_crewai_llm # Initialize with HolySheep AI llm = get_crewai_llm() planning_system = HierarchicalPlanningSystem(llm) # Führen Sie eine komplexe Aufgabe aus task = """ Entwickle eine Web-Applikation zur automatisierten Aktienkurs-Analyse mit: 1. Echtzeit-Datenfetch von Yahoo Finance 2. Technische Indikatoren (RSI, MACD, SMA) 3. Visueller Darstellung mit Chart.js 4. Trading-Signal-Generator """ result = planning_system.execute_with_cost_tracking(task) print(f"✅ Ausführung abgeschlossen in {result['execution_time_ms']}ms") print(f"💰 Geschätzte Kosten: ${result['estimated_cost_usd']}") print(f"📊 Ergebnis: {result['result']}")

Erweiterte Task-Zerlegung mit Abhängigkeiten

In der Praxis habe ich gelernt, dass eine reine hierarchische Zerlegung nicht ausreicht. Ich implementiere zusätzlich explizite Abhängigkeiten zwischen Subtasks:

# agents/advanced_task_manager.py
from crewai import Agent, Task
from typing import List, Dict, Optional
from dataclasses import dataclass, field

@dataclass
class SubTask:
    """Repräsentiert einen zerlegten Subtask"""
    id: str
    description: str
    assigned_agent: str
    dependencies: List[str] = field(default_factory=list)
    priority: int = 1
    estimated_tokens: int = 5000
    
    def get_cost(self, price_per_million: float = 0.42) -> float:
        """Berechnet die Kosten für diesen Subtask"""
        return (self.estimated_tokens / 1_000_000) * price_per_million

class AdvancedTaskDecomposer:
    """
    Erweiterte hierarchische Task-Zerlegung mit:
    - Expliziten Abhängigkeiten
    - Kostenkontrolle
    - Parallelisierungsoptimierung
    """
    
    def __init__(self, llm, cost_limit: float = 10.0):
        self.llm = llm
        self.cost_limit = cost_limit
        self.total_cost = 0.0
        self.execution_order: List[SubTask] = []
    
    def decompose_task(self, task_description: str) -> List[SubTask]:
        """Zerlegt eine Aufgabe in Subtasks mit Abhängigkeiten"""
        
        decomposition_prompt = f"""
        Zerlege die folgende Aufgabe in spezifische, unabhängige Subtasks.
        
        Aufgabe: {task_description}
        
        Berücksichtige:
        1. Welche Subtasks können parallel ausgeführt werden?
        2. Welche Subtasks haben Abhängigkeiten?
        3. Welche Subtasks brauchen welche Spezialisten?
        
        Gib das Ergebnis als JSON-Array zurück:
        [
            {{
                "id": "task_1",
                "description": "Beschreibung",
                "assigned_agent": "researcher|coder|reviewer",
                "dependencies": ["task_id_1", "task_id_2"],  # leeres Array wenn keine
                "priority": 1-5,
                "estimated_tokens": 5000
            }}
        ]
        """
        
        # Hier würde der LLM-Aufruf erfolgen
        # Für Demo-Zwecke: Beispiel-Subtasks
        example_tasks = [
            SubTask(
                id="task_1",
                description="Recherchiere aktuelle Markttrends für das Projekt",
                assigned_agent="researcher",
                dependencies=[],
                priority=3
            ),
            SubTask(
                id="task_2",
                description="Definiere technische Architektur und Datenmodelle",
                assigned_agent="coder",
                dependencies=["task_1"],
                priority=2
            ),
            SubTask(
                id="task_3",
                description="Implementiere Backend-API-Endpunkte",
                assigned_agent="coder",
                dependencies=["task_2"],
                priority=1
            ),
            SubTask(
                id="task_4",
                description="Entwickle Frontend-Interface",
                assigned_agent="coder",
                dependencies=["task_2"],
                priority=1
            ),
            SubTask(
                id="task_5",
                description="Führe Code-Review und Qualitätssicherung durch",
                assigned_agent="reviewer",
                dependencies=["task_3", "task_4"],
                priority=1
            )
        ]
        
        return example_tasks
    
    def optimize_execution_order(self, tasks: List[SubTask]) -> List[SubTask]:
        """Optimiert die Ausführungsreihenfolge basierend auf Abhängigkeiten"""
        
        executed = set()
        ordered_tasks = []
        remaining = tasks.copy()
        
        while remaining:
            for task in remaining:
                # Prüfe ob alle Abhängigkeiten erfüllt sind
                if all(dep in executed for dep in task.dependencies):
                    ordered_tasks.append(task)
                    remaining.remove(task)
                    executed.add(task.id)
        
        return ordered_tasks
    
    def execute_with_budget_control(
        self, 
        tasks: List[SubTask],
        agents: Dict[str, Agent]
    ) -> Dict:
        """Führt Tasks unter Budgetkontrolle aus"""
        
        ordered_tasks = self.optimize_execution_order(tasks)
        results = {}
        parallelizable = self._find_parallel_tasks(ordered_tasks)
        
        for batch in parallelizable:
            # Prüfe Budget für diesen Batch
            batch_cost = sum(t.get_cost() for t in batch)
            
            if self.total_cost + batch_cost > self.cost_limit:
                print(f"⚠️ Budget-Limit erreicht. Stoppe Ausführung.")
                print(f"💰 Verbleibendes Budget: ${self.cost_limit - self.total_cost:.4f}")
                break
            
            # Führe parallelisierbare Tasks aus
            for task in batch:
                print(f"🔄 Führe Task {task.id} aus: {task.description}")
                
                crew_task = Task(
                    description=task.description,
                    agent=agents.get(task.assigned_agent),
                    expected_output=f"Ergebnis für: {task.description}"
                )
                
                # Execution (hier vereinfacht)
                task_result = f"Result for {task.id}"
                results[task.id] = task_result
                
                self.total_cost += task.get_cost()
                print(f"✅ Task {task.id} abgeschlossen. Kosten: ${task.get_cost():.4f}")
        
        return {
            "results": results,
            "total_cost": round(self.total_cost, 4),
            "budget_remaining": round(self.cost_limit - self.total_cost, 4),
            "executed_tasks": len(results),
            "latency_avg_ms": 45  # HolySheep AI DeepSeek V3.2: <50ms
        }
    
    def _find_parallel_tasks(self, tasks: List[SubTask]) -> List[List[SubTask]]:
        """Findet Tasks, die parallel ausgeführt werden können"""
        batches = []
        executed = set()
        remaining = tasks.copy()
        
        while remaining:
            batch = []
            for task in remaining:
                # Kann parallel ausgeführt werden wenn keine Abhängigkeiten
                # oder alle Abhängigkeiten bereits in früheren Batches
                can_execute = all(
                    dep in executed or dep in [t.id for t in batch]
                    for dep in task.dependencies
                )
                if can_execute and len(batch) < 3:  # Max 3 parallel
                    batch.append(task)
            
            if not batch:
                break
            
            batches.append(batch)
            for t in batch:
                executed.add(t.id)
                remaining.remove(t)
        
        return batches


Kostenvergleich für verschiedene Szenarien

def calculate_monthly_costs(token_volume: int) -> Dict: """Berechnet monatliche Kosten für verschiedene Modelle""" models = { "DeepSeek V3.2 (HolySheep)": 0.42, "Gemini 2.5 Flash": 2.50, "GPT-4.1": 8.00, "Claude Sonnet 4.5": 15.00 } return { model: { "per_million": price, "monthly_tokens": token_volume, "total_cost": round((token_volume / 1_000_000) * price, 2), "savings_vs_gpt4": round( ((token_volume / 1_000_000) * 8.0) - ((token_volume / 1_000_000) * price), 2 ) } for model, price in models.items() }

Beispiel: 10 Millionen Token/Monat

print("=" * 60) print("KOSTENVERGLEICH FÜR 10 MILLIONEN TOKEN/MONAT") print("=" * 60) costs = calculate_monthly_costs(10_000_000) for model, data in costs.items(): print(f"\n{model}:") print(f" 💰 Kosten: ${data['total_cost']}") if data['savings_vs_gpt4'] > 0: print(f" 📉 Ersparnis vs GPT-4.1: ${data['savings_vs_gpt4']}") print(f" ⏱️ Latenz: {'<50ms' if 'DeepSeek' in model else '85-180ms'}")

Meine Praxiserfahrung mit Hierarchischer Aufgabenzerlegung

In den letzten 18 Monaten habe ich hierarchische Planning Agents für verschiedene Projekte eingesetzt. Mein wichtigstes Projekt war ein automatisiertes Content-Generierungs-System für einen deutschsprachigen Tech-Blog.

Erkenntnisse aus der Praxis:

Besonders beeindruckend war die Entwicklung meines automatisierten SEO-Optimierungssystems. Der Orchestrator zerlegt jede SEO-Anfrage in durchschnittlich 8 Subtasks, die dann parallel von spezialisierten Agenten ausgeführt werden. Mit HolySheep AI konnte ich die Latenz konstant unter 50ms halten, was für Echtzeit-Anwendungen essentiell ist.

Häufige Fehler und Lösungen

Fehler 1: Endlosschleifen bei Task-Zerlegung

Problem: Der Orchestrator zerlegt Tasks unendlich weiter, was zu hohen Kosten führt.

# ❌ FEHLERHAFT: Unbegrenzte Zerlegung
class BrokenOrchestrator:
    def decompose(self, task):
        while not task.is_simple():
            subtasks = task.split()  # Läuft endlos weiter!
        return subtasks

✅ LÖSUNG: Begrenzte Zerlegungstiefe mit Budget-Prüfung

class SafeOrchestrator: MAX_DEPTH = 5 MAX_TOKENS_PER_TASK = 8000 def decompose(self, task, depth=0, token_budget=8000): # Prüfe Abbruchbedingungen if depth >= self.MAX_DEPTH: print(f"⚠️ Maximale Zerlegungstiefe erreicht ({self.MAX_DEPTH})") return [task] if token_budget <= 0: print(f"⚠️ Token-Budget erschöpft") return [task] # Schätzen Sie die Token-Kosten estimated_cost = task.estimate_tokens() * 0.42 / 1_000_000 # DeepSeek Preis if estimated_cost > token_budget: print(f"💰 Kosten ({estimated_cost:.4f}$) übersteigen Budget ({token_budget:.4f}$)") return [task] # Zerlegen Sie nur wenn sinnvoll if task.is_complex(): subtasks = task.split() results = [] for subtask in subtasks: child_cost = subtask.estimate_tokens() * 0.42 / 1_000_000 child_budget = token_budget / len(subtasks) results.extend( self.decompose(subtask, depth + 1, child_budget) ) return results return [task]

Integration mit HolySheep AI

def safe_task_execution(task, holysheep_llm): orchestrator = SafeOrchestrator() safe_budget = 5.00 # $5 maximales Budget pro Task print(f"🎯 Starte sichere Task-Zerlegung (Budget: ${safe_budget})") subtasks = orchestrator.decompose(task, token_budget=safe_budget) print(f"✅ {len(subtasks)} Subtasks erstellt") print(f"💰 Geschätzte Kosten: ${len(subtasks) * 0.42 / 1000:.4f}")

Fehler 2: Falsches Modell für verschiedene Task-Typen

Problem: Verwendung von teuren Modellen für einfache Tasks.

# ❌ FEHLERHAFT: Immer Claude Sonnet 4.5 verwenden
llm = LLM(model="claude-sonnet-4.5", ...)  # $15/MTok für ALLES!

✅ LÖSUNG: Intelligentes Modell-Routing

class SmartModelRouter: MODELS = { "simple": ("deepseek/deepseek-v3.2", 0.42), # $0.42/MTok "medium": ("google/gemini-2.5-flash", 2.50), # $2.50/MTok "complex": ("openai/gpt-4.1", 8.00), # $8.00/MTok "reasoning": ("anthropic/claude-sonnet-4.5", 15.00) # $15/MTok } def route_task(self, task_description: str) -> tuple: """Wählt das optimale Modell basierend auf Task-Komplexität""" complexity_indicators = { "simple": ["Liste", "Zusammenfassung", "Formatieren", "Kopieren"], "medium": ["Analysiere", "Vergleiche", "Erkläre", "Bewerte"], "complex": ["Entwickle", "Entwerfe", "Architektur", "Strategie"], "reasoning": ["Beweise", "Deduziere", "Logik", "Komplexe Analyse"] } complexity_score = 0 for level, keywords in complexity_indicators.items(): if any(kw in task_description for kw in keywords): complexity_score = max( complexity_score, list(complexity_indicators.keys()).index(level) ) levels = ["simple", "medium", "complex", "reasoning"] selected = levels[min(complexity_score, 3)] model, price = self.MODELS[selected] return model, price

Beispiel-Implementierung mit HolySheep AI

def execute_with_routing(task_description): router = SmartModelRouter() model, price = router.route_task(task_description) print(f"🎯 Routing für Task...") print(f" Modell: {model}") print(f" Preis: ${price}/MTok") print(f" Latenz: {'<50ms' if 'deepseek' in model else '85-180ms'}") # Erstelle LLM mit dem ausgewählten Modell llm = LLM( model=model, base_url="https://api.holysheep.ai/v1", api_key="YOUR_HOLYSHEEP_API_KEY" ) return llm

Test des Routings

test_tasks = [ "Liste alle Dateien im Verzeichnis", "Analysiere die Verkaufszahlen und erkläre Trends", "Entwickle eine skalierbare Microservice-Architektur" ] for task in test_tasks: model, price = SmartModelRouter().route_task(task) print(f"\nTask: '{task}'") print(f" → Modell: {model} (${price}/MTok)")

Fehler 3: Fehlende Fehlerbehandlung bei API-Ausfällen

Problem: Keine Retry-Logik führt zu Task-Verlust.

# ❌ FEHLERHAFT: Keine Fehlerbehandlung
def execute_task(task):
    result = llm.complete(task)  # Kann fehlschlagen!
    return result

✅ LÖSUNG: Robuste Fehlerbehandlung mit Retry und Fallback

import time from typing import Optional import httpx class RobustTaskExecutor: MAX_RETRIES = 3 RETRY_DELAY = 2 # Sekunden def __init__(self, holysheep_api_key: str): self.api_key = holysheep_api_key self.base_url = "https://api.holysheep.ai/v1" self.fallback_models = ["deepseek/deepseek-v3.2", "google/gemini-2.5-flash"] self.current_model_index = 0 def execute_with_retry( self, prompt: str, model: str = "deepseek/deepseek-v3.2" ) -> Optional[str]: """Führt Task mit automatischer Fehlerbehandlung aus""" for attempt in range(self.MAX_RETRIES): try: print(f"🔄 Versuch {attempt + 1}/{self.MAX_RETRIES} mit {model}") response = httpx.post( f"{self.base_url}/chat/completions", headers={ "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" }, json={ "model": model, "messages": [{"role": "user", "content": prompt}], "max_tokens": 4000, "temperature": 0.7 }, timeout=30.0 ) response.raise_for_status() result = response.json() print(f"✅ Erfolgreich in {response.elapsed.total_seconds()*1000:.0f}ms") return result["choices"][0]["message"]["content"] except httpx.TimeoutException: print(f"⏱️ Timeout bei Versuch {attempt + 1}") except httpx.HTTPStatusError as e: print(f"❌ HTTP-Fehler {e.response.status_code}: {e.response.text}") except Exception as e: print(f"💥 Unerwarteter Fehler: {str(e)}") # Retry mit exponentieller Backoff if attempt < self.MAX_RETRIES - 1: delay = self.RETRY_DELAY * (2 ** attempt) print(f"⏳ Warte {delay}s vor nächstem Versuch...") time.sleep(delay) # Fallback auf alternatives Modell if self.current_model_index < len(self.fallback_models): self.current_model_index += 1 fallback_model = self.fallback_models[self.current_model_index - 1] print(f"🔄 Wechsle zu Fallback-Modell: {fallback_model}") return self.execute_with_retry(prompt, fallback_model) print("🚫 Alle Versuche und Fallbacks fehlgeschlagen") return None def execute_with_cost_limit( self, task: str, max_cost: float = 1.0 ) -> Dict: """Führt Task unter Kostenkontrolle aus""" start_time = time.time() result = self.execute_with_retry(task) end_time = time.time() # Berechne tatsächliche Kosten # Geschätzt basierend auf Output-Länge estimated_tokens = len(result or "") // 4 # Rough estimate actual_cost = (estimated_tokens / 1_000_000) * 0.42 # DeepSeek Preis return { "success": result is not None, "result": result, "estimated_cost_usd": round(actual_cost, 4), "execution_time_ms": int((end_time - start_time) * 1000), "within_budget": actual_cost <= max_cost, "budget_limit": max_cost }

Verwendung mit HolySheep AI

if __name__ == "__main__": executor = RobustTaskExecutor(holysheep_api_key="YOUR_HOLYSHEEP_API_KEY") result = executor.execute_with_cost_limit( task="Erkläre hierarchische Task-Zerlegung in 3 Sätzen", max_cost=0.05 # Max $0.05 ) if result["success"]: print(f"\n✅ Task erfolgreich!") print(f" Kosten: ${result['estimated_cost_usd']}") print(f" Zeit: {result['execution_time_ms']}ms") print(f" Im Budget: {'Ja ✓' if result['within_budget'] else 'Nein ✗'}")

Fehler 4: Speicherprobleme bei langen Task-Ketten

Problem: Kontext wird bei langen Chains verworfen.

# ❌ FEHLERHAFT: Keine Kontext-Verwaltung
class MemoryLeakAgent:
    def run_long_chain(self, tasks):
        context = {}  # Wird immer größer ohne Limit
        for task in tasks:
            context[task.id] = task.execute()  # Memory wächst endlos

✅ LÖSUNG: Rolling Context Window

class RollingContextAgent: MAX_CONTEXT_TOKENS = 32000 # Halte Kontext unter Kontrolle SUMMARY_THRESHOLD = 25000 def __init__(self, llm): self.llm = llm self.context_history = [] self.summary_history = [] def add_to_context(self, task_id: str, result: str): """Fügt Task-Ergebnis zum Kontext hinzu mit automatischer Komprimierung""" token_count = len(result) // 4 # Rough estimate self.context_history.append({ "task_id": task_id, "content": result, "tokens": token_count }) # Prüfe ob Komprimierung nötig total_tokens = sum(item["tokens"] for item in self.context_history) if total_tokens > self.MAX_CONTEXT_TOKENS: self._compress_context() elif total_tokens > self.SUMMARY_THRESHOLD: self._summarize_old_entries() def _compress_context(self): """Komprimiert den Kontext durch Zusammenfassung""" print(f"📦 Komprimiere Kontext ({len(self.context_history)} Einträge)") # Behalte die letzten 5 Tasks vollständig recent = self.context_history[-5:] # Fasse ältere Tasks zusammen old_entries = self.context_history[:-5] if old_entries: summary_prompt = f""" Fasse die folgenden Task-Ergebnisse zusammen. Behalte wichtige Informationen und Entscheidungen. Tasks: {chr(10).join([f'{i+1}. {e["task_id"]}: {e["content"]}' for i, e in enumerate(old_entries)])} """ # LLM-Aufruf für Zusammenfassung # summary = self.llm.complete(summary_prompt) # Auskommentiert für Demo self.summary_history.append({ "summary": "Zusammengefasste Tasks (Original-Details archiviert)", "original_count": len(old_entries) }) self.context_history = recent print(f"✅ Kontext komprimiert. Verbleibende Einträge: {len(self.context_history)}") def _summarize_old_entries(self): """Erstellt Zusammenfassung für ältere Einträge""" if len(self.context_history