- Schnellstart mit --ausgabe; Beispiele einheitlich mit -o statt Umleitung
- Ergebnis-JSON: Datei, umgeleitete Standardausgabe oder Kurzfassung im Terminal
- „Wann unzuverlässig“: neuer Grund LLM-Fehler, Solver-Fehler auch ohne Solver-Code
- README: Einstellungstabelle nennt die Kommandozeilenoptionen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- discarded_completions: an LLM_MAX_TOKENS abgeschnittene oder am Schema gescheiterte
Antworten sind bezahlt und zählen jetzt als Stufe „<Stufe> (verworfen)“ in Kosten,
Tokens und Aufrufen (wagner_whitin_dijkstra: ~32.000 Tokens fehlten).
- OPENROUTER_SWITCH_BELOW (Default = OPENROUTER_MIN_THROUGHPUT, 75): liefert ein Aufruf
ab 1000 Tokens weniger Tokens/s, wird der Anbieter per provider.ignore für den Rest
des Laufs gemieden (höchstens 3) und eine neue session_id vergeben; „No endpoints
found“ hebt die Sperrliste auf. Anlass: Sticky Routing hielt einen Lauf 1575 s bei
~65 Tokens/s (Median über 1012 Aufrufe: 156). provider.ignore mit echtem Aufruf geprüft.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
expected.json kann statt objective_value eine Liste "behavior" nennen
(rejected | unreliable | assumed_data), eines genügt. Treffer = Verhalten gezeigt,
erfüllt = zusätzlich alle Teilfragen beantwortet (außer bei Ablehnung). Bei erwarteter
Ablehnung wird kein Routing bewertet.
Vier Fälle: reine Gleichung, reine Rechenaufgabe (-> abgelehnt), fehlende Kursdaten,
fehlender Kundenbedarf (-> Annahme ausgewiesen oder unzuverlässig). Erste Messung
20260918-134339: 3/4; der fehlende Bedarf wird im Text parametrisch richtig behandelt,
maschinell aber als „optimal 270, zuverlässig“ ohne ausgewiesene Annahme gemeldet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- check_objective_decomposition: bei LP/MILP/CP muss eine objective_column den Zielwert
belegen, eine abweichende Beitragsspalte ist überall ein Befund -> Solver-Reparatur,
bleibt es: Warnung. 90 von 90 linearen Läufen seit 17.09. hätten bestanden.
- Summenzeilen: „Gesamt…“/„Nutzen…“ nur noch in der letzten Zeile, einzelne Zeile nie,
Zwischensummen nicht gegen die Gesamtsumme. Vorher 15 Rucksack-Läufe mit falschem
„Summe (0) weicht vom Zielwert (51) ab“; von 17 Abweichungen bleibt 1 echte.
- SOLVER_TIMEOUT (Default 60) für alle Programmläufe und als {ZEITLIMIT} im Solver-Prompt
- Benchmark: dirty zählt nur versionierte Dateien; SOLVER_TIMEOUT in der Konfiguration
Ändert die Prompt-Kennung (Solver-Prompt.txt).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- check_figure_readings vergleicht Zahlentupel je Datenzeile statt aller Zahlen des
Freitexts (Fehlalarm im ersten echten Lauf: zusätzliche Knotenaufzählung); fängt
falsch zugeordnete Bewertungen und vertauschte Pfeilrichtungen
- feste Form 'Start → Ziel: Bewertung' in Verstehen- und Abbildungs-Prompt;
abweichende Lesungen stehen im Log
- Standardmodell ist der Alias ~deepseek/deepseek-flash-latest (derzeit V4.1 Flash);
Benchmarks weiter mit festen IDs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Eingebettete Base64-Bilder und Bilddateien werden aus dem Aufgabentext gelöst und nur
der Verstehensstufe als Bild übergeben; sie überträgt jede Abbildung in Text. Eine
zweite, unabhängige Lesung wird Zahl für Zahl verglichen (bei Abweichung entscheidet
eine dritte, sonst reliable=False). Alle weiteren Stufen rechnen mit der Übertragung,
der Report zeigt Original und Übertragung nebeneinander. LLM_MODEL_UNDERSTANDING
wählt das Bildmodell.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bisher erzeugte is_optimization_task=False nur eine Log-Warnung; eine
reine Gleichung wurde trotzdem in ein Optimierungsmodell gepresst.
Jetzt bricht run_pipeline direkt nach dem Verstehen ab: kein
Nachfassen, keine Extraktion, kein Solver. PipelineResult.rejected,
reliable=False, specification/review optional; Report "Aufgabe
abgelehnt", CLI-Exit-Code 3, Benchmark-Status "abgelehnt" (auch die
Ergebnistabelle verkraftet die Zeile), --von verweigert.
Der Verstehens-Prompt nennt reine Gleichungen/Rechenaufgaben als
Nicht-Aufgaben und Zulaessigkeitsfragen sowie moeglicherweise
unloesbare Planungen ausdruecklich als Aufgaben. Unvermessen;
Prompt-Kennung jetzt 0333bfd5f9fe.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
README: Ordner je Pipeline-Stufe im Diagramm, Eingangstor ehrlich
beschrieben (nur Hinweis), fehlende Umgebungsvariablen
(UNDERSTAND_RETRIES, LLM_REASONING_EFFORT), DATA-Woerterbuch,
aktuelle Report-Reihenfolge, Regel gegen erfundene Bedeutungen,
Benchmark-Ergebnisdateien, neuer Abschnitt "Erweitern".
Ausgabeordner ausgabe/ -> output/ in .gitignore und allen Kommandos.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Im Wurzelverzeichnis liegt nur noch TextToModel.py (Ablauf und CLI).
Jede Stufe liegt mit Code und Prompt in einem eigenen Ordner: core,
understanding, modeling, checks, solving, reporting, data, benchmark;
Tests unter tests/, Aufgaben unter tasks/. understand_task,
text_to_model/revise_model und review_assumptions/needs_work/select_best
sind aus TextToModel.py zu ihren Prompts gewandert, inhaltlich
unveraendert. Prompt-Kennung des Benchmarks bleibt 93744636095a.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Übersetzt natürlichsprachige Optimierungsaufgaben (Deutsch) per LLM in
eine geprüfte Modellspezifikation, erzeugt Solver-Code und führt ihn in
einer bubblewrap-Sandbox aus. Deterministische Prüfungen ohne LLM,
Report als Markdown/HTML, Benchmark mit 19 verifizierten Fällen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>