Warum die klassische Abnahme an KI zerbricht
Der Werkvertrag schuldet einen Erfolg. § 631 BGB verpflichtet den Unternehmer zur Herstellung des versprochenen Werkes, § 640 BGB den Besteller zur Abnahme, sobald das Werk vertragsgemäß hergestellt ist. Beide Sätze setzen stillschweigend voraus, dass es einen Zustand gibt, auf den man zeigen und „fertig“ sagen kann. Genau da liegt auch die Grenze zum Dienstvertrag, bei dem nur die Tätigkeit geschuldet ist — der übliche Fluchtweg, wenn niemand „fertig“ definieren kann. Klassische Software fühlt sich im Werkvertrag wohl: Der Rechnungsimport liest die Datei ein oder eben nicht, und das lässt sich in einem Raum zweimal hintereinander mit demselben Ergebnis vorführen.
Eine Extraktionsstrecke auf Basis eines Sprachmodells hat diese Eigenschaft nicht. Schicken Sie dieselben 300 Rechnungen zweimal hindurch, bekommen Sie zwei Zahlen. Keine davon ist die Wahrheit, beide sind Stichproben aus demselben System. Es ist nichts kaputt — so ist das System. Damit verliert der Satz „das Werk ist vertragsgemäß hergestellt“ seinen Bezugspunkt, und in die Lücke rückt ein Streit. Der Besteller zeigt auf drei falsche Ausgaben und sagt: Es funktioniert nicht. Der Auftragnehmer sagt, es funktioniert, drei von 300 lägen im normalen Schwankungsbereich. Beide Aussagen sind vertretbar, keine ist beweisbar, und der nächste Schritt heißt Gutachter, Verzug und eine Rechnung, die niemand eingeplant hat.
Das klingt beim ersten Lesen nach einem Anbieter, der sich aus seiner Zusage windet. Es ist eher das Gegenteil, und der Grund steht in § 640 Abs. 1 S. 2 BGB — dazu am Ende. Die Kurzfassung: Wenn Sie keine Zahl in den Vertrag schreiben, haben Sie keinen Schwellwert vermieden. Sie haben die Wahl des Schwellwerts an ein Gericht delegiert.
Der Abnahmedatensatz gehört in den Vertrag
Wenn die Messung das ist, was geschuldet wird, dann ist das Gemessene Teil der Leistungsbeschreibung. Es gehört als unterschriebene Anlage in den Vertrag — nicht in ein Jira-Ticket, nicht in einen Mailverlauf und schon gar nicht ausschließlich in das Repository des Auftragnehmers. Das wirkt bürokratisch, bis Sie einmal einen Streit erlebt haben, in dem beide Seiten auf unterschiedlichen Dateien gemessen haben und dabei durchgehend ehrlich waren.
Einfrieren vor der Umsetzung, nicht danach
Ein Testdatensatz, der zusammengestellt wird, nachdem das System existiert, ist kein Test. Er ist ein Spiegel: Er enthält die Fälle, an die während der Entwicklung jemand gedacht hat — also genau die Fälle, die durchlaufen. Alle Beteiligten wissen das, und niemand sagt es, weil das Zusammenstellen echte Arbeit ist und Verschieben sich gratis anfühlt. Deshalb sollte das Datum auf der Anlage vor der ersten Zeile Produktivcode liegen. Das ist die wirksamste einzelne Änderung in dieser ganzen Konstruktion — und die, gegen die sich Auftraggeber am stärksten sträuben.
Danach: Datei hashen. Ein SHA-256 der .jsonl, in die Anlage geschrieben, beide Seiten halten eine identische Kopie. Das kostet einen Befehl und sorgt dafür, dass ein halbes Jahr später, im Raum mit dem Anwalt, die Frage „welche 300 eigentlich?“ eine Antwort hat statt einer Diskussion. Versionieren Sie ihn ebenfalls — abnahme_set_v1. Wird jemals ein v2 vereinbart, ist das ein Change Request mit Preis und kein stiller Austausch.
Zur Größe gebe ich Ihnen keine Zauberzahl, weil es keine gibt. Maßgeblich ist, ob der Satz den Schwellwert von der Zahl knapp darunter unterscheiden kann: Mit 30 Fällen lassen sich 0,85 und 0,80 nicht sinnvoll trennen, ein auf 30 Fällen gemessener Schwellwert ist also Dekoration. Bei Dokumentenextraktion lande ich meist zwischen 200 und 400 Fällen, geschichtet — die alltägliche Mehrheit, ein bewusster Block unbequemer Fälle und ein kleiner Block wirklich schlechter Eingaben, bei denen die korrekte Reaktion die Verweigerung ist. Die begrenzende Größe ist nie die Statistik. Es ist, dass ein Mensch zu jedem Fall die richtige Antwort aufschreiben muss.
Labeln ist Mitwirkungspflicht — schreiben Sie es hin
Nur der Besteller weiß, was „richtig“ für seine Rechnungen, seine Verträge, seine Tickets bedeutet. Ein Auftragnehmer kann die Referenzantworten für Ihr Geschäft nicht erfinden, und wenn er es anbietet, wäre ich vorsichtig. Damit sind die Labels eine Mitwirkungspflicht des Auftraggebers, und das gehört mit Termin in den Vertrag — denn wenn die Anlage zu spät kommt, ist die Abnahme blockiert, und beide Seiten sollten sehen können, wessen Uhr gerade läuft.
Seien Sie ehrlich, was Sie da verlangen: 300 Dokumente zu labeln sind einige Tage einer Fachkraft, die anderes zu tun hat, und es ist der Posten, der am zuverlässigsten aus der Planung fällt. Overhead ist es trotzdem nicht. Es ist dieselbe Arbeit wie das Definieren des Abnahmekriteriums, und bezahlt hätten Sie sie ohnehin — jetzt im Budget oder später im Streit. Wie man einen solchen Satz baut und labelt, habe ich getrennt aufgeschrieben: LLM-Systeme evaluieren. Dieser Artikel setzt voraus, dass Sie einen haben, und fragt, was Sie damit vertraglich anfangen.
{
"anlage": "3 — Abnahmedatensatz und Messprotokoll",
"datensatz": {
"datei": "abnahme_set_v1.jsonl",
"sha256": "<vollstaendiger Hash — Anlage 3a>",
"faelle": 300,
"eingefroren": "2026-03-02",
"gelabelt_von": "auftraggeber",
"schichten": { "regelfall": 210, "grenzfaelle": 60, "muss_ablehnen": 30 }
},
"metrik": { "name": "macro_f1", "schwellwert": 0.85 },
"protokoll": {
"laeufe": 5,
"temperature": 0.0,
"seed": 42,
"aggregat": "mittelwert_ueber_laeufe",
"streuband": { "max_stdabw": 0.02 },
"modell": "<anbieter>/<modell>@<fixierte Version>",
"harness": "eval-harness @ git 1a2b3c4",
"durchgefuehrt_von": "auftragnehmer",
"im_beisein_von": "auftraggeber"
},
"entscheidungsregel": {
"stdabw > 0.02": "keine gueltige Messung — einmal wiederholen",
"mittelwert >= 0.85": "abnahmereif",
"mittelwert < 0.85": "Mangel — Nacherfuellung"
}
}
Das Messprotokoll: Wann eine Zahl verbindlich ist
„0,85 Macro-F1“ allein ist noch nicht prüfbar. Gemessen wie? Wie oft? Auf welcher Modellversion, auf wessen Maschine, gerechnet von wessen Code, mit wem im Raum? Jede dieser Fragen ist ein Ort, an dem ein Streit wohnen kann, und jede lässt sich vorher billig und nachher teuer schließen. Das Protokoll muss mindestens festlegen:
- Metrik und Schwellwert — eine Zahl, die entscheidet, gerechnet von einer Harness, von der beide Seiten eine Kopie haben. Nicht drei Metriken und ein Gespräch.
- Temperature und Seed — ausdrücklich benannt, denn „wir haben es laufen lassen“ ist keine Einstellung.
- Anzahl der Läufe —
n = 5, weil ein einzelner Lauf eine Stichprobe ist und Sie eine Verteilung beschreiben wollen. - Aggregation — Mittelwert über die Läufe. Sagen Sie welche. „Hat einmal bestanden“ und „besteht im Mittel“ sind verschiedene Zusagen.
- Streuband — eine maximale Standardabweichung über die Läufe, oberhalb derer keine gültige Messung vorliegt.
- Umgebung — Modellversion, Harness-Commit, Hardwareklasse. Fixiert, in der Anlage.
- Wer misst, wer ist dabei — üblicherweise führt der Auftragnehmer aus, der Auftraggeber ist zugegen. Per Bildschirmfreigabe reicht. Unbeobachtet reicht nicht.
Jetzt der unbequeme Teil, denn Sie werden selbstbewusstere Behauptungen lesen: Temperature 0 und ein fester Seed reduzieren die Streuung, sie kaufen keine Determiniertheit. Batching, nicht-deterministische GPU-Kernel und anbieterseitiges Routing führen dazu, dass identische Eingaben trotzdem andere Tokens erzeugen können, und ein gehostetes Modell kann sich unter stabil aussehendem Namen ändern. On-Premise kommen Sie näher heran, nie ganz hin. Genau dafür gibt es das Streuband statt eines Reproduzierbarkeitsversprechens. Was ich unter keinem Druck vereinbaren würde, ist „gleiche Eingabe, gleiche Ausgabe“. Das ist nicht lieferbar, und eine Zusage, die Sie nicht halten können, ist schlechter als keine Zusage — sie reicht der Gegenseite den Mangel auf dem Tablett.
Ein Wiederholungslauf mit 0,79: Mangel oder Messrauschen?
Das ist die Frage, die real auftaucht, und die Antwort ist ehrlich unangenehm: Sie hängt ausschließlich davon ab, ob ein Protokoll vereinbart wurde — und an nichts sonst am System. Mit der Anlage von oben ist ein Mittelwert von 0,79 bei einer Standardabweichung von 0,01 ein Mangel. Kein Streit, keine Erheblichkeitsdebatte, der Auftragnehmer schuldet Nacherfüllung. Ein Mittelwert von 0,79 bei einer Standardabweichung von 0,06 ist dagegen überhaupt keine Messung; er wird wiederholt, und danach sollte jemand fragen, warum das System so instabil ist — denn eine Streuung dieser Größe ist selbst ein Befund, den man lieber vor als nach der Abnahme hat. Ohne Protokoll sind 0,79 nur zwei Menschen mit verschiedenen Bauchgefühlen darüber, was „nah genug“ heißt.
Deshalb darf der Schwellwert auch nie eine Zahl sein, die jemand in einer Besprechung gegriffen hat. Er sollte eine Zahl sein, die Sie einmal gemessen haben, auf echten Daten, in einem zeitlich begrenzten Piloten, bevor sie in die Nähe einer Unterschrift kommt. Ich unterschreibe keinen Festpreis-Werkvertrag gegen einen Schwellwert, den noch nie jemand erreicht hat — nicht, weil das unfair wäre, sondern weil es keine Information ist. Es ist ein Wunsch mit einer Vertragsstrafe daran.
Die Klausel — und der Streit, den sie verhindert
So sieht die Form aus. Nicht der Wortlaut, die Form. Alles, was etwas entscheidet, ist ein Verweis auf die Anlage:
(1) Das Werk ist abnahmereif, wenn die Abnahmemessung nach Anlage 3 einen Mittelwert des Macro-F1 von >= 0,85 ueber 5 Laeufe erreicht. (2) Verbindlich ist ein Lauf auf abnahme_set_v1.jsonl (SHA-256 gemaess Anlage 3a) bei Temperature 0.0 und Seed 42 in der in Anlage 3b festgeschriebenen Umgebung, durchgefuehrt vom Auftragnehmer im Beisein des Auftraggebers. (3) Eine Messung, deren Standardabweichung ueber die 5 Laeufe 0,02 ueberschreitet, ist keine gueltige Messung und wird einmal wiederholt. (4) Einzelne fehlerhafte Ausgaben stellen fuer sich genommen keinen Mangel dar. Das Unterschreiten des Schwellwerts ist ein Mangel; dem Auftragnehmer steht Nacherfuellung auf demselben Abnahmedatensatz zu. (5) Nach der Abnahme ist eine Aenderung der Modellversion oder der Umgebung nach Anlage 3b eine Aenderung des Werks. Sie erfordert eine neue Messung und ist gesondert zu vereinbaren.
Absatz (4) ist die Stelle, an der es wirklich zur Sache geht, und § 640 Abs. 1 S. 2 BGB ist der Grund. Dort steht, dass die Abnahme wegen unwesentlicher Mängel nicht verweigert werden kann. Lesen Sie das aus dem Stuhl des Auftraggebers. Ihr Dienstleister liefert, drei von 300 Ausgaben sind falsch, Sie verweigern die Abnahme und behalten die Zahlung ein. Der Dienstleister zeigt auf § 640 Abs. 1 S. 2 und nennt ein Prozent unwesentlich. Sie sagen, das ist es ganz sicher nicht. Und nun: Wer entscheidet, ob eine Fehlerquote von 1 % bei der Rechnungsextraktion wesentlich ist? Schweigt der Vertrag, lautet die Antwort: ein Gericht, beraten durch einen Sachverständigen, in einiger Entfernung, mit Kostenrisiko auf beiden Seiten und einem Ausgang, den von hier aus niemand vorhersagen kann. Das ist kein Worst Case. Das ist der Normalfall eines Vertrags ohne Zahl.
Die Schwellwertklausel schützt den Besteller also mindestens so sehr wie den Auftragnehmer. Sie ist der Moment, in dem der Auftraggeber „wesentlich“ von einer Rechtsmeinung in eine Rechengröße verwandelt — die er selbst gewählt hat, zu dem Zeitpunkt, an dem er die größte Verhandlungsmacht besitzt: vor der Unterschrift. Wenn Ihr Prozess wirklich 95 % braucht, schreiben Sie 0,95 hin und bezahlen Sie 0,95, denn das ist ein anderes System. Wenn Sie 0,85 in Wahrheit akzeptieren würden, kauft Ihnen das Hinschreiben etwas Wertvolles: das unstrittige Recht, bei 0,84 die Abnahme zu verweigern, ohne mit irgendjemandem über Erheblichkeit zu diskutieren.
Zwei Dinge gehören noch in die Anlage. Erstens: Nacherfüllung findet auf demselben eingefrorenen Satz statt — ein Auftragnehmer, der bei jedem Versuch einen frischen Satz bekommt, bekommt die Klausurfragen gereicht. Die Kehrseite sage ich lieber selbst, als dass Sie sie entdecken: Ein Auftragnehmer, der gegen einen sichtbaren, eingefrorenen Satz iteriert, überanpasst sich irgendwann an ihn. Wenn der Einsatz die zusätzliche Labelarbeit rechtfertigt, ist die Gegenmaßnahme ein zweiter, versiegelter Satz gleicher Herkunft, der nicht offengelegt und zur Abnahme einmal gemessen wird; der vereinbarte Schwellwert gilt weiter für den sichtbaren Satz, aber ein großer Abstand zwischen beiden ist ein Signal, das beide Seiten vorher als ernstzunehmend vereinbart haben.
Zweitens: Drift. Mit der Abnahme ist das System in dieser Modellversion und dieser Umgebung abgenommen. Wenn der Modellanbieter unter gleichem Namen aktualisiert und die Zahl wandert, ist das kein Mangel des gelieferten Werks — am Werk hat sich nichts geändert. Nichts ist es aber auch nicht, und jemand trägt es. Entweder Sie fixieren die Version und akzeptieren, dass sie irgendwann abgekündigt wird, oder Sie kaufen einen Wartungsvertrag, der den Abnahmedatensatz nach Plan erneut misst und festlegt, was bei einem Absacken passiert. Dieses Zweite ist ein Dienstvertrag neben dem Werkvertrag, und das ist die ehrliche Struktur dafür. Die dritte Möglichkeit — niemand trägt es — ist der Standard und der Weg, auf dem ein System ein Jahr lang leise verfällt. Entscheiden Sie vor der Abnahme, nicht danach: Nach der Abnahme muss in der Regel der Besteller den Mangel darlegen, was ein weiterer Grund ist, die Messung schriftlich zu haben.
Wo Tippel ins Spiel kommt
Der größte Teil der Arbeit aus diesem Artikel passiert, bevor irgendjemand etwas unterschreibt: festlegen, was gemessen wird, den Satz bauen, der es misst, und herausfinden, ob der Schwellwert, den Sie vereinbaren möchten, für dieses Problem überhaupt erreichbar ist. Genau das ist der KI-Readiness-Check — ein bezahlter, zeitlich begrenzter Pilot auf Ihren echten Daten, der mit einer belastbaren Zahl endet statt mit einem guten Gefühl. Das ist die Eingabe, die ein Werkvertrag braucht. Ist die Zahl nicht da, wissen Sie es zum Preis einer Woche statt zum Preis eines Baus.
Baue ich das System anschließend, wird der Festpreis gegen diese Messung angeboten, und die Harness geht mit dem System aus — mir ist lieber, an einer Zahl gemessen zu werden, die ich mitdefiniert habe, als später über Erheblichkeit zu streiten. Wenn Sie gerade auf einen Vertragsentwurf schauen, in dem „die KI muss zuverlässig funktionieren“ steht, und sich fragen, was stattdessen dort stehen sollte: schicken Sie ihn mir.