Einstellungen

Sprache

Erstellung von KI-Agenten mit mehreren Modellen: Ein praktischer Architekturleitfaden

L
LemonData
·26. Februar 2026·9 Aufrufe
#KI Agenten#Multi Modell#Architektur#Tutorial#LangChain
Erstellung von KI-Agenten mit mehreren Modellen: Ein praktischer Architekturleitfaden

Erstellung von KI-Agenten mit mehreren Modellen: Ein praktischer Architekturleitfaden

Die meisten KI-Agenten verwenden ein einzelnes Modell für alles. Den Planungsschritt, die Tool-Aufrufe, die Zusammenfassung, die Fehlerbehebung. Das funktioniert für Demos. In der Produktion ist es verschwenderisch.

Ein Planungsschritt, der tiefgehendes Denken erfordert, braucht nicht dasselbe Modell wie ein JSON-Extraktionsschritt. Eine Codegenerierungsaufgabe hat andere Anforderungen als eine Klassifizierungsaufgabe. Claude Opus 4.6 ($25/1M Ausgabe-Token) zu verwenden, um einen Datumsstring zu formatieren, ist wie einen leitenden Architekten zu engagieren, um eine Wand zu streichen.

So bauen Sie Agenten, die jeden Schritt an das optimale Modell weiterleiten.

Die Multi-Model-Agent-Architektur

User Request
    │
    ▼
┌─────────────┐
│   Router     │  ← Klassifiziert die Aufgabenkomplexität
│  (schnelles Modell)│
└──────┬──────┘
       │
   ┌───┴───┐
   ▼       ▼
┌──────┐ ┌──────┐
│Einfach│ │Komplex│
│Modell │ │Modell │
└──┬───┘ └──┬───┘
   │        │
   ▼        ▼
┌─────────────┐
│  Aggregator  │  ← Kombiniert Ergebnisse
│  (schnelles Modell)│
└─────────────┘

Drei Komponenten:

  1. Ein Router, der eingehende Aufgaben nach Komplexität klassifiziert
  2. Ein Pool von Modellen, die auf verschiedene Aufgabentypen abgestimmt sind
  3. Ein Aggregator, der bei Bedarf Ergebnisse kombiniert

Implementierung mit OpenAI SDK

Mit einem einzigen API-Schlüssel über einen Aggregator können Sie auf alle Modelle zugreifen, ohne mehrere SDKs verwalten zu müssen:

from openai import OpenAI

client = OpenAI(
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# Modell-Pool mit Kosten-/Fähigkeitsstufen
MODELS = {
    "router": "gpt-4.1-mini",        # $0.40/1M Eingabe - schnelle Klassifikation
    "simple": "gpt-4.1-mini",        # $0.40/1M Eingabe - Extraktion, Formatierung
    "reasoning": "claude-sonnet-4-6",# $3.00/1M Eingabe - Planung, Analyse
    "complex": "gpt-4.1",            # $2.00/1M Eingabe - Codegenerierung, mehrstufig
    "budget": "deepseek-chat",       # $0.28/1M Eingabe - Massenverarbeitung
}

def route_task(task: str) -> str:
    """Verwende ein günstiges Modell zur Klassifikation der Aufgabenkomplexität."""
    response = client.chat.completions.create(
        model=MODELS["router"],
        messages=[
            {"role": "system", "content": """Klassifiziere diese Aufgabe in eine Kategorie:
- einfach: Datenextraktion, Formatierung, Übersetzung
- reasoning: Analyse, Planung, Vergleich
- komplex: Codegenerierung, mehrstufige Problemlösung
- budget: Massenverarbeitung, nicht-kritische Aufgaben
Antworte nur mit dem Kategorienamen."""},
            {"role": "user", "content": task}
        ],
        max_tokens=10
    )
    category = response.choices[0].message.content.strip().lower()
    return MODELS.get(category, MODELS["simple"])

def execute_task(task: str, context: str = "") -> str:
    """Leitet die Aufgabe an das passende Modell weiter und führt sie aus."""
    model = route_task(task)
    messages = []
    if context:
        messages.append({"role": "system", "content": context})
    messages.append({"role": "user", "content": task})

    response = client.chat.completions.create(
        model=model,
        messages=messages
    )
    return response.choices[0].message.content

Praxisbeispiel: Code-Review-Pipeline

Hier ein praktischer Multi-Model-Agent, der Pull Requests überprüft:

def review_pr(diff: str) -> dict:
    """Multi-Model PR-Review-Pipeline."""

    # Schritt 1: Änderungen klassifizieren (günstiges Modell)
    classification = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{
            "role": "user",
            "content": f"Klassifiziere diese Code-Änderungen: {diff[:2000]}\n"
                       "Kategorien: bugfix, feature, refactor, docs, test"
        }],
        max_tokens=20
    ).choices[0].message.content

    # Schritt 2: Sicherheitsprüfung (Reasoning-Modell)
    security = client.chat.completions.create(
        model="claude-sonnet-4-6",
        messages=[{
            "role": "system",
            "content": "Du bist ein Sicherheitsprüfer. Prüfe auf: "
                       "SQL-Injection, XSS, Auth-Bypass, Geheimnisse im Code, "
                       "unsichere Deserialisierung. Sei spezifisch bei Zeilennummern."
        }, {
            "role": "user",
            "content": f"Überprüfe diesen Diff auf Sicherheitsprobleme:\n{diff}"
        }]
    ).choices[0].message.content

    # Schritt 3: Codequalität (generelles Modell)
    quality = client.chat.completions.create(
        model="gpt-4.1",
        messages=[{
            "role": "user",
            "content": f"Bewerte die Codequalität: Benennung, Struktur, "
                       f"Fehlerbehandlung, Testabdeckung.\n{diff}"
        }]
    ).choices[0].message.content

    # Schritt 4: Zusammenfassung (günstiges Modell)
    summary = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{
            "role": "user",
            "content": f"Fasse diese PR-Review in 3 Stichpunkten zusammen:\n"
                       f"Typ: {classification}\n"
                       f"Sicherheit: {security[:500]}\n"
                       f"Qualität: {quality[:500]}"
        }]
    ).choices[0].message.content

    return {
        "classification": classification,
        "security": security,
        "quality": quality,
        "summary": summary
    }

Kostenaufstellung für eine typische PR-Review (2K Token Diff):

Schritt Modell Eingabe-Token Kosten
Klassifikation GPT-4.1-mini ~2.100 $0.0008
Sicherheit Claude Sonnet 4.6 ~2.500 $0.0075
Qualität GPT-4.1 ~2.500 $0.0050
Zusammenfassung GPT-4.1-mini ~1.200 $0.0005
Gesamt ~$0.014

Die Verwendung von Claude Sonnet 4.6 für alle vier Schritte würde ca. $0.028 kosten. Der Multi-Model-Ansatz halbiert die Kosten und nutzt das stärkste Modell dort, wo es am wichtigsten ist (Sicherheitsprüfung).

LangChain-Integration

from langchain_openai import ChatOpenAI

# Erstelle Modellinstanzen mit unterschiedlichen Konfigurationen
fast = ChatOpenAI(
    model="gpt-4.1-mini",
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

reasoning = ChatOpenAI(
    model="claude-sonnet-4-6",
    api_key="sk-lemon-xxx",
    base_url="https://api.lemondata.cc/v1"
)

# Verwendung in LangChain-Chains
from langchain_core.prompts import ChatPromptTemplate

classify_chain = ChatPromptTemplate.from_template(
    "Klassifiziere: {input}"
) | fast

analyze_chain = ChatPromptTemplate.from_template(
    "Analysiere ausführlich: {input}"
) | reasoning

Wann man Multi-Model-Agenten einsetzen sollte

Multi-Model-Routing erhöht die Komplexität. Es lohnt sich, wenn:

  • Ihr Agent verschiedene Aufgabentypen bearbeitet (nicht nur Chat)
  • Die monatlichen API-Kosten über $100 liegen (Einsparungen werden relevant)
  • Sie spezifische Modellstärken benötigen (Claude für Code, Gemini für langen Kontext, GPT für Geschwindigkeit)
  • Latenz für einige Schritte wichtig ist, für andere nicht

Für einfache Chatbots oder Agenten mit nur einem Zweck reicht ein einzelnes Modell aus. Der Overhead durch Routing ist nicht gerechtfertigt, wenn jede Anfrage dieselbe Fähigkeit benötigt.

Wichtigste Erkenntnisse

  1. Verwenden Sie das günstigste Modell, das jeden Schritt gut bewältigt
  2. Reservieren Sie teure Modelle für Aufgaben, die sie wirklich benötigen
  3. Klassifikations-/Routing-Schritte sollten immer das günstigste verfügbare Modell nutzen
  4. Messen Sie die tatsächlichen Kosten pro Agentenlauf, nicht nur die Tokenpreise
  5. Ein API-Aggregator mit einem Schlüssel vereinfacht den Zugriff auf mehrere Modelle erheblich

Zugriff auf alle Modelle über eine API: lemondata.cc bietet 300+ Modelle mit nur einem API-Schlüssel. Erstellen Sie Multi-Model-Agenten, ohne mehrere Anbieter-Accounts verwalten zu müssen.

Share: