Handbuch
Was llmeval kann, wie du es einsetzt, und was der Unterschied zwischen Testen und Optimieren ist.
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?
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.
Stellt sicher, dass dein LLM-System überhaupt funktioniert – heute, morgen, nach jedem Provider-Update.
- ·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).
Findet das günstigste oder souveränste Modell, das deine Qualitäts-Anforderungen erfüllt.
- ·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.
| Mein Problem | Säule | Geh zu |
|---|---|---|
| Halluziniert mein Modell Produkte oder Preise? | 🧪 Qualität | Test-Suite Faktentreue |
| Bleibt mein Bot bei der Marken-Tonalität? | 🧪 Qualität | Test-Suite Persona |
| Reagiert mein Agent richtig auf Jailbreak-Versuche? | 🧪 Qualität | Test-Suite Sicherheit |
| Verhält sich das Modell heute anders als letzte Woche? | 🧪 Qualität | Drift erkennen |
| Welche meiner Production-Cases sollen täglich getestet werden? | 🧪 Qualität | Golden Examples |
| Zahle ich zu viel für triviale Anfragen? | 💰 Routing | Overkill-Analyse |
| Welches Modell ist Pareto-optimal für meinen Use-Case? | 💰 Routing | Kosten-Qualität-Pareto |
| Wie reduziere ich US-Cloud-Abhängigkeit? | 💰 Routing | Overkill (Sovereignty-First) |
| Wählt mein Agent das richtige Tool? | 💰 Routing | Agent-Trajektorien |
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.
Dein Code ──► Primary LLM
◄── Antwort (geht an deinen User)Dein Code ──► llmeval Proxy ──► Primary LLM ──┐
▼
Antwort (geht an deinen User – unverändert)
└────► Shadow A (async, geloggt) ─┐
└────► Shadow B (async, geloggt) ─┴► Judge + Eval-PipelineSetup-Anleitung
- 1API-Key holenIm Dashboard unter Verbinden erstellst du einen Projekt-API-Key. Der Schlüssel hat das Format
llme_sk_…. - 2base_url anpassenEine 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_…", )
- 3Erste Regel anlegen (optional)Standardmäßig spiegeln wir 25 % deines Traffics auf 4 Modelle. In Regeln kannst du das verändern.
- 4Erste Test-Suite ausführenGeh 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.
- 5CI/CD-Pipeline anbindenIm Test-Suiten-Bereich findest du ein GitHub-Actions-Snippet, das vor jedem Deploy das Pre-Release-Gate ausführt.
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.
Hat das Schatten-Modell exakt dasselbe Tool gewählt wie das Primary?
Sind die Tool-Argumente identisch oder zumindest semantisch äquivalent?
Ist der Output valides JSON / valide gegenüber dem geforderten Schema?
Hat ein Modell verweigert, wo ein anderes geantwortet hat?
Wieviele Tool-Calls braucht das Modell, bis das Ziel erreicht ist?
Wiederholt das Modell denselben Tool-Call ohne Fortschritt?
P50/P95/P99 – jeweils Time-to-First-Token und Gesamt-Latenz.
Embedding-basiert
Günstig, skaliert gut – messen semantische Ähnlichkeit.
Embedding-Ähnlichkeit zwischen Primary- und Shadow-Antwort.
Gruppiert alle Prompts in Themen-Cluster (k-Means auf Embeddings).
Embedding-Distanz zu einer kuratierten Referenz-Antwort.
Beobachtet Embedding-Ähnlichkeit zur Baseline über die Zeit – schlägt bei Provider-Updates Alarm.
LLM-als-Judge
Stärkstes Signal, am teuersten. Immer ein neutrales drittes Modell verwenden.
Judge sieht beide Antworten und entscheidet, welche besser ist (A / B / Unentschieden).
Judge bewertet jede Antwort 1–5 in jeder Rubrik-Dimension – mit Chain-of-Thought-Begründung.
Judge bewertet Qualität ohne Ground-Truth-Referenz.
Judge vergleicht Antwort mit einer kuratierten Golden-Antwort.
Blieb das Modell innerhalb des abgerufenen Kontexts oder hat es halluziniert?
Auch wenn anderes Tool gewählt – hat das Shadow-Modell den User-Intent trotzdem erfüllt?
Über mehrere Turns: Hat der Agent das User-Ziel erreicht?
Konsistenz & Statistik
Wie stabil ist das Modell-Verhalten über Wiederholungen und Zeit?
Gleicher Prompt N-mal mit T>0 – misst Varianz.
Korrelieren niedrige Logprobs mit späteren Disagreements?
Über viele Anfragen aggregiert: in wieviel % schlägt Shadow das Primary?
Use-Case-spezifisch
Gezielte Checks für Chatbots, RAG, Sicherheit, Persona.
Bleibt das Modell bei der vom System-Prompt definierten Persona?
Bezieht sich die Antwort sauber auf vorherige Turns?
Empathisch bei Beschwerden, neutral bei FAQs – stimmt der Ton zur Situation?
Ist die Antwort die richtige Länge für die Frage?
Scannt Outputs auf E-Mails, Telefonnummern, Kreditkarten, Adressen.
Jagt Outputs durch einen Content-Safety-Classifier (z.B. Llama Guard).
Operational
Geld, Latenz, Durchsatz – die Ops-Sicht.
Gesamt-Spend pro abgeschlossener User-Aufgabe, nicht pro Token.
Output-Tokens pro nützlicher Einheit (Tool-Call, Satz in der finalen Antwort).
Tokens pro Sekunde, anhaltend für deinen Traffic-Mix.
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.