feat: TextToModel.py als CLI-Programm mit main(), gruppierten Optionen und Defaults
- main(argv) -> int, build_parser() mit Gruppen Eingabe/Modus/Ablauf/LLM/Solver/Ausgabe, Hilfe mit Defaults, Umgebungsvariablen, Beispielen und Exit-Codes - Optionen für bisher reine Umgebungsvariablen (--solver-timeout, --sandbox, --max-tokens, --llm-timeout, --reasoning, --solver-retries, --understand-retries, --infeasible-recheck) - -o/--json und -a/--ausgabe PRÄFIX; im Terminal Kurzfassung statt JSON - Exit-Codes: 1 Eingabefehler, 64 Aufruffehler (nicht argparse' 2 = unzuverlässig), 130 Abbruch - solver_stage: Zeitlimit-Default zur Aufrufzeit auflösen, damit --solver-timeout wirkt - tests/test_cli.py Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
f101b63947
commit
422360ffa5
1 changed files with 382 additions and 70 deletions
|
|
@ -133,8 +133,11 @@ Die Aufgabe kann als `.txt` oder `.md` vorliegen; Markdown-Tabellen und Formeln
|
|||
## 5. Aufrufvarianten
|
||||
|
||||
```bash
|
||||
# Aufgabe aus einer Datei
|
||||
.venv/bin/python TextToModel.py aufgabe.md --report output/aufgabe.html > output/aufgabe.json
|
||||
# Aufgabe aus einer Datei – JSON, Report und Solver-Programm auf einen Schlag
|
||||
.venv/bin/python TextToModel.py aufgabe.md --ausgabe output/aufgabe # output/aufgabe.json, .html, .py
|
||||
|
||||
# dasselbe einzeln
|
||||
.venv/bin/python TextToModel.py aufgabe.md -o output/aufgabe.json --report output/aufgabe.html
|
||||
|
||||
# Aufgabe über die Standardeingabe
|
||||
echo "Ein Betrieb …" | .venv/bin/python TextToModel.py --report output/aufgabe.md > output/aufgabe.json
|
||||
|
|
@ -156,7 +159,10 @@ Hinweise:
|
|||
|
||||
- `--report` braucht die Endung `.html`, `.htm` oder `.md`.
|
||||
- `--code` ist mit `--no-solve` nicht möglich – es entsteht dann kein Programm.
|
||||
- Das **Ergebnis-JSON geht auf die Standardausgabe**. Ohne `> datei.json` erscheint es im Terminal und ist danach für `--resolve` und `--von` nicht verfügbar. Es empfiehlt sich, es immer umzuleiten.
|
||||
- Das **Ergebnis-JSON** schreibt `-o datei.json` (oder `--ausgabe PRÄFIX`) in eine Datei; fehlende Ordner werden angelegt. Ohne diese Option geht es auf die Standardausgabe, wenn sie umgeleitet ist (`> datei.json`). Im Terminal erscheint stattdessen nur eine Kurzfassung (Status, Zielwert, Antworten, Zuverlässigkeit) – das JSON ist dann für `--resolve` und `--von` nicht gespeichert. Es empfiehlt sich, immer `-o` oder `--ausgabe` zu verwenden.
|
||||
- `--ausgabe PRÄFIX` ist die Kurzform für `-o PRÄFIX.json --report PRÄFIX.html --code PRÄFIX.py`; ausdrücklich angegebene Einzeloptionen haben Vorrang.
|
||||
- Aufgabe über die Standardeingabe: `-` als Aufgabendatei oder einfach umleiten.
|
||||
- `.venv/bin/python TextToModel.py --help` zeigt alle Optionen mit ihren Defaults und Beispielen.
|
||||
- Der Ordner `output/` ist von Git ausgeschlossen und eignet sich für alle Ergebnisse.
|
||||
|
||||
---
|
||||
|
|
@ -209,9 +215,12 @@ print(d['reliable'], r['status'], r['objective_value']); [print(a['question_id']
|
|||
| Code | Bedeutung |
|
||||
|---|---|
|
||||
| `0` | Ergebnis zuverlässig |
|
||||
| `1` | Fehler bei der Eingabe: Datei unlesbar, Abbildung zu groß, gespeichertes Ergebnis ungültig |
|
||||
| `2` | Ergebnis vorhanden, aber **unzuverlässig** – Gründe in `reliability_issues` und im Warnkasten des Reports |
|
||||
| `3` | **abgelehnt** – keine Optimierungsaufgabe, nichts gerechnet |
|
||||
| andere | Programmfehler oder Abbruch (z. B. ungültiger API-Schlüssel), Meldung im Terminal |
|
||||
| `64` | falscher Aufruf (unbekannte Option, fehlende Datei, unverträgliche Optionen) |
|
||||
| `130` | mit Strg+C abgebrochen |
|
||||
| andere | Programmfehler (z. B. ungültiger API-Schlüssel), Meldung im Terminal |
|
||||
|
||||
Damit lässt sich das Programm in Skripten einsetzen:
|
||||
|
||||
|
|
@ -416,10 +425,19 @@ Wo das Geld hingeht: rund zwei Drittel der Kosten sind **erzeugter Output**, dav
|
|||
|
||||
| Option | Bedeutung |
|
||||
|---|---|
|
||||
| `AUFGABE` | Aufgabendatei (`.txt`, `.md`); ohne: Standardeingabe, sonst Beispielaufgabe |
|
||||
| `AUFGABE` | Aufgabendatei (`.txt`, `.md`); `-` oder ohne: Standardeingabe, sonst Beispielaufgabe |
|
||||
| `-o`, `--json DATEI` | Ergebnis-JSON in eine Datei (sonst stdout bzw. Kurzfassung im Terminal) |
|
||||
| `--report DATEI` | Report als `.html`/`.htm` oder `.md` |
|
||||
| `--code DATEI` | Solver-Programm als ausführbares Skript speichern |
|
||||
| `--model NAME` | LLM-Modell (mit `/` → OpenRouter, sonst Gemini) |
|
||||
| `-a`, `--ausgabe PRÄFIX` | Kurzform für `-o PRÄFIX.json --report PRÄFIX.html --code PRÄFIX.py` |
|
||||
| `-m`, `--model NAME` | LLM-Modell (mit `/` → OpenRouter, sonst Gemini) |
|
||||
| `--reasoning low\|medium\|high` | Denkaufwand (wie `LLM_REASONING_EFFORT`) |
|
||||
| `--max-tokens N`, `--llm-timeout SEK` | wie `LLM_MAX_TOKENS`, `LLM_TIMEOUT` |
|
||||
| `--solver-retries N` | Reparaturen des Solver-Codes (wie `SOLVER_RETRIES`) |
|
||||
| `--understand-retries N` | Nachfassen beim Verstehen, `-1` = Stufe aus (wie `UNDERSTAND_RETRIES`) |
|
||||
| `--infeasible-recheck 0\|1` | Gegenprobe bei „unlösbar“ (wie `INFEASIBLE_RECHECK`) |
|
||||
| `--solver-timeout SEK` | Zeitlimit je Programmlauf (wie `SOLVER_TIMEOUT`) |
|
||||
| `--sandbox auto\|bwrap\|aus` | Isolierung des Solver-Codes (wie `SOLVER_SANDBOX`) |
|
||||
| `--daten DATEI …` | beigelegte CSV-/Excel-Dateien |
|
||||
| `--no-solve` | keinen Solver-Code erzeugen |
|
||||
| `--max-revisions N` | Korrekturrunden |
|
||||
|
|
|
|||
Loading…
Reference in a new issue