Evals: Unit Tests für KI-Anwendungen

Unit Tests sind ein wichtiges Konzept in der Softwareentwicklung: Sie geben Vertrauen in die Qualität der Software und machen Änderungen sicher. Doch Unit Tests gehen von deterministischen Ergebnissen aus, was bei KI-Anwendungen gerade nicht gegeben ist. Daher sind Unit Tests nicht ohne Weiteres auf KI-Anwendungen übertragbar.
Genau hier setzen Evals an. Sie füllen diese Lücke und schaffen Vertrauen in die Qualität des Systems. Aber was sind Evals und wie funktionieren sie?
Warum Unit Tests wichtig sind
Unit Tests verbinden Anforderungen und Implementierung. Richtig angewendet, schaffen sie eine stabile Dreiecksbeziehung. Wenn ein Unit Test versagt, ist entweder die Implementierung fehlerhaft, der Testcode oder die Anforderung (auf der der Test basieren sollte). Dies machen wir uns insbesondere im Behavior Driven Development (BDD) zunutze.
Diese Tests laufen häufig, am Besten schon während der Entwicklung. Aber auch später werden die Tests im Rahmen von Continuous Integration Pipelines ausgeführt (neben weiteren Integrationstests). Unit Tests geben Sicherheit, wenn Änderungen am Code durchgeführt oder Bibliotheken ausgetauscht werden. Wenn ein automatischer Unit Test fehlschlägt, werden wir frühzeitig gewarnt und können das Problem schnell lokalisieren und beheben. Erst, wenn alle Tests wieder grün sind, geht es weiter.
Unit Tests sind zwar nicht das einzige Fundament für funktionierendes CI, aber ein enorm wichtiges. Sie helfen Unternehmen wie Shopify, Netflix und Amazon, Täglich dutzende von Deploys durchzuführen, ohne das Kunden etwas davon merken.
Warum Unit Tests bei KI nicht funktionieren
Vorweg: Natürlich funktionieren Unit Tests auch für KI-Anwendungen. Nur nicht für die Teile der Anwendung, welche die KI-Ergebnisse erzeugen bzw. verarbeiten. Insofern ersetzen Evals nicht die Unit Tests, sondern ergänzen sie.
Evals sind eine Ergänzung zu Unit Tests, kein Ersatz.
Die meisten KI-Anwendungen arbeiten nicht deterministisch (nicht vergessen, LLMs sind nur eine Klasse von KI). Wir alle haben schon erlebt, dass dieselbe Eingabe nicht nur unterschiedliche Ausgaben erzeugen kann, sondern dies auch tut. Noch schlimmer: Es gibt keine binäre Richtig/Falsch-Antworten, welche ja das Fundament von Unit Tests darstellen.
Evals lösen dieses Problem
Beginnen wir mit der Definition von Evals, hier die von OpenAI:
Definition Eval
Evals sind strukturierte Tests zur Messung der Leistung eines Modells. Sie tragen dazu bei, Genauigkeit, Leistung und Zuverlässigkeit trotz der nicht deterministischen Natur von KI-Systemen sicherzustellen. Sie sind auch eine der wenigen Möglichkeiten, die Leistung einer LLM-basierten Anwendung zu verbessern. (Quelle: OpenAI)
Evals definieren also, was als „gut“ gilt, und messen dies reproduzierbar, auch wenn das System nicht deterministisch ist. Sie können auf drei verschiedene Weisen ausgeführt werden:
- Menschliche Evals: Experten oder Nutzer (bspw. über Thumbs-up/down) bewerten Ergebnisse nach vordefinierten Kriterien. Dieser Ansatz ist für komplexe, subjektive Bewertungen geeignet, ist aber aufwendig und teuer, bzw. bei Nutzern oft nicht sonderlich aussagekräftig.
- Codebasierte Evals: Wir schreiben automatisierte Prüfungen auf formale Eigenschaften. Zum Beispiel können wir programmatisch feststellen, ob sich generierter Code kompilieren und ausführen lässt. Diese Methode ist günstig und schnell, eignet sich aber nicht für weiche Kriterien.
- LLM-basierte Evals: Wir nutzen ein separates Modell, um die Ausgaben des zu prüfenden Systems anhand klar formulierten Kriterien zu bewerten. Dieser Ansatz funktioniert gut, wenn das Bewertungsmodell ordentlich validiert wurde.
Hier sind ein paar Beispiele für Bewertungskriterien:
- Vollständigkeit: Werden alle geforderten Aspekte abgedeckt?
- Korrektheit: Stimmt die Antwort mit den vorliegenden Fakten überein?
- Relevanz: Passt die Antwort zur Anfrage und enthält sie die wesentlichen Punkte?
- Tonalität: Entspricht der sprachliche Stil den Anforderungen (z. B. höflich, sachlich)?
- Sicherheit: Keine schädlichen oder unzulässigen Inhalte?
Einen guten Artikel zu Evals gibt es bei Lenny’s Newslettter. Wer etwas Zeit hat, empfehle ich das Interview mit Nick Turley, verantwortlich für ChatGPT bei Open AI.
Wer schreibt Evals und wann laufen sie?
Verantwortlich für das Erstellen der Evals sind in der Regel die Teams, die auch die Anwendung entwickeln, also Produktmanager, KI-Entwickler und Data Scientists. Die QA- und DevOps-Teams müssen natürlich auch eingebunden werden.
Genauso wie Unit Tests, sollten Evals in mehreren Phasen laufen:
- Während der Entwicklung für schnelles Feedback bei Änderungen
- Vor dem Release als Teil des Freigabeprozesses
- Kontinuierlich in Betrieb um Qualitätsdrift zu erkennen, wenn sich Eingabedaten oder Modellversionen ändern
Insbesondere die Nutzung von Evals im Betrieb ist aus mehreren Gründen wichtig: Zum einen können wir dadurch auch unerwartete Fälle abdecken, die wir vorher nicht eingeplant haben. Weiterhin können wir Nutzterfeedback einfordern. Und ganz wichtig: Gerade bei Cloud-basierten Modellen, die wir über eine API nutzen, kann sich deren Verhalten sich ohne Ankündigung ändern!
Da sich über API eingebundene KIs ohne Ankündigung ändern können, ist ein Monitoring im Betrieb mit Evals wichtig.
Evals einführen
Wie bei vielen Praktiken in der Entwicklung, sollten wir mit Evals klein anzufangen und immer sicherstellen, dass sich ein klarer Nutzen für die Entwicklung ergibt. Das bedeutet, zunächst da anzufangen, wo Fehlverhalten hohe Kosten oder Risiken verursacht. Zum Beispiel, wenn die KI die Kompetenz hat, Preise zu nennen oder Discounts auszugeben.
Um Evals sinnvoll einzusetzen, müssen wir Klare, messbare Eval-Kriterien für die relevanten Fälle definieren. Zu Anfang sind Code- oder LLM-basierte Evals eine sinnvolle Wahl. Wenn dieser Ansatz nachweislich funktioniert, können wir den Einsatz von Evals weiter ausbauen.
Langfristig sollten Evals integraler Bestandteil der Entwicklungsprozesse und DevOps werden, ähnlich wie Unit Tests heute standardmäßig Teil von CI/CD-Pipelines sind.
Fazit
Evals schließen eine wichtige Lücke in der Qualitätssicherung von KI-Systemen. Sie übertragen den Grundgedanken der Unit Tests auf einen Kontext, in dem deterministische Erwartungen nicht wirklich funktionieren. Richtig umgesetzt, ermöglichen sie eine objektivere Bewertung, reduzieren Risiken und schaffen Vertrauen in die Zuverlässigkeit komplexer KI-Anwendungen.
So wie Unit Tests ein wichtiger Teil der moderne Softwareentwicklung sind, so werden Evals zu einem essentiellen Konzept für die Entwicklung robuster KI-Produkte.






