Handbuch

Was llmeval kann, wie du es einsetzt, und was der Unterschied zwischen Testen und Optimieren ist.

1

Was ist llmeval?

llmeval ist ein LiteLLM-kompatibler Proxy + Eval-Plattform. Du änderst eine Zeile in deinem Code (die base_url), und ab da läuft dein gesamter LLM-Traffic durch unsere Infrastruktur.

Wir machen damit zwei Dinge, die unabhängig nutzbar sind: wir spiegeln einen Teil deines Traffics auf alternative Modelle (Shadow Models) und evaluieren die Antworten mit ~30 verschiedenen Methoden – embedding-basiert, strukturell, oder via LLM-as-Judge. Und wir lassen dich kuratierte Test-Suiten gegen alle Modelle laufen, bevor du in Produktion gehst.

Zielgruppe: Teams, die LLMs in Produktion einsetzen und drei Probleme haben: (a) zahlen wir zu viel?, (b) funktioniert das System überhaupt richtig?, und (c) wo werden meine Daten verarbeitet?

Demo-Hinweis: Diese Anwendung ist eine vollständig funktionsfähige UI mit gemockten, aber realistischen Daten (fiktives Szenario: Acme Support AI, 8.412 Anfragen über 14 Tage). Eine echte Proxy-Anbindung kommt in der nächsten Phase.
2

Die 2 Säulen — Testen vs. Optimieren

llmeval kann zwei unabhängige Dinge für dich tun. In der App sind sie räumlich klar getrennt (linke Sidebar) und auch farblich unterschieden – damit du immer weißt, in welchem Modus du gerade bist.

🧪
Säule 1
Qualität & Tests

Stellt sicher, dass dein LLM-System überhaupt funktioniert – heute, morgen, nach jedem Provider-Update.

Wann brauchst du das?
  • ·Bevor du in Produktion gehst oder ein neues Modell ausrollst.
  • ·Nach jeder Prompt-Änderung – um zu sehen, ob bestehende Cases noch laufen.
  • ·Bei stillen Provider-Updates (OpenAI patcht GPT-4o ohne Ankündigung).
  • ·Vor jeder Routing-Änderung im Optimieren-Bereich – als Sicherheits-Gate.
  • ·Für Audit- und Compliance-Nachweise (DSGVO, EU AI Act).
Beispiel: Du willst Cluster 'Order-Status' von GPT-4o auf Mistral Small 3 umstellen. Bevor du das machst, läuft das Pre-Release-Gate: 12 Tests aus Sicherheit, Persona, Tool-Calling. Erst wenn alle 12 grün sind, kann das Routing live gehen.
💰
Säule 2
Routing & Kosten

Findet das günstigste oder souveränste Modell, das deine Qualitäts-Anforderungen erfüllt.

Wann brauchst du das?
  • ·Wenn du Geld sparen willst, ohne Qualität zu verlieren.
  • ·Wenn dein CFO oder Procurement nach Kosten-Optimierung fragt.
  • ·Wenn du US-Cloud-Abhängigkeit reduzieren willst (Souveränität).
  • ·Wenn du verstehen willst, welche Cluster welches Modell brauchen.
  • ·Wenn du LiteLLM-Router-Konfigurationen exportieren willst.
Beispiel: Dein 'Order-Status'-Cluster läuft auf GPT-4o für 1.823 €/Monat. Wir spiegeln 10% des Traffics auf Mistral Small 3 und sehen: 96% Agreement. Empfehlung: umstellen → 198 €/Monat statt 1.823 €, EU-souverän (vorher 100% US-Cloud).
Schneller Lookup — wo gehe ich hin, wenn …?
Mein ProblemSäuleGeh zu
Halluziniert mein Modell Produkte oder Preise?🧪 QualitätTest-Suite Faktentreue
Bleibt mein Bot bei der Marken-Tonalität?🧪 QualitätTest-Suite Persona
Reagiert mein Agent richtig auf Jailbreak-Versuche?🧪 QualitätTest-Suite Sicherheit
Verhält sich das Modell heute anders als letzte Woche?🧪 QualitätDrift erkennen
Welche meiner Production-Cases sollen täglich getestet werden?🧪 QualitätGolden Examples
Zahle ich zu viel für triviale Anfragen?💰 RoutingOverkill-Analyse
Welches Modell ist Pareto-optimal für meinen Use-Case?💰 RoutingKosten-Qualität-Pareto
Wie reduziere ich US-Cloud-Abhängigkeit?💰 RoutingOverkill (Sovereignty-First)
Wählt mein Agent das richtige Tool?💰 RoutingAgent-Trajektorien
Wichtig: Die beiden Säulen arbeiten zusammen. Bevor du im Optimieren-Bereich ein Routing umstellst, läuft automatisch das Pre-Release-Gate aus Säule 1 – wenn Sicherheit oder Persona regrediert, wird der Switch blockiert.
3

Wie funktioniert Traffic-Mirroring?

Das ist der zentrale Mechanismus, mit dem wir Daten sammeln, ohne dein Produkt zu verändern. Dein Primary-Call (z.B. an GPT-4o) läuft wie immer und liefert die Antwort an deinen User. Parallel – komplett asynchron – feuern wir denselben Request gegen die von dir konfigurierten Shadow-Modelle und loggen die Antworten für die Eval-Pipeline.

Vorher
Dein Code  ──►  Primary LLM
           ◄──  Antwort  (geht an deinen User)
Mit llmeval (eine Zeile geändert)
Dein Code  ──►  llmeval Proxy  ──►  Primary LLM  ──┐
                                                  ▼
                                              Antwort  (geht an deinen User – unverändert)

                  └────►  Shadow A (async, geloggt)  ─┐
                  └────►  Shadow B (async, geloggt)  ─┴►  Judge + Eval-Pipeline
User-Latenz ändert sich nicht. Dein Primary-Call läuft direkt durch. Shadow-Calls sind reine Hintergrund-Arbeit. Typische zusätzliche Latenz durch den Proxy: 8–20ms (ein EU-Hop in deiner Region).
Datenschutz: Standardmäßig speichern wir nur Metadata (Token-Counts, Latenz, Modell-IDs, Eval-Ergebnisse). Volle Prompts/Antworten nur wenn du das explizit aktivierst – dann verschlüsselt in EU-Frankfurt mit konfigurierbarer Retention (7/30/90 Tage). EU-only-Mode verfügbar.
4

Setup-Anleitung

  1. 1
    API-Key holen
    Im Dashboard unter Verbinden erstellst du einen Projekt-API-Key. Der Schlüssel hat das Format llme_sk_….
  2. 2
    base_url anpassen
    Eine einzige Zeile in deinem OpenAI-/Anthropic-Client. Komplettes Snippet in derVerbinden-Sektion.
    client = OpenAI(
      base_url="https://api.llmeval.io/v1",  # ← einzige Änderung
      api_key="llme_sk_…",
    )
  3. 3
    Erste Regel anlegen (optional)
    Standardmäßig spiegeln wir 25 % deines Traffics auf 4 Modelle. In Regeln kannst du das verändern.
  4. 4
    Erste Test-Suite ausführen
    Geh zu Test-Suiten und klick auf "Suite jetzt ausführen" bei der Pre-Release-Gate. Das gibt dir eine Baseline für alle deine Modelle.
  5. 5
    CI/CD-Pipeline anbinden
    Im Test-Suiten-Bereich findest du ein GitHub-Actions-Snippet, das vor jedem Deploy das Pre-Release-Gate ausführt.
5

Eval-Methoden

Wir nutzen ~30 verschiedene Eval-Methoden, gruppiert in sechs Kategorien. Jede Methode hat einen definierten Einsatzzweck und Grenzen – wähle sie pro Regel oder Test-Suite gezielt aus.

Strukturelle Methoden

Deterministisch, kostenlos – prüfen Struktur, nicht Bedeutung.

Tool-Selection-Match

Hat das Schatten-Modell exakt dasselbe Tool gewählt wie das Primary?

Wann nutzen: Agentische Systeme, bei denen die Tool-Wahl die zentrale Entscheidung ist.
Grenzen: Bestraft valide Alternativ-Tools, die das gleiche Ziel erreichen – kombiniere mit Tool-Call-Equivalence-Judge.
Tool-Argument-Match (exact vs. semantisch)

Sind die Tool-Argumente identisch oder zumindest semantisch äquivalent?

Wann nutzen: Nachdem der Tool-Name matcht – prüft die Args.
Grenzen: Reine String-Gleichheit ist brüchig. Semantische Äquivalenz besser (normalisierte Felder, Embedding-Distanz auf Strings).
Format- & Schema-Compliance

Ist der Output valides JSON / valide gegenüber dem geforderten Schema?

Wann nutzen: Strukturierte Outputs, Function-Calling, RAG-Zitate.
Grenzen: Sagt nichts über inhaltliche Qualität aus.
Refusal-Detection

Hat ein Modell verweigert, wo ein anderes geantwortet hat?

Wann nutzen: Fängt stille Verhaltens-Änderungen – verschiedene Modelle haben verschiedene Safety-Schwellen.
Grenzen: Schwer, 'Refusal' von 'stellt Rückfrage' zu unterscheiden.
Trajectory-Länge

Wieviele Tool-Calls braucht das Modell, bis das Ziel erreicht ist?

Wann nutzen: Multi-Step-Agents. Kürzer ist meist besser (und günstiger).
Grenzen: Bei Single-Shot-Aufgaben kein Signal.
Loop- / Stuck-Erkennung

Wiederholt das Modell denselben Tool-Call ohne Fortschritt?

Wann nutzen: Symptom für zu kleines oder verwirrtes Modell.
Grenzen: Einige valide Retries (vorübergehende API-Fehler) sehen aus wie Loops.
Latenz-Percentile

P50/P95/P99 – jeweils Time-to-First-Token und Gesamt-Latenz.

Wann nutzen: User-facing Latenz-Budgets, Streaming-Chatbots.
Grenzen: Netzwerk-Bedingungen variieren – möglichst server-seitig messen.

Embedding-basiert

Günstig, skaliert gut – messen semantische Ähnlichkeit.

Cosine-Ähnlichkeit zum Primary

Embedding-Ähnlichkeit zwischen Primary- und Shadow-Antwort.

Wann nutzen: Freiform-Antworten – schneller Äquivalenz-Proxy.
Grenzen: Misst Ähnlichkeit, nicht Korrektheit – zwei falsch-aber-ähnliche Antworten scoren hoch.
Embedding-Clustering

Gruppiert alle Prompts in Themen-Cluster (k-Means auf Embeddings).

Wann nutzen: Verstehen, wie dein Traffic aussieht; Routing pro Cluster.
Grenzen: Cluster-Anzahl ist Hyperparameter – muss getunt werden.
Anchor- / Golden-Distanz

Embedding-Distanz zu einer kuratierten Referenz-Antwort.

Wann nutzen: Wenn du Ground-Truth-Beispiele hast (von Menschen oder Judges annotiert).
Grenzen: So gut wie dein Golden-Set – muss aktuell gehalten werden.
Drift-Detection

Beobachtet Embedding-Ähnlichkeit zur Baseline über die Zeit – schlägt bei Provider-Updates Alarm.

Wann nutzen: Produktiv-Systeme mit gehosteten Modellen. Provider aktualisieren Modelle leise.
Grenzen: Erkennt 'Verhaltensänderung', nicht 'besser/schlechter' – braucht Judge-Eval als Follow-up.

LLM-als-Judge

Stärkstes Signal, am teuersten. Immer ein neutrales drittes Modell verwenden.

Pairwise-Judge (Arena-Style)

Judge sieht beide Antworten und entscheidet, welche besser ist (A / B / Unentschieden).

Wann nutzen: Aggregiert zu Bradley-Terry-Rankings über viele Vergleiche.
Grenzen: Positions-Bias (Judges bevorzugen A) – durch zufällige Reihenfolge gegensteuern. Teuer.
Rubric-Scoring (G-Eval)

Judge bewertet jede Antwort 1–5 in jeder Rubrik-Dimension – mit Chain-of-Thought-Begründung.

Wann nutzen: Wenn du spezifische Dimensionen messen willst (Hilfsbereitschaft, Ton, Genauigkeit, Sicherheit).
Grenzen: Rubriken driften zwischen Judges – immer gleiche Rubrik und gleiches Judge-Modell verwenden.
Referenz-freier Quality-Judge

Judge bewertet Qualität ohne Ground-Truth-Referenz.

Wann nutzen: Produktions-Traffic, wo es keine Golden-Antwort gibt.
Grenzen: Überbewertet fließend klingende, aber falsche Antworten (Judges sind irreführbar).
Referenz-basierter Judge

Judge vergleicht Antwort mit einer kuratierten Golden-Antwort.

Wann nutzen: Regression-Suites, Eval-Sets mit bekannter Ground-Truth.
Grenzen: Erfordert Investition in kuratierte Goldens.
Faithfulness-Judge (RAG)

Blieb das Modell innerhalb des abgerufenen Kontexts oder hat es halluziniert?

Wann nutzen: RAG- und KB-Tool-Agents. Halluzinationen sind das #1-Produktions-Problem.
Grenzen: Judge braucht den abgerufenen Kontext – explizit mitgeben.
Tool-Call-Equivalence-Judge

Auch wenn anderes Tool gewählt – hat das Shadow-Modell den User-Intent trotzdem erfüllt?

Wann nutzen: Ergänzt strukturellen Tool-Selection-Match, um valide Alternativ-Tools zu verzeihen.
Grenzen: Judge muss deine Tool-Semantik verstehen.
Goal-Completion-Judge

Über mehrere Turns: Hat der Agent das User-Ziel erreicht?

Wann nutzen: Multi-Turn-Agentic-Flows, bei denen Erfolg nicht pro Turn beobachtbar ist.
Grenzen: Braucht Turn-Level-Kontext. Langsam.

Konsistenz & Statistik

Wie stabil ist das Modell-Verhalten über Wiederholungen und Zeit?

Self-Consistency (N-Best)

Gleicher Prompt N-mal mit T>0 – misst Varianz.

Wann nutzen: Fängt Modell-Unsicherheit, bevor sie in Produktion auffällt.
Grenzen: Teuer (N×-Kosten). Bei Temperatur 0 nutzlos.
Confidence-Kalibrierung

Korrelieren niedrige Logprobs mit späteren Disagreements?

Wann nutzen: Pro Request entscheiden, ob auf größeres Modell eskaliert werden soll.
Grenzen: Braucht Logprobs (nicht alle Provider exposen das).
Win-Rate vs. Champion

Über viele Anfragen aggregiert: in wieviel % schlägt Shadow das Primary?

Wann nutzen: Headline-Metrik für Modell-Wechsel-Entscheidungen.
Grenzen: Aggregiert pro-Cluster-Muster weg – immer per Cluster brechen.

Use-Case-spezifisch

Gezielte Checks für Chatbots, RAG, Sicherheit, Persona.

Persona-Treue

Bleibt das Modell bei der vom System-Prompt definierten Persona?

Wann nutzen: Marken-Chatbots, Character-Agents.
Grenzen: Subjektiv – mit Beispielen judgen.
Turn-Kohärenz

Bezieht sich die Antwort sauber auf vorherige Turns?

Wann nutzen: Lange Konversationen. Kleine Modelle 'vergessen' frühere Turns.
Grenzen: Braucht volle Konversation, nicht nur den aktuellen Turn.
Sentiment- & Ton-Match

Empathisch bei Beschwerden, neutral bei FAQs – stimmt der Ton zur Situation?

Wann nutzen: Customer-Support, Mental-Health-nahe Assistenten.
Grenzen: Kulturelle Variation – pro Locale kalibrieren.
Längen-Angemessenheit

Ist die Antwort die richtige Länge für die Frage?

Wann nutzen: Chatbots, die knapp statt geschwätzig sein sollen.
Grenzen: Triviales Signal – mit Rubrik kombinieren.
PII-Leak-Detection

Scannt Outputs auf E-Mails, Telefonnummern, Kreditkarten, Adressen.

Wann nutzen: Compliance-relevante Deployments (DSGVO, HIPAA).
Grenzen: Regex fängt offensichtliche Fälle – paraphrasierte PII rutscht durch.
Toxicity- & Safety-Classifier

Jagt Outputs durch einen Content-Safety-Classifier (z.B. Llama Guard).

Wann nutzen: Public-facing Produkte.
Grenzen: Classifier haben eigene False Positives.

Operational

Geld, Latenz, Durchsatz – die Ops-Sicht.

Kosten-pro-Task

Gesamt-Spend pro abgeschlossener User-Aufgabe, nicht pro Token.

Wann nutzen: Agents – kleine Modelle können pro Task teurer sein, weil sie mehr Schritte brauchen.
Grenzen: Braucht Task-Level-Gruppierung.
Token-Effizienz

Output-Tokens pro nützlicher Einheit (Tool-Call, Satz in der finalen Antwort).

Wann nutzen: Modelle, die schwafeln, kosten mehr für denselben Wert.
Grenzen: 'Nützliche Einheit' präzise zu definieren ist schwer.
Durchsatz / TPS

Tokens pro Sekunde, anhaltend für deinen Traffic-Mix.

Wann nutzen: Streaming-Chatbots, Voice-Assistants.
Grenzen: Hängt von Provider-Routing und Concurrency ab.
6

FAQ & Datenschutz

Was ändert sich in meinem Anwendungs-Code?

Eine Zeile: die `base_url` deines OpenAI-/Anthropic-/LiteLLM-Clients zeigt auf `https://api.llmeval.io/v1`. Alles andere – Prompts, Tools, Modell-IDs, SDKs – bleibt unverändert.

Wie hoch ist die Latenz-Penalty durch den Proxy?

Typisch 8–20ms zusätzliche Latenz (ein Hop in der EU-Region deiner Wahl). Shadow-Calls laufen asynchron und beeinflussen die Antwort an deinen User überhaupt nicht.

Wo werden meine Daten gespeichert?

Standardmäßig nur Metadata (Token-Counts, Latenz, Modell-IDs, Eval-Ergebnisse). Volle Prompts/Antworten werden nur gespeichert, wenn du das explizit aktivierst – dann verschlüsselt in EU-Frankfurt mit konfigurierbarer Retention (7/30/90 Tage).

Welche Modelle werden unterstützt?

Aktuell 12 Modelle: GPT-4o + Mini (OpenAI), Claude Sonnet 4.6 + Haiku 4.5 (Anthropic), Llama 3.3 70B + 3.2 3B + 1B (Meta), Mistral Mixtral 8x7B + Small 3 (Mistral AI), Qwen 2.5 32B + 7B (Alibaba), Phi-3.5 mini (Microsoft), Gemma 2 2B (Google). Eigene Modelle (Self-Hosted via vLLM/Ollama) auf Anfrage.

Funktioniert das mit Streaming-Responses?

Ja, Primary-Calls werden gestreamt wie gewohnt. Shadow-Calls sammeln wir non-streaming und vergleichen die finalen Responses – Token-für-Token-Diff macht selten Sinn.

Wie integriere ich Tests in meine CI/CD-Pipeline?

Wir bieten einen CLI-Befehl `llmeval test --suite <slug> --block-on-fail`, der in GitHub Actions oder GitLab CI läuft. Beispiel-Snippet findest du unter 'Test-Suiten → CI/CD anbinden'.

Wie steht es um DSGVO und EU AI Act?

EU-Hosting ist Standard (Frankfurt, AWS eu-central-1). Vollständige DSGVO-AVV verfügbar. Für EU-AI-Act-Compliance kannst du im Routing 'Sovereignty-First' aktivieren, was nur EU-souveräne Modelle (Mistral) oder selbst-hostbare Open-Source-Modelle verwendet.

Was kostet das?

Demo-Phase kostenlos. Beim Live-Start: Pay-per-mirrored-call (deine Token-Kosten + ~15% Plattform-Gebühr). Test-Suiten-Runs werden gegen einen monatlichen Test-Budget abgerechnet. Volumen-Rabatte ab 1M mirrored calls/mo.

Was ist der Unterschied zu Helicone, Braintrust, Portkey?

Helicone/Portkey sind Observability-Gateways – sie loggen, was passiert. Braintrust ist Eval-only ohne Proxy. llmeval kombiniert Gateway + Eval + Routing-Empfehlungen + Test-Suiten in einer Plattform, mit explizitem Fokus auf EU-Souveränität (Mistral, Self-Host).

Kann ich eigene Test-Cases hochladen?

Ja. Im Test-Suiten-Editor (Demo: 'Neue Suite anlegen') definierst du User-Message, Erwartung und Pass-Kriterien. Import aus JSON/CSV ebenfalls möglich.

Frage nicht beantwortet? Schreib uns an demo@llmeval.io – wir melden uns innerhalb von 24h.
Frage stellen