KI für EinsteigerAnleitung
Teste deinen Prompt an 20 Fällen: Bewertung per exaktem Abgleich in Python
Baue ein Testset mit 20 Fällen, bewerte einen Prompt per exaktem Abgleich mit einem kurzen Python-Skript und sieh, ob eine Prompt-Änderung tatsächlich geholfen hat.

Auf dieser Seite
Dein Prompt hat bei den zwei Nachrichten funktioniert, die du ausprobiert hast. Heißt das, dass er funktioniert? Noch nicht. Lass ihn auf 20 echten Nachrichten mit bekannten Antworten laufen, zähle, wie viele er richtig trifft, und lies die, die er verfehlt. Ein kurzes Python-Skript übernimmt das Zählen, und wenn du den Prompt änderst, sagt dir dasselbe Skript, ob die Änderung geholfen hat, statt es deinem Bauchgefühl zu überlassen.
Anthropics Dokumentation zum Definieren von Erfolgskriterien und Erstellen von Evaluierungen (geprüft am 7. November 2026) formuliert es mit eigenen Worten: Mach die Tests spezifisch für deine Aufgabe, nimm die unangenehmen Fälle mit auf und bevorzuge viele automatisch bewertete Fragen gegenüber wenigen von Hand bewerteten. Unten steht die kleinste Version davon, die du heute ausführen kannst.

Baue das Testset: 20 Nachrichten und die erwartete Antwort#
Angenommen, du sortierst Kundennachrichten in drei Kategorien: positiv, negativ oder gemischt. Öffne eine Datei namens cases.csv und schreibe 20 Nachrichten auf, die du wirklich erhalten könntest, jeweils mit dem Label, das du vergeben würdest. Schreibe die Labels, bevor du irgendetwas ausführst. Wenn du die Antworten des Modells als "richtig" übernimmst, kann der Test nur mit dem Modell übereinstimmen.
text,label
"Arrived a day early and works perfectly. Thank you!",positive
"The charger stopped working after two days.",negative
"Great screen, but the battery barely lasts until lunch.",mixed
"Support answered in five minutes and fixed it.",positive
"I waited three weeks and nobody replied.",negative
"Oh great, another update that deletes my settings.",negative
"Nice design. Pity about the price.",mixed
"Exactly what I ordered.",positive
"The box was crushed, but the headphones inside are fine and sound great.",mixed
"Refund took 10 days. Never again.",negative
"Love it!!",positive
"Cheaply made, but honestly it does the job for the price.",mixed
"Worst purchase of the year.",negative
"Five stars. Would buy again.",positive
"Fast delivery, wrong colour.",mixed
"It's fine. Not amazing, not terrible.",mixed
"Zero issues in six months of daily use.",positive
"The app crashes every time I open the camera.",negative
"Thanks for nothing.",negative
"Setup was a pain, but once it ran, it's been rock solid.",mixedSchau dir die Mischung an: 6 positiv, 7 negativ, 7 gemischt. Die sarkastischen Zeilen ("Oh toll, noch ein Update…", "Danke für nichts.") und die grenzwertige ("Es ist okay. Nicht großartig, nicht schrecklich.") sind absichtlich dabei. Ein Set, das nur aus offensichtlichen Nachrichten besteht, erreicht 100 % und lehrt dich nichts. Nimm die echten aus deinem eigenen Posteingang, deinen Tickets oder deinem Chat-Export; die Grenzfälle sind die, von denen du schon weißt, dass sie nerven.
Warum 20? Es ist eine Ausgangsgröße, keine Zahl aus der Doku (deren Beispiel verwendet 1.000 Tweets). Zwanzig sind klein genug, um sie in einer halben Stunde von Hand zu schreiben, und groß genug, dass eine Glücksantwort den Wert nicht entscheidet.
Das Skript: jeden Fall senden, vergleichen, die Fehlschläge ausgeben#
Der Plan hat vier Schritte, und der Code folgt ihm Zeile für Zeile.
In die richtige Reihenfolge bringen
Die Eval-Schleife in Reihenfolge bringen
Ziehe die Elemente oder benutze die Pfeile
- Die 20 Fälle aus der CSV laden
- Jede Nachricht mit deinem Prompt an das Modell senden
- Die Antwort mit deinem Label vergleichen
- Die Genauigkeit und die fehlgeschlagenen Fälle ausgeben
Die Schleife funktioniert nur, wenn die Labels vor dem ersten Modellaufruf existieren, und die Fehlschläge kommen zuletzt, weil du sie liest und darauf reagierst.
Installiere das SDK mit pip install openai und halte den Schlüssel in einer Umgebungsvariable namens CHEAPTOKENS_. Jede OpenAI-kompatible API funktioniert genauso; hier zeigt das Skript auf CheapTokens und GLM-5.3-Flash (Einrichtungsdetails stehen in der Doku).
import csv
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
MODEL = 'zai-org/GLM-5.3-Flash'
PROMPT = (
'Classify the customer message as positive, negative or mixed. '
'Answer with one word only.'
)
def ask(text):
r = client.chat.completions.create(
model=MODEL,
temperature=0,
max_tokens=100,
messages=[
{'role': 'system', 'content': PROMPT},
{'role': 'user', 'content': text},
],
)
return r.choices[0].message.content or ''
with open('cases.csv', newline='', encoding='utf-8') as f:
cases = list(csv.DictReader(f))
correct, failed = 0, []
for case in cases:
got = ask(case['text'])
ok = got.strip().strip('.').lower() == case['label']
correct += ok
if not ok:
failed.append((case['text'], case['label'], got.strip()))
print(f'Accuracy: {correct}/{len(cases)} = {correct / len(cases):.0%}')
for text, want, got in failed:
print(f'- {text!r}: expected {want}, got {got!r}')Drei Details lohnen einen zweiten Blick.
temperature=0hält die Antworten so stabil wie möglich, damit eine Änderung des Werts von deinem Prompt kommt und nicht vom Würfel.max_tokens=100ist weit mehr, als ein Ein-Wort-Label braucht. Falls eine Antwort jemals leer oder abgeschnitten zurückkommt, prüfefinish_reason; der Leitfaden zu finish_reason "length" zeigt, was du erhöhen musst.- Die Bewertungszeile ist das Rezept aus der Doku,
strip().lower()verglichen mit der richtigen Antwort, plus eine Ergänzung: Sie entfernt auch einen abschließenden Punkt, weil "Negativ." und "negativ" für dich dieselbe Antwort sind.
Was siehst du, wenn es läuft? Eine Genauigkeitszeile, dann eine Zeile pro Fehlschlag. Angenommen, der erste Lauf gibt das aus:
Accuracy: 14/20 = 70%
- 'Oh great, another update that deletes my settings.': expected negative, got 'positive'
- "It's fine. Not amazing, not terrible.": expected mixed, got 'positive'
…(Die Zahlen hier sind eine Annahme, um die Form der Ausgabe zu zeigen; deine werden abweichen.) Sarkasmus und grenzwertige Formulierungen sind die Art von Nachrichten, die ein kurzer Prompt tendenziell verfehlt. Der Punkt ist, dass du nicht mehr rätst: Du hast eine Liste.
Ändere eine Sache, führe erneut aus#
Jetzt der nützliche Teil. Lies die Fehlschläge, wähle eine Ursache, ändere den Prompt an einer Stelle und führe erneut aus. Eine Änderung nach der anderen, sonst weißt du nicht, welche Bearbeitung den Wert bewegt hat.
Vergleichen
Prompt v1 → v2: eine Regel und zwei Beispiele hinzufügen
v1
Classify the customer message as positive, negative or mixed.
Answer with one word only.v2
Classify the customer message as positive, negative or mixed.
Sarcasm counts as negative. Praise plus a complaint is mixed.
Answer with one word only.
Message: Lovely colour, but it arrived with a scratch.
Answer: mixed
Message: Sure, thanks a lot. Now my order is lost.
Answer: negativeDie beiden Beispiele sind erfunden, und das ist Absicht. Setze niemals eine Nachricht aus cases.csv als Beispiel in den Prompt: Das Modell würde dann auf eine Antwort bewertet, die du ihm vorgelegt hast, und der Wert wäre aufgebläht. Das ist die Few-Shot-Technik; das Testset sagt dir, ob sie sich gelohnt hat. Wenn dein v1-Prompt noch vage ist, ist wie man einen guten Prompt schreibt der Ort, an dem du anfangen solltest, bevor du misst.
Füge v2 in PROMPT ein (dreifache Anführungszeichen funktionieren für mehrere Zeilen) und führe das Skript erneut aus. Angenommen, es gibt Accuracy: 17/ aus. Drei weitere Fälle sind richtig, also sieht v2 besser aus. Wie sehr kannst du dem trauen? Jeder Fall ist in einem Set von 20 Fällen 5 Punkte wert, also sind 70 % → 85 % drei Nachrichten. Das ist ein guter Hinweis, kein Beweis. Wenn der Wert sinkt, hast du etwas ebenso Wertvolles gelernt und dich davor bewahrt, einen schlechteren Prompt auszuliefern.
Gleiches Set, anderes Modell: Hält es den Wert?#
Dieselbe Datei beantwortet eine zweite Frage: Zahlst du für mehr Modell, als diese Aufgabe braucht? Ändere eine Zeile und führe erneut aus:
MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'Wenn die Genauigkeit bei deinen 20 Fällen übereinstimmt, hast du deine Antwort für diese Aufgabe, aus deinen eigenen Daten statt aus einem Leaderboard. Wenn sie sinkt, schau dir an, welche Nachrichten kaputtgingen, bevor du etwas entscheidest.
Was kostet das alles? Nimm etwa 150 Eingabe-Tokens pro Fall an (die Anweisung plus die Nachricht) und etwa 5 Ausgabe-Tokens für ein Ein-Wort-Label. Das sind 3.000 Eingabe- und 100 Ausgabe-Tokens pro Lauf mit 20 Fällen, was auf GLM-5.3-Flash $0.000064 ergibt. Zehn erneute Läufe des Sets sind 200 Anfragen; die Tabelle unten zeigt diese Arbeitslast für jedes Modell, mit OpenRouter daneben. Bei dieser Arbeitslast, Eingabe und Ausgabe zusammengerechnet, kostet jedes Modell in der Tabelle weniger als OpenRouters Referenzpreis.
| Modell | Input $/1M | Output $/1M | Pro Anfrage | 200 Anfragen | OpenRouter, 200 Anfragen |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000032 | $0.00064 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000028 | $0.00055 | $0.0022 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0000083 | $0.0017 | $0.0198 |
150 Input- und 5 Output-Tokens pro Anfrage. Die Preise pro 1 Mio. Tokens sind aktuell und ändern sich zusammen mit unseren Tarifen; die OpenRouter-Spalte zeigt Referenzpreise für dieselbe Arbeitslast.
Zwei davon werden in diesem Artikel verwendet: GLM-5.3-Flash hat einen Kontext von 390K und bis zu 8.192 Ausgabe-Tokens pro Antwort; DeepSeek-V4-Flash hat einen Kontext von 380K und bis zu 32.768 Ausgabe-Tokens, einen Preis zu jeder Tageszeit und dasselbe Guthaben wie jedes andere Modell. Aktuelle Preise stehen auf der Preisseite, die vollständige Liste in models.
Wo exakter Abgleich nicht mehr funktioniert#
Exakter Abgleich funktioniert, weil die richtige Antwort ein Wort aus einer festen Liste ist. Bei offener Ausgabe wie Zusammenfassungen, Umschreibungen oder Erklärungen gibt es keinen einzelnen String zum Vergleichen. Die Doku beschreibt einen anderen Weg, die Bewertung durch ein Modell, und empfiehlt, als Bewerter ein anderes Modell zu verwenden als das, das die Antwort geschrieben hat. Fang trotzdem mit exaktem Abgleich an: Wo immer du eine kurze, feste Antwort erzwingen kannst, ist er der günstigste und klarste Test, den du ausführen kannst. Die Faustregel der Doku lautet, dass mehr automatisch bewertete Fragen weniger von Hand bewertete schlagen.
Noch eine Gewohnheit: Wenn v2 sich nicht mehr verbessert, höre auf, gegen dieselben 20 Nachrichten zu polieren. Füge 5–10 neue hinzu, idealerweise echte Fehlschläge aus der Produktion, und führe erneut aus.
Kurzer Check
v2 erreicht 17/20 und v1 erreichte 15/20 bei denselben Fällen. Was ist die sicherste Schlussfolgerung?
Antwort anzeigen
Antwort: v2 sieht besser aus, aber zwei Fälle von 20 sind eine kleine Lücke: Füge neue Fälle hinzu und führe erneut aus
Jeder Fall zählt 5 Punkte, also ist eine Lücke von zwei Fällen ein Signal, genauer hinzuschauen, kein Urteil. Neue Fälle, die v2 noch nie gesehen hat, sind die nächste Prüfung.



