Direkt zum Inhalt springen
KI-Agenten-Taxonomie

Deterministischer Code um probabilistische Modelle.

Über 120 Bausteine von KI-Agenten in neun Bereichen, jeder mit seinem klassischen Gegenstück aus der Softwareentwicklung.

Der Grundsatz

Ein KI-Agent ist kein einzelnes Modell, sondern ein Softwaresystem, das ein probabilistisches Modell in eine kontrollierte Ausführungsschleife einbettet.

Das Sprachmodell ist die zentrale probabilistische Entscheidungskomponente im System. Der Code darum herum ist so deterministisch wie möglich gebaut: Er rahmt diese Unberechenbarkeit ein, versorgt sie mit Kontext, prüft ihre Vorschläge und fängt Fehler ab. Dieser Code ist der Harness.

Das Modell schlägt vor, ein Scorer bewertet, der Code entscheidet.

Kontrollfluss & Auslöser

  • Ereignis- & Zeitauslöser

    Klassisch Cronjobs, Webhooks, Queue-Listener

    Agenten nicht nur interaktiv im Chat starten, sondern nach Zeitplan oder als Reaktion auf Ereignisse im System.

  • Agent Loop

    Klassisch while / for

    Das Modell in einer Schleife aufrufen, bis das Ziel erreicht ist.

  • Abbruchbedingung

    Klassisch break / return

    Aufhören, sobald eine finale Antwort vorliegt oder harte Grenzen (Schritte, Zeit, Budget) erreicht sind.

  • Prompt Chaining

    Klassisch Pipeline / Funktionskomposition

    Feste Abfolge, in der die Ausgabe von Schritt 1 die Eingabe von Schritt 2 ist.

  • Plan-and-Execute

    Klassisch Query-Planer (SQL) / Dry-Run

    Das Modell einen strukturierten Arbeitsplan erstellen lassen, den der Code danach Schritt für Schritt ausführt.

  • Evaluator–Optimizer (Reflexion)

    Klassisch Review-Schleife bis zur Freigabe

    Entwurf → Kritik → Überarbeitung in einer gezielten Schleife, bis ein Qualitätskriterium erfüllt ist.

  • Routing

    Klassisch Klassifikation + switch

    Das Modell die Anfrage einordnen lassen; der Code leitet sie an den passenden Ausführungspfad weiter.

  • Tool Dispatch

    Klassisch switch / Dictionary-Lookup

    Den Tool-Namen aus der Modellantwort der tatsächlichen Funktion im Code zuordnen.

  • Hooks / Middleware

    Klassisch Interceptor, Pre-/Post-Handler

    Code, der automatisch vor und nach jedem Modell- oder Tool-Aufruf läuft (Logging, Validierung, Transformation).

  • Workflow-Graph

    Klassisch Zustandsautomat

    Erlaubte Zustände und Übergänge ausdrücklich im Code festlegen.

  • Parallelisierung

    Klassisch async / Fan-out, Fan-in

    Mehrere Modell- oder Tool-Aufrufe gleichzeitig starten und ihre Ergebnisse zusammenführen.

  • Spekulative Ausführung

    Klassisch Spekulative Ausführung / Prefetching

    Wahrscheinlich benötigte Daten vorab laden oder Guardrails parallel prüfen, während das Modell noch generiert.

  • Orchestrator–Worker

    Klassisch Master/Worker, Job-Queue

    Ein Modell zerlegt die Gesamtaufgabe; spezialisierte Worker bearbeiten die Teilaufgaben.

  • Streaming & Events

    Klassisch Generatoren (yield), Event-Streams (SSE)

    Tokens und Zwischenschritte laufend weitergeben, statt bis zum Ende zu blockieren.

  • Human-in-the-Loop

    Klassisch Blockierendes Warten auf Freigabe

    Vor kritischen Schritten die Bestätigung eines Menschen verlangen.

  • Unterbrechung & Abbruch

    Klassisch CancellationToken, Signal-Handling

    Eine laufende Schleife sauber beenden, wenn der Nutzer sie stoppt oder neue Informationen liefert.

  • Time-Travel / Replay

    Klassisch Debugger-Schritt zurück, git checkout

    Zu einem früheren Checkpoint zurückspringen, den Kontext anpassen und ab dort neu ausführen.

  • Rückfragen bei Mehrdeutigkeit

    Klassisch Interaktive Eingabeaufforderung

    Bei einer mehrdeutigen Anfrage anhalten und den Nutzer fragen, statt zu raten (z. B. über ein Tool ask_user). Der Code erkennt das und pausiert die Schleife.

  • Tool Choice (erzwungener Aufruf)

    Klassisch Pflicht-Funktionsaufruf

    tool_choice auf auto, required oder ein bestimmtes Tool setzen, z. B. um im letzten Schritt eine strukturierte Antwort zu erzwingen.

Kontext, Gedächtnis & Tool-Schnittstellen

  • System Prompt

    Klassisch Globale Konstanten / Konfigurationskopf

    Grundregeln, Rolle und Grenzen ganz oben im Kontext verankern.

  • Prompt-Vorlagen

    Klassisch String-Formatierung, Template-Engine

    Prompts zur Laufzeit aus festen Bausteinen und Variablen zusammensetzen.

  • Few-Shot-Beispiele

    Klassisch Konfiguration / Test-Fixtures

    Gewünschtes Verhalten und Ausgabeformat mit Beispielen im Prompt vorführen.

  • Tool-Definitionen

    Klassisch Funktionssignatur + Docstring / API-Doku

    Name, Beschreibung und Parameterschema jedes Tools (das Modell sieht nur das – unklare Beschreibungen führen zu schlechten Aufrufen).

  • Deterministische Tools statt Modellwissen

    Klassisch Bibliotheksfunktion statt Kopfrechnen

    Rechnen, Datumslogik, Sortieren oder Codeausführung an Tools abgeben, statt das Modell raten zu lassen.

  • Aufbereitung von Tool-Ausgaben

    Klassisch Paginierung, Kürzen, Serialisierung

    Zu große Tool-Ausgaben kürzen, filtern oder zusammenfassen, bevor sie das Kontextfenster sprengen.

  • Kurzzeitgedächtnis

    Klassisch Liste mit append()

    Nachrichtenverlauf und Zwischenschritte durch den laufenden Lauf tragen.

  • Kontext-Scoping (Isolation)

    Klassisch Variablen-Scope (lokal vs. global)

    Jedem Schritt nur genau den Ausschnitt der Daten zeigen, den er braucht.

  • Kontext-Kompaktierung

    Klassisch Ringpuffer, Log-Rotation

    Älteren Verlauf kürzen oder zusammenfassen, wenn sich das Kontextfenster füllt.

  • Langzeitgedächtnis

    Klassisch Datenbank lesen / schreiben

    Wissen über Sitzungen hinweg speichern.

  • Gedächtnis-Extraktion im Hintergrund

    Klassisch ETL-Job / Write-behind-Cache

    Nach einem Gespräch asynchron die wichtigsten Fakten herausziehen und in eine Datenbank schreiben.

  • RAG

    Klassisch Suchanfrage / Datenbankindex

    Vor oder während eines Laufs passende Dokumente aus einer Wissensbasis abrufen.

  • Dynamisches Laden von Tools (Tool-RAG)

    Klassisch Lazy Loading / dynamischer Import

    Bei Hunderten von Tools nur die Beschreibungen in den Kontext laden, die für den aktuellen Schritt relevant sind.

  • Multimodale Vorverarbeitung

    Klassisch Codec / Deserialisierung (OCR, STT)

    PDFs, Bilder oder Audio vor dem Modellaufruf in Text, Tabellen oder Abschnitte umwandeln.

  • Prompt Caching

    Klassisch Lese-Cache für Präfixe

    Einen unveränderten Prompt-Anfang nicht bei jedem Schritt neu verarbeiten (spart Latenz und Kosten).

  • Reihenfolge im Kontext

    Klassisch Speicherlayout / Priorisierung

    Wichtige Anweisungen an den Anfang oder ans Ende setzen; was in sehr langen Kontexten in der Mitte steht, wird leichter übersehen. Stabile Teile vorn halten, damit das Prompt Caching greift.

  • Chunking & Indexierung

    Klassisch Index-Design

    Dokumente sinnvoll teilen (nach Abschnitten, mit Überlappung und Metadaten wie Quelle und Datum). Schlechte Chunks ergeben schlechtes RAG, egal wie stark das Modell ist.

  • Hybride Suche & Query Rewriting

    Klassisch Volltextindex + Vektorsuche, Query-Erweiterung

    Stichwortsuche (z. B. BM25) und Vektorsuche kombinieren, weil Embeddings mit exakten Zeichenketten wie Teilenummern schlecht umgehen. Das Modell Suchanfragen umformulieren oder zerlegen lassen.

  • Anweisungsmodule (Skills)

    Klassisch Plugins / Module bei Bedarf

    Spezielle Anweisungen erst laden, wenn sie gebraucht werden, statt alles in den System Prompt zu packen. Hält den Kontext schlank.

  • Externes Arbeitsgedächtnis (Notizen & Aufgabenlisten)

    Klassisch Arbeitsprotokoll / Auslagerungsdatei

    Den Agenten Pläne, Fortschritt und Erkenntnisse in Dateien oder eine Aufgabenliste schreiben lassen. Übersteht Kontext-Kompaktierung und sehr lange Läufe.

Validierung von Ein- und Ausgaben (Validierung & Guardrails)

  • Eingabe-Guardrails

    Klassisch Eingabevalidierung / Bereinigung

    Ungültige, gefährliche oder sensible Eingaben abfangen, bevor das Modell aufgerufen wird.

  • Constrained Decoding

    Klassisch Grammatik / Parser-Regeln

    Ungültige Tokens schon während der Generierung ausschließen.

  • Strukturierte Ausgaben

    Klassisch Typen / Schema (Pydantic, JSON Schema)

    Ein typisiertes Datenobjekt erzwingen statt freien Text.

  • Parsing & Validierung

    Klassisch Parser + Fehlerbehandlung

    Modellantworten parsen, Typen und Wertebereiche prüfen und Fehler sauber abfangen.

  • Ausgabe-Guardrails

    Klassisch if / else, Assertions

    Die Antwort auf Inhalts- und Formatregeln prüfen, bevor sie weitergegeben wird.

  • Grounding & Belege

    Klassisch Zeiger / Fremdschlüssel-Prüfung

    Vom Modell verlangen, Aussagen mit Quellen-IDs zu belegen; der Code prüft deterministisch, dass Quelle und Zitat existieren.

  • Deterministisches Nachrechnen

    Klassisch Nachbearbeitung / Neuberechnung

    Summen, Prozente oder Daten aus dem Text mit deterministischem Code nachrechnen.

  • Logprobs / Konfidenzprüfung

    Klassisch Schwellenwert-Filter

    Token-Wahrscheinlichkeiten auswerten. Einschränkung: nicht bei jedem Anbieter verfügbar und kein verlässlicher Halluzinationsdetektor (Modelle liegen oft selbstsicher falsch).

  • LLM-as-Judge

    Klassisch Code-Review durch Kollegen

    Ein zweites Modell bewertet die Antwort (Einschränkung: selbst probabilistisch!).

  • Retry mit Feedback

    Klassisch try / except in einer Schleife

    Den Validierungsfehler an das Modell zurückgeben, damit es sich selbst korrigiert.

  • Mehrfach-Sampling & Abstimmung

    Klassisch Redundanz / Mehrheitsentscheid

    Mehrere Antworten erzeugen und die häufigste oder am besten bewertete wählen.

  • Fallback

    Klassisch Standardwert, Ersatzimplementierung

    Auf ein Ersatzmodell oder eine feste Antwort wechseln, wenn die Wiederholungen erschöpft sind.

  • Behandlung des Stop-Grunds

    Klassisch Exit-Codes / Rückgabewerte prüfen

    Prüfen, warum die Generierung endete (fertig, Tool-Aufruf, Token-Limit, Ablehnung). Abgeschnittene Antworten fortsetzen oder verwerfen und Ablehnungen ausdrücklich behandeln, statt sie als normale Antwort zu nehmen.

Guardrails sind nicht nur if/else. if/else beschreibt den Kontrollfluss; in der Praxis entstehen Guardrails auch über Policy-Engines, Berechtigungsdienste, Schema-Validatoren, Sandboxes oder eigene Klassifikationsmodelle.

Sicherheit & Isolation

  • Schutz vor Prompt Injection

    Klassisch Trennzeichen / Datenkennzeichnung + Least Privilege

    Nicht vertrauenswürdige externe Daten im Prompt kennzeichnen. Wichtig: Anders als bei SQL Prepared Statements gibt es in LLMs keine garantierte Trennung von Code und Daten. Echten Schutz bieten harte Grenzen für Tool-Berechtigungen im Harness.

  • Validierung von Tool-Argumenten

    Klassisch Parametervalidierung, Schutz vor Path Traversal

    Nicht nur prüfen, ob ein Tool erlaubt ist, sondern auch, mit welchen Argumenten es aufgerufen wird (z. B. Dateipfade, Betragsgrenzen, Empfängerdomains).

  • Ausgabe-Encoding

    Klassisch Escaping gegen XSS / SQL Injection

    Modellausgaben als nicht vertrauenswürdige Eingabe behandeln, bevor sie als HTML/Markdown im Browser erscheinen oder in Abfragen eingesetzt werden.

  • Mandantentrennung im Gedächtnis

    Klassisch Mandantenfähigkeit, getrennte Schemas / Namespaces

    Im Datenbank- und RAG-Code strikt durchsetzen, dass Gedächtnis und Dokumente von Nutzer A nie in den Kontext von Nutzer B gelangen.

  • Identitätsweitergabe (On-Behalf-Of)

    Klassisch OAuth-Scopes, Row-Level Security

    Daten- und Tool-Aufrufe mit genau den Rechten des angemeldeten Nutzers ausführen.

  • Tool-Berechtigungen

    Klassisch Zugriffslisten / Allowlist / RBAC

    Festlegen, welche Tools und Aktionen in welchem Zustand erlaubt sind.

  • Freigabe vor unumkehrbaren Aktionen

    Klassisch Dialog „Sind Sie sicher?“ (Two-Phase Commit)

    Nie ohne ausdrückliche Freigabe eines Menschen senden, löschen, bezahlen oder veröffentlichen.

  • Umkehrbare Maskierung personenbezogener Daten

    Klassisch Tokenisierung / Platzhalter per Proxy

    Sensible Daten vor dem Modellaufruf durch Platzhalter ersetzen und danach wiederherstellen.

  • Umgang mit Secrets

    Klassisch Umgebungsvariablen, Vault

    Passwörter und API-Keys nie in den Modellkontext geben; sie erst im Tool-Code einsetzen.

  • Sandbox

    Klassisch Container, Prozessisolation

    Codeausführung und Dateizugriff vom Host-System abschotten.

  • Egress-Filter (DLP)

    Klassisch Ausgehende Firewall / Allowlisting

    Verhindern, dass ein gekapertes Modell Daten über externe Links, Webhooks oder Bilder abfließen lässt.

  • Budgets & Rate Limits

    Klassisch Zähler, Kontingente

    Harte Obergrenzen für Kosten und Aufrufe je Lauf und je Mandant durchsetzen.

  • Audit-Trail

    Klassisch Unveränderliches Sicherheitsprotokoll

    Manipulationssicher festhalten, wer welche schreibende oder unumkehrbare Aktion wann ausgelöst hat.

  • Autonomiestufen

    Klassisch Berechtigungsstufen / sudo

    Je Aufgabe festlegen: read_only, suggest, act_with_approval oder autonomous. Die Stufe nach dem Risiko der Aktion wählen, nicht nach dem Vertrauen ins Modell.

  • Vertrauensprüfung für Tools & MCP-Server

    Klassisch Dependency-Scanning, signierte Pakete

    Tool-Server von Dritten können manipulierte Tool-Beschreibungen oder Ergebnisse liefern. Geprüfte Quellen nutzen, Versionen festschreiben und Tool-Beschreibungen auf Änderungen überwachen.

  • Datenschutz & Aufbewahrung

    Klassisch Löschkonzept, Aufbewahrungsfristen (DSGVO)

    Festlegen, welche Daten in Logs, Traces, Checkpoints und Vektorindizes landen, wie lange sie bleiben und wie sie auf Anfrage vollständig gelöscht werden.

  • Regulatorische Einstufung

    Klassisch Compliance-Kontrollen / Risikobewertung

    Je nach Anwendungsfall bringen Regelwerke wie der EU AI Act Pflichten mit sich (Transparenz, Dokumentation, menschliche Aufsicht). Die Risikoklasse früh klären.

  • Red Teaming

    Klassisch Penetrationstest

    Gezielt versuchen, den Agenten zu Fehlverhalten zu bringen (Injection, Rechteausweitung, Datenabfluss), bevor es Angreifer tun. Befunde in dauerhafte Eval-Fälle überführen.

Zuverlässigkeit, Betrieb & Lebenszyklus

  • Prompt-Versionierung

    Klassisch Versionskontrolle (git), Configuration as Code

    Prompts wie Code versionieren, damit sich Evals, Kennzahlen und Rollbacks einer genauen Revision zuordnen lassen.

  • Festschreiben der Modellversion

    Klassisch Dependency Pinning

    Datierte Modell-Snapshots festschreiben, damit Updates des Anbieters das Verhalten nicht unbemerkt ändern.

  • Sampling-Parameter

    Klassisch Laufzeitkonfiguration

    temperature und top_p steuern die Streuung (Hinweis: Selbst temperature=0 ist nicht garantiert deterministisch).

  • Modell-Kaskade / Tiering

    Klassisch Speicherstufen / Eskalationsstufen (Support L1 → L2)

    Zuerst ein kleines, schnelles Modell versuchen; nur bei Bedarf an ein größeres eskalieren.

  • Timeouts

    Klassisch Timeout

    Hängende Modell- oder Tool-Aufrufe sauber abbrechen.

  • Circuit Breaker & Backoff

    Klassisch Circuit Breaker, exponentielles Backoff

    Bei API-Ausfällen oder Rate Limits mit Backoff warten oder auf einen zweiten Anbieter umschalten.

  • Idempotente Tools

    Klassisch Idempotente API-Endpunkte

    Sicherstellen, dass ein wiederholter Tool-Aufruf keine doppelten Nebenwirkungen hat.

  • Kompensationslogik (Rollback)

    Klassisch Saga-Muster / Transaktions-Rollback

    Bricht Schritt 4 ab, die Nebenwirkungen der Schritte 1–3 rückgängig machen.

  • Checkpointing

    Klassisch Persistenz / Snapshots

    Lang laufende Workflows nach einem Absturz ab dem letzten abgeschlossenen Schritt fortsetzen.

  • Antwort-Cache

    Klassisch Memoization / Key-Value-Cache

    Für identische Anfragen nicht zweimal bezahlen.

  • Semantisches Caching

    Klassisch Nearest-Neighbor-Cache

    Ähnlich formulierte Fragen über Vektorähnlichkeit cachen. Vorsicht: braucht sehr hohe Schwellen und eine Faktenprüfung, sonst verwechselt der Cache „bis 30. Juni“ und „bis 30. September“.

  • Logging & Tracing

    Klassisch Logs, verteiltes Tracing

    Nachvollziehen, was der Agent wann getan hat, wie lange es dauerte und warum.

  • Kostenverfolgung

    Klassisch Metriken / Monitoring

    Token-Verbrauch (Eingabe, Ausgabe, Cache, Reasoning) und Kosten je Lauf erfassen.

  • Evals

    Klassisch Unit- und Regressionstests

    Über realistische Testfälle statistisch messen, ob eine Änderung die Qualität verschlechtert.

  • Shadow Mode / Canary

    Klassisch Dark Launch / Blue-Green-Deployment

    Neue Prompts oder Modelle im Hintergrund mit echtem Verkehr testen.

  • Feedback-Daten fürs Training

    Klassisch Telemetrie → Datenpipeline (Data Flywheel)

    Erfolgreiche und korrigierte Läufe sammeln. Der Harness selbst verändert nie Modellgewichte – eine eigene Trainingspipeline (z. B. Fine-Tuning) nutzt diese Daten für künftige Modelle.

  • Durable Execution

    Klassisch Workflow-Engine / Durable Functions

    Garantieren, dass ein Lauf über Abstürze, Deployments oder tagelanges Warten hinweg weiterläuft. Baut auf Checkpoints auf.

  • Reasoning-Budget

    Klassisch Optimierungsstufe des Compilers / Rechenbudget

    Bei Reasoning-Modellen festlegen, wie viel Denkbudget ein Schritt bekommt: viel für schwierige Planung, wenig für Routineschritte. Kostet Tokens und Latenz.

  • Batch-Verarbeitung

    Klassisch Batch-Jobs / Läufe über Nacht

    Nicht dringende Aufgaben günstiger über die Batch-APIs der Anbieter verarbeiten.

  • Qualitätsüberwachung im Betrieb & Drift

    Klassisch SLO-Monitoring / Anomalieerkennung

    Evals prüfen vor dem Release; im Betrieb echte Läufe stichprobenartig bewerten, um Qualitätsdrift oder neue Anfragemuster früh zu erkennen.

  • Globaler Not-Aus (Kill Switch)

    Klassisch Feature-Flag zum Notabschalten

    Einen Agenten oder einzelne Mandanten und Tools zentral sofort abschalten, ohne neu zu deployen.

Koordination mehrerer Agenten

  • Sub-Agent

    Klassisch Funktionsaufruf / Microservice

    Eine Teilaufgabe an einen Agenten mit eigenem, isoliertem Kontext abgeben.

  • Übergabe (Kontexttransfer)

    Klassisch goto / Übergabe der Thread-Zuständigkeit

    Gespräch und Verantwortung vollständig an einen spezialisierten Agenten übergeben.

  • Message Passing

    Klassisch Nachrichten zwischen Diensten / Event-Bus

    Agenten Ergebnisse asynchron über Nachrichten austauschen lassen.

  • Gemeinsamer Zustand

    Klassisch Gemeinsame Datenbank, Blackboard

    Mehrere Agenten in einen gemeinsamen Speicher lesen und schreiben lassen.

  • Sperren auf gemeinsamem Zustand

    Klassisch Mutex / Locks, Optimistic Concurrency

    Verhindern, dass zwei parallele Agenten oder Worker gleichzeitig denselben Lauf oder Datensatz überschreiben (Race Conditions).

  • Tool- / Agenten-Protokolle (MCP, A2A)

    Klassisch Gerätetreiber / USB-Standard / OpenAPI

    Vereinheitlichen, wie sich Tools und Agenten verbinden, ohne eigens geschriebenen Verbindungscode.

  • Schutz vor Ping-Pong / Deadlocks

    Klassisch Zykluserkennung / Time-to-Live (TTL)

    Verhindern, dass Agenten Aufgaben in einer Endlosschleife hin- und herschieben.

  • Delegation mit minimalen Rechten an Sub-Agenten

    Klassisch Eingeschränkte Tokens / Least-Privilege-Delegation

    Sub-Agenten nur die Rechte geben, die ihre Teilaufgabe braucht, nie mehr, als der Aufrufer selbst hat.

  • Typisierte Übergaben

    Klassisch API-Verträge / Schnittstellendefinitionen (Pydantic)

    Ergebnisse zwischen Agenten oder Phasen als validierte Schemas weitergeben statt als freien Text. Fehler zeigen sich an der Grenze, nicht drei Schritte später. Prüft die Struktur, nicht die inhaltliche Wahrheit.

Scoring als Zwischenschicht (Bewertung & Schwellen)

Scoring schließt die Lücke zwischen unscharfen Modellausgaben und deterministischem Code: Eine weiche Frage wie „Ist das gut genug?“ wird zu einer Zahl, und gewöhnlicher Code entscheidet über if score > threshold. Schon auf der Ebene einzelner Tokens arbeiten Sprachmodelle so: Das Netz vergibt jedem Token deterministisch einen Score (Logits), nur das Ziehen aus dieser Verteilung ist probabilistisch.

  • Token-Scoring (Logits → Softmax)

    Klassisch Score-Funktion + max() / gewichtetes Ziehen

    Das Netz bewertet jedes mögliche Token; temperature, top_k und top_p formen die Verteilung vor dem Ziehen. Constrained Decoding und Logprobs-Prüfungen setzen genau hier an.

  • Ähnlichkeits-Scoring (Embeddings)

    Klassisch Distanzmaß / Nearest-Neighbor-Suche

    Die Ähnlichkeit zwischen einer Anfrage und einem Dokument, einer Tool-Beschreibung oder einem Cache-Eintrag als Zahl ausdrücken. Grundlage für RAG, Tool-RAG und semantisches Caching.

  • Reranking

    Klassisch Ranking-Funktion einer Suchmaschine

    Ein zweites, genaueres Modell ordnet grobe RAG-Treffer neu, damit nur die besten k in den Kontext gelangen.

  • Klassifikator-Scores

    Klassisch Score eines Spamfilters

    Wahrscheinlichkeit je Kategorie (Injection, Toxizität, Themen-Routing); der Code blockiert oder leitet ab einer Schwelle um.

  • Judge-Scores nach Bewertungsraster

    Klassisch Bewertungsraster / Checkliste mit Punkten

    Ein LLM-as-Judge vergibt Punkte nach ausdrücklichen Kriterien statt nach vagen Eindrücken. Bleibt probabilistisch, daher eine Stichprobe gegen menschliche Bewertungen prüfen.

  • Best-of-N-Auswahl

    Klassisch max(candidates, key=score)

    N Antworten erzeugen, bewerten und die beste zurückgeben. Kostet N-mal so viele Tokens.

  • Eskalation nach Konfidenz

    Klassisch Schwellenwert-Alarm

    Bei niedrigem Score an ein stärkeres Modell (Kaskade) oder an einen Menschen (Human-in-the-Loop) eskalieren.

  • Kalibrierung von Schwellen

    Klassisch Abstimmung auf Testdaten (Precision/Recall, ROC-Kurve)

    Schwellen aus Evals an echten Beispielen ableiten statt zu raten. Jede Schwelle wägt falsch Positive gegen falsch Negative ab – wer rät, verschiebt die Unschärfe nur in eine willkürliche Zahl.

  • Reward-Modell (Training)

    Klassisch Fitnessfunktion

    KI-Labore bewerten Ausgaben mit Reward-Modellen und verschieben die Gewichte in Richtung höherer Scores (z. B. RLHF). Im eigenen Harness nur relevant, wenn man Modelle selbst feinabstimmt.

  • Schutz vor Reward Hacking

    Klassisch Trennung von Prüfer und Geprüftem (Vier-Augen-Prinzip), manipulationssichere Tests

    Modelle optimieren manchmal auf den Score statt auf die Aufgabe (Tests löschen oder abschwächen, Ausgaben fest einprogrammieren, Fehler mit type: ignore verstecken, einem Judge schmeicheln). Gegenmittel: schreibgeschützte Prüfer (ProtectedPaths), Diff-Prüfungen auf Test- und Konfigurationsdateien, zurückgehaltene Tests, mehrere unabhängige Signale (Tests, Typprüfer, Linter), ein isolierter Judge, konkretes Feedback statt einer bloßen Zahl, begrenzte Wiederholungen und ein menschliches Review vor dem Merge.

  • Paarvergleich

    Klassisch A/B-Vergleich, Turnier

    Einen Judge entscheiden lassen, ob A oder B besser ist, statt absolute Noten von 1 bis 10 zu vergeben. Meist stabiler.

  • Kontrolle von Judge-Bias

    Klassisch Blindes Review, Randomisierung

    Judges bevorzugen oft längere Antworten, die zuerst gezeigte Option oder Ausgaben der eigenen Modellfamilie. Reihenfolge zufällig wählen, Länge berücksichtigen und ein Modell einer anderen Familie als Judge einsetzen.

Wo Scoring in dieser Taxonomie sonst vorkommt: RAG und Tool-RAG (Ähnlichkeit), Routing und Eingabe-Guardrails (Klassifikatoren), LLM-as-Judge, Mehrfach-Sampling & Abstimmung, Logprobs-Prüfungen, Modell-Kaskade, semantisches Caching und Evals (Bestehensquote als Release-Schwelle).

Betrieb mit mehreren Modellen (modellunabhängige Architektur)

Modelle verschiedener Labore reagieren unterschiedlich auf denselben Prompt, bevorzugen andere Formate und haben andere Stärken – auch, weil jedes Labor seine Modelle in einer eigenen Harness-Umgebung trainiert. Grundsatz: gemeinsamer Sicherheitskern, modellspezifische Ränder, Evals als Schiedsrichter. Ein Harness auf dem kleinsten gemeinsamen Nenner verschenkt Fähigkeiten der Modelle; ein Harness, der an ein einziges Modell gebunden ist, erzeugt Lock-in.

  • Modellunabhängiger Sicherheitskern

    Klassisch Serverseitige Validierung (unabhängig vom Client)

    Tool-Berechtigungen, Sandboxes, Egress-Filter, Freigaben, Mandantentrennung und Budgets hängen nie vom Modell ab. Ein schwächeres Modell liefert vielleicht schlechtere Antworten, kann aber keinen Schaden anrichten.

  • Provider-Adapter

    Klassisch Adapter-Muster / Gerätetreiber

    Dünne Schicht, die das interne Standardformat in das API-Format jedes Anbieters übersetzt (Tool-Aufrufe, strukturierte Ausgaben, Caching, System Prompt). Der Rest des Codes kennt nur das Standardformat.

  • Prompt-Profile je Modell

    Klassisch Build-Profile / Konfigurationsvarianten

    System Prompts, Few-Shot-Beispiele und Tool-Beschreibungen bei Bedarf als versionierte Varianten je Modell pflegen. Was für Modell A am besten funktioniert, kann Modell B verwirren.

  • Native Funktionen statt Polyfills

    Klassisch Plattform-APIs statt Polyfills

    Natives Tool Calling, strukturierte Schemas und Prompt Caching nutzen, statt sie mit Prompt-Tricks nachzubauen. Spielt die Stärken aus, auf die das Modell trainiert wurde.

  • Fähigkeitenmatrix

    Klassisch Feature Detection / Feature Flags

    Im Code festhalten, was jedes Modell kann (Tools, Bildverarbeitung usw.). Der Router filtert die Kandidaten danach.

  • Graceful Degradation

    Klassisch Progressive Enhancement / Ausweichpfad

    Fehlt einem Modell eine Funktion, auf eine unterstützte Alternative ausweichen (z. B. Pydantic-Validierung + Retry), statt abzustürzen.

  • Modellübergreifende Evals

    Klassisch Cross-Browser-Tests / Benchmark-Suite

    Dieselbe Eval-Suite mit echten Projektaufgaben gegen jedes Kandidatenmodell laufen lassen. Zeigt, welches Modell mit diesem Harness am besten arbeitet und ob eine Prompt-Anpassung für A das Modell B verschlechtert.

  • Modell-Routing nach Aufgabe

    Klassisch Strategy-Muster / Routing nach Fähigkeit

    Je Aufgabe das beste Modell nach Evals wählen: ein schnelles für Routineschritte, ein Frontier-Modell für komplexes Schlussfolgern, ein spezialisiertes für Code oder Bilder.

Verwandte Bausteine in dieser Taxonomie: Festschreiben der Modellversion, Shadow Mode / Canary bei Modellwechseln, portable Tool-Protokolle (MCP), einheitliches Logging & Tracing für Modellvergleiche, Modell-Kaskade, Fallback sowie Circuit Breaker mit Umschalten des Anbieters.

Schnittstelle Mensch–Agent (UX & Transparenz)

Auch die Benutzeroberfläche ist deterministischer Code – und oft der Ort, an dem sich entscheidet, ob Freigaben, Korrekturen und Vertrauen in der Praxis funktionieren.

  • Transparenz über den Fortschritt

    Klassisch Fortschrittsbalken / Aktivitätsprotokoll

    Den aktuellen Schritt und die Tool-Aufrufe über Events zeigen, damit Menschen früh eingreifen können und nicht erst am Ende.

  • Vorschau vor der Ausführung

    Klassisch Dry-Run / Diff-Ansicht

    Geplante Änderungen (Code-Diff, E-Mail-Entwurf, Zahlungsdaten) vor der Ausführung zeigen. Erst das macht eine Freigabe sinnvoll statt zum bloßen Abnicken.

  • Unsicherheit kommunizieren

    Klassisch Warnhinweis / Statusanzeige

    Den Agenten Rückfragen stellen (ask_user) oder Annahmen kennzeichnen lassen, statt Vermutungen mit falscher Sicherheit zu präsentieren.

  • Rückgängig / Rollback

    Klassisch Undo-Stack

    Nutzern einen klaren Weg geben, Aktionen des Agenten zurückzunehmen (technisch über Kompensationslogik oder Versionskontrolle).

  • Feedback erfassen

    Klassisch Bewertung / Fehlermeldung

    Daumen hoch oder runter, Änderungen und Abbrüche erfassen, um Evals, Qualitätsüberwachung und das Data Flywheel zu speisen.

PROJEKTANFRAGE

Projekt starten oder weiter skalieren?

Sagen Sie uns, wo Sie stehen und wohin es gehen soll. Wir unterstützen Sie dabei und melden uns persönlich bei Ihnen.

Ihre Daten werden vertraulich gemäß unserer Datenschutzerklärung.