From 1d9011faa8bfd6b29dc3fc3c7cecbde6c6172de0 Mon Sep 17 00:00:00 2001 From: Johannes Rest Date: Wed, 9 Sep 2026 12:10:32 +0200 Subject: [PATCH] Document first Azure AI evaluation runs and refine analysis prompt --- docs/ai-analysis-prompt.md | 15 +++++ docs/ai-evaluation-v1.md | 81 +++++++++++++++++++++++++++ samples/invoices-rejected-report.json | 12 ++++ samples/invoices-report.json | 51 +++++++++++++++++ 4 files changed, 159 insertions(+) create mode 100644 samples/invoices-rejected-report.json create mode 100644 samples/invoices-report.json diff --git a/docs/ai-analysis-prompt.md b/docs/ai-analysis-prompt.md index ce09cb4..421499f 100644 --- a/docs/ai-analysis-prompt.md +++ b/docs/ai-analysis-prompt.md @@ -33,3 +33,18 @@ Antworte auf Deutsch: Wenn eine Erklärung nicht durch die Quellen gedeckt ist, benenne diese Grenze ausdrücklich. + +„Completed“ bedeutet ausschließlich, dass die Prüfung abgeschlossen wurde. +Leite daraus keine Importfreigabe ab. Ob ein Teilimport zulässig ist, +ist ohne ausdrückliche Regel unbekannt. + +„isValid: true“ bedeutet nur, dass die implementierten Prüfregeln +bestanden wurden. Bezeichne eine Rechnung deshalb nicht uneingeschränkt +als fehlerfrei oder fachlich vollständig gültig. + +Verwende für isValid=true die Formulierung: +„Die Rechnung hat die implementierten Prüfregeln bestanden.“ + +Nicht geprüfte Eigenschaften sind unbekannt. +Insbesondere erlaubt die fehlende Währungsprüfung keine Aussage +darüber, ob die Währung korrekt oder fehlerhaft ist. \ No newline at end of file diff --git a/docs/ai-evaluation-v1.md b/docs/ai-evaluation-v1.md index 0c1b854..cb31120 100644 --- a/docs/ai-evaluation-v1.md +++ b/docs/ai-evaluation-v1.md @@ -55,3 +55,84 @@ Für jede Antwort prüfen: Erster manueller Durchlauf: Beide Fälle anhand der Antworten im Lernchat geprüft. Kein automatisierter Modelltest und kein Nachweis wiederholbarer Qualität. + +## Testlauf vom 09.09.2026 – Completed mit fachlichen Fehlern + +### Konfiguration +- Modell: gpt-4.1-mini +- Modellversion: 2025-04-14 +- Bereitstellung: importassist-analysis (Global Standard) +- Durchführung: manuell im Foundry-Playground +- Quellen: invoice-interface-v1.md und invoices-report.json +- Anweisungen: ai-analysis-prompt.md vor der heutigen Ergänzung +- Websuche: deaktiviert + +### Eingabe +Prüfbericht mit Status Completed: +5 Rechnungen, davon 1 gültig und 4 fehlerhaft. +Keine Dateistrukturfehler. + +### Erwartung +- Mengen, Zeilen und Regelkennungen korrekt wiedergeben. +- Completed als abgeschlossene Prüfung erklären. +- Keine Importfreigabe oder Erlaubnis zum Teilimport ableiten. +- Gültigkeit auf die implementierten Prüfregeln begrenzen. +- Keine ursprünglichen Beträge oder Ersatzwerte erfinden. + +### Beobachtung +- Mengen, betroffene Zeilen und Regelkennungen korrekt erkannt. +- Prüfschritte mit Bezug auf Quelldaten vorgeschlagen. +- Keine konkreten Ersatzwerte erfunden. +- Unbelegte Aussage: „Datei insgesamt importierbar“. +- Zu umfassende Aussage: INV-001 sei „fehlerfrei“. + +### Bewertung +Teilweise bestanden. + +Die Antwort enthält eine unbelegte Importfreigabe und stellt die +Aussagekraft der implementierten Prüfregeln zu umfassend dar. + +### Anpassung +Anweisungen um zwei Klarstellungen ergänzt: +- Completed bedeutet keine Importfreigabe. +- isValid gilt ausschließlich für die implementierten Prüfregeln. + +### Wiederholung +Noch offen. Dieselbe Eingabe in einem neuen Chat mit den ergänzten +Anweisungen testen und das Ergebnis hier dokumentieren. + +### Wiederholung 2 mit präzisierten Anweisungen +- Mengen, Fehler und Regelkennungen korrekt wiedergegeben. +- Keine unbelegte Importfreigabe. +- Aussagekraft der Prüfung eingeschränkt; Währung als ungeprüft benannt. +- Gewünschte Formulierung für isValid=true nicht wörtlich übernommen. +- Ungenaue Bezeichnung „keine Rechnung“ statt „Rechnungsnummer fehlt“. +- Gutschrift als mögliche Ursache angesprochen, ohne sie ausdrücklich + als unbelegte Hypothese zu kennzeichnen. + +Bewertung: teilweise bestanden; wesentliche frühere Fehler behoben. +Verbleibende sprachliche und fachliche Unschärfen dokumentiert. +Ein einzelner Lauf belegt noch keine zuverlässige Wiederholbarkeit. + +## Testlauf vom 09.09.2026 – Rejected wegen Strukturfehler + +### Eingabe +Prüfbericht mit Status Rejected, leeren rows und einem +Dateistrukturfehler in Zeile 3. + +### Beobachtung +- Status Rejected und fehlende fachliche Prüfung korrekt erklärt. +- Zeile 3 korrekt als zweite Datenzeile eingeordnet. +- Strukturfehler korrekt CSV-001 zugeordnet. +- Keine bestimmte fehlende Spalte erfunden. +- Mögliche Fehlerursachen ausdrücklich offengelassen. +- Keine Behauptung, die Datei enthalte null Rechnungen. +- Entfernen von Anführungszeichen zu konkret empfohlen, + obwohl deren Vorhandensein unbekannt ist. +- Bezeichnung der gesamten Datei als „unbrauchbar“ zu pauschal. +- Quellenzuordnung der Zeilenzählung zu REP-001 noch zu prüfen. + +### Bewertung +Teilweise bestanden. +Kernaussage korrekt; Korrekturvorschlag und Wortwahl benötigen +Präzisierung. Eine Quellenzuordnung bleibt offen. \ No newline at end of file diff --git a/samples/invoices-rejected-report.json b/samples/invoices-rejected-report.json new file mode 100644 index 0000000..549e62e --- /dev/null +++ b/samples/invoices-rejected-report.json @@ -0,0 +1,12 @@ +{ + "sourceBlob": "0c684ef3a1844dfaad0974eb8791ba29-invoices-invalid-structure.csv", + "checkedAtUtc": "2026-09-08T07:58:14.9845461+00:00", + "status": "Rejected", + "rows": [], + "fileErrors": [ + "Zeile 3: Erwartet werden vier Spalten ohne Anf\u00FChrungszeichen." + ], + "totalCount": 0, + "validCount": 0, + "invalidCount": 0 +} diff --git a/samples/invoices-report.json b/samples/invoices-report.json new file mode 100644 index 0000000..ba5fdc1 --- /dev/null +++ b/samples/invoices-report.json @@ -0,0 +1,51 @@ +{ + "sourceBlob": "f4a6bfa50f1f4f6bbedb3816e41c0172-invoices.csv", + "checkedAtUtc": "2026-09-08T07:58:14.9847538+00:00", + "status": "Completed", + "rows": [ + { + "lineNumber": 2, + "invoiceId": "INV-001", + "isValid": true, + "errors": [] + }, + { + "lineNumber": 3, + "invoiceId": "INV-002", + "isValid": false, + "errors": [ + "Kundennummer fehlt." + ] + }, + { + "lineNumber": 4, + "invoiceId": "INV-003", + "isValid": false, + "errors": [ + "Betrag ist keine g\u00FCltige Zahl." + ] + }, + { + "lineNumber": 5, + "invoiceId": "INV-004", + "isValid": false, + "errors": [ + "Betrag muss gr\u00F6\u00DFer als null sein." + ] + }, + { + "lineNumber": 6, + "invoiceId": "", + "isValid": false, + "errors": [ + "Rechnungsnummer fehlt.", + "Kundennummer fehlt.", + "Betrag muss gr\u00F6\u00DFer als null sein." + ] + } + ], + "fileErrors": [], + "totalCount": 5, + "validCount": 1, + "invalidCount": 4 +}