diff --git a/README.md b/README.md index 629da53..41adcce 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,9 @@ Aufgabentext (+ optional beigelegte Daten: --daten kurse.csv) 6. Solver ──────────── LLM erzeugt Python-Code, Ausführung in der Sandbox, Reparatur │ solving/ bei Fehlern; Szenarien = Datenvarianten, ohne LLM nachgerechnet ▼ -7. Abnahme ─────────── ohne LLM: jede Teilfrage beantwortet? jede Zahl der Antwort - │ solving/ belegt? Lösung zulässig? Eingabedaten ausgewiesen? +7. Abnahme ─────────── ohne LLM: jede Teilfrage beantwortet? jede Zahl und Einheit + │ solving/ der Antwort belegt? Lösung zulässig? Eingabedaten ausgewiesen? + │ jedes Szenario mit Ergebnis? ▼ Report (Markdown/HTML) + JSON + eigenständiges Solver-Skript reporting/ ``` @@ -150,8 +151,9 @@ Das LLM kann Fehler machen – deshalb gibt es mehrere Sicherungen: - **Jede Zahl der Antwort belegt:** Zahlen im Antworttext müssen aus dem Ergebnis oder der Aufgabe stammen (Rundungen und Einheitenumrechnungen werden akzeptiert). Ein Vergleichswert, der in keiner Tabelle steht, fällt auf. - **Jede Zahl der Aufgabe erfasst:** Zahlen des Aufgabentexts müssen als Fakt mit Fundstelle oder mit Begründung als irrelevant ausgewiesen sein – sonst betreten sie die Pipeline erst im Solver-Code, hinter allen Prüfungen. - **Selbst erzeugte Daten sind gekennzeichnet:** Erzeugt das Programm Eingabedaten (Zufallszahlen, synthetischer Markt, verkleinertes Universum), muss das in `data_assumptions` stehen, nicht nur im Fließtext – sonst folgt eine Reparatur und notfalls die Markierung „unzuverlässig“. -- **Szenarien nachgerechnet:** Vergleicht die Aufgabe mehrere Konfigurationen, wird jede durch erneutes Ausführen des Programms bestätigt – ohne LLM. -- **Keine erfundene Bedeutung (Prompt-Regel, nicht automatisch geprüft):** Nennt der Text keine Bedeutung – etwa bei einem reinen Formelsatz –, erklärt das Modell mathematisch (Mindest-/Höchstbedingungen) und sagt, dass die Bedeutung fehlt, statt ein Produktionsproblem zu erfinden. +- **Szenarien nachgerechnet:** Vergleicht die Aufgabe mehrere Konfigurationen, wird jede durch erneutes Ausführen des Programms bestätigt – ohne LLM. Hat ein Szenario kein Ergebnis und ist nicht als unlösbar belegt (beobachtet: Zeitlimit abgelaufen, gemeldet als „keine Lösung“), folgt eine Reparatur und notfalls die Markierung „unzuverlässig“. +- **Keine erfundenen Einheiten:** Eine Einheit hinter einer Zahl im Antworttext muss im Aufgabentext oder in beigelegten Daten vorkommen (nach Größenart: „Tausend Euro“ deckt „€“); neutrale Geld- und Mengeneinheiten (GE, ME) nur, wenn der Text von Kosten bzw. Mengen spricht. Sonst folgt eine Reparatur. +- **Keine erfundene Bedeutung (Prompt-Regel, nur teilweise wirksam):** Nennt der Text keine Bedeutung – etwa bei einem reinen Formelsatz –, soll das Modell mathematisch erklären statt ein Produktionsproblem zu erfinden. Gemessen wirkt das nur halb: Bedeutungswörter („Kosten“, „Ressourcen“) tauchen weiter auf; automatisch geprüft werden nur die Einheiten. - **Sandbox:** Der erzeugte Code läuft ohne Netzzugang, mit nur lesbarem Dateisystem und beschreibbar allein dem Arbeitsverzeichnis des Laufs. - **Kein falsches „optimal“:** Bleibt das Modell fehlerhaft, wird das Ergebnis als **unzuverlässig** markiert – bei falscher Zielgröße ohne Solver-Lauf, mit Warnkasten im Report und Exit-Code 2.