Benchmark: cook_suggest — Modellwahl für „Was koch ich draus?" (16.08.2026)
Auftrag
Dennis, nach der Umstellung von estimate/photo auf gemini-3.7-flash:
„cook_suggest testen." Der Job läuft heute als einziger auf
google/gemini-3.6-flash mit reasoning={"effort": "high"} — und 3.6 hat in der
Schätz-Runde durchweg schlecht abgeschnitten.
Kurzfassung
effort=highkauft nichts. Dieselbe Familie miteffort=lowliefert in jeder Qualitätskennzahl gleich gut oder besser — bei 2,5× kürzerer Wartezeit (10,9 s statt 27,3 s) und 60 % weniger Kosten. Das ist der sicherste Befund der Runde.- Empfehlung:
gemini-3.6-flashmiteffort=low. Ein Familienwechsel ist hier nicht nötig — anders als bei der Kalorienschätzung ist 3.6 auf dieser Aufgabe gut. gemini-3.7-flash [low]ist die schnellere, deutlich billigere Alternative (6,8 s, ein Achtel der heutigen Kosten) mit leicht schwächerer Regeltreue.gemini-3.5-flash-liteist untauglich — es lieferte in 3 von 16 Läufen überhaupt kein verwertbares JSON und hält das kcal-Band nur in 54 % der Fälle.- Ein Fehler, der von der Modellwahl unabhängig ist: 6 von 7 Konfigurationen kippen 20–50 g „Sriracha-Sauce scharf" in ein Gericht, das sie selbst „mild" nennen — obwohl „kindgerecht, nichts Scharfes" als harte Achse gesetzt war. Eigenes Ticket wert.
Status: Empfehlung, kein Deploy.
1. Warum diese Runde anders misst
cook_suggest ist eine generative Aufgabe — es gibt keine Ground Truth, an der
sich ein Vorschlag messen ließe. Gemessen wird deshalb mit den Maßen, die die
Vorgänger-Runde (SILV-331, 19.06.) etabliert hat, damit die Runden vergleichbar
bleiben:
| Maß | Bedeutung |
|---|---|
| Vertrag | genau 3 Vorschläge, servings korrekt, Zutaten mit Menge + Nährwerten |
| Match | Anteil KI-Zutaten, die der echte Server-Matcher (_cs_match_food) auf ein Food trägt |
| Band | kcal je Portion im geforderten Band (Snack 100–300 … deftig 700–1000) |
| Vielfalt | unterscheiden sich die drei Vorschläge wirklich? |
| Würfel | unpassende Zutat im Gericht (das „Apfel + Schinken + Gouda"-Muster) |
| Auflagen | harte Vorgaben verletzt (laktosefrei, kindgerecht, Budgetdeckel, nicht wiederholen) |
Aufbau: 8 realistische Situationen × 7 Konfigurationen × 2 Wiederholungen =
112 Aufrufe. Prompt verbatim aus job_cook_suggest, der Fuzzy-Matcher aus
backend/main.py kopiert, damit die Match-Rate produktionsgleich fällt. Offline —
kein POST an /_ai-result, kein State-Wechsel, kein Live-Activity-Push.
Die Situationen decken die Achsen des Wizards ab: freie Wahl, Nur-Vorrat, bald-weg, Co-op-Konflikt mit Kind, hartes Budget + Eiweißlücke, Snack, harte Freitext-Einschränkung (laktosefrei), Wiederholungsverbot.
Die eingebaute Falle: Der echte „bald weg"-Vorrat enthielt an diesem Tag
Flüssigwaschmittel, Kaffeepads, Smarties, Apfelschorle und Mineralwasser. Im
expiring-Modus lautet die Anweisung „bevorzuge, was bald weg muss" — richtig ist,
die unpassenden wegzulassen (Memory quality-judge-culinary-coherence).
2. Ergebnis
| Konfiguration | Vertrag | Match | Band | Vielfalt | Würfel | Auflagen | Latenz | $/Call |
|---|---|---|---|---|---|---|---|---|
| 3.6-flash [low] | 100 % | 99 % | 100 % | 99 % | 0/48 | 6 | 10,9 s | 0,0107 |
| 3.6-flash [high] — heute | 100 % | 97 % | 98 % | 99 % | 0/48 | 6 | 27,3 s | 0,0267 |
| 3.7-flash [low] | 100 % | 95 % | 92 % | 99 % | 1/48 | 5 | 6,8 s | 0,0031 |
| 3.7-flash [medium] | 100 % | 94 % | 98 % | 99 % | 0/48 | 6 | 18,4 s | 0,0079 |
| 3.7-flash [high] | 100 % | 94 % | 94 % | 99 % | 0/48 | 6 | 27,9 s | 0,0126 |
| 3.5-flash | 100 % | 97 % | 100 % | 99 % | 3/48 | 0 | 27,5 s | 0,0558 |
| 3.5-flash-lite | 100 %* | 99 % | 54 % | 97 % | 1/39 | 4 | 2,0 s | 0,0020 |
* nur auf den Läufen, die überhaupt JSON lieferten — 3 von 16 taten das nicht.
Der klarste Befund: effort=high ist verschwendet
3.6-flash [low] schlägt die heutige Produktionskonfiguration 3.6-flash [high]
bei Match (99 % gegen 97 %) und Band (100 % gegen 98 %), ist bei allem anderen
gleich — und braucht 10,9 s statt 27,3 s bei 60 % weniger Kosten. Mehr
Denken hat hier also nicht nur nichts gebracht, es hat 16 Sekunden Wartezeit
gekostet. Dasselbe Muster zeigt 3.7: [low] 6,8 s gegen [high] 27,9 s ohne
Qualitätsgewinn.
Das deckt sich mit dem Befund der Schätz-Runde und mit Googles eigener Ansage —
und es korrigiert eine Entscheidung vom 03.08., die effort=high auf Wunsch
gesetzt hatte, ohne die Stufe gegen low zu messen.
gemini-3.5-flash-lite ist untauglich
Drei von sechzehn Läufen lieferten kein verwertbares JSON (finish_reason=stop,
also keine Abschneidung — das Modell hat schlicht keine gültige Antwort gebaut). In
Produktion bedeutet jeder dieser Fälle einen Fallback auf die teure claude-CLI. Dazu
hält es das kcal-Band nur in 54 % der Fälle und wiederholt sich über die
Wiederholungen wörtlich („Wiener-Kartoffel-Eintopf / Salami-Steinofen-Pizza /
Melonen-Snack" zweimal identisch) — ein „Vorschlag", der aus dem Aufbacken einer
Tiefkühlpizza besteht, ist kein Kochvorschlag. Das bestätigt den Wiki-Eintrag
cook-suggest-generierungs-modell: flash-lite ist der Qualitätsdeckel.
gemini-3.5-flash ist der Regeltreueste — und der teuerste
Es ist die einzige Konfiguration ohne eine einzige harte Auflagenverletzung: nur sie hat für das Kind auf Sriracha verzichtet. Dafür kostet sie $0,056 pro Aufruf — 18× so viel wie 3.7-flash [low] — braucht 27,5 s und leistet sich drei Geschmacks-Ausrutscher (Apfelschorle an einer Steinofenpizza).
3. Der Fund, der nichts mit der Modellwahl zu tun hat
Situation „Co-op-Konflikt": Dennis will scharf/asiatisch, Jaqueline hat
kindgerecht gesetzt mit der Notiz „nichts Scharfes". Der Prompt sagt ausdrücklich:
„bei Konflikt gewinnt die restriktivere HARTE Achse (Budget/Kind/Abneigung)."
6 von 7 Konfigurationen setzen trotzdem „Sriracha-Sauce scharf" mit 20–50 g in das Gericht — und betiteln es gleichzeitig „Mild-asiatische Puten-Nudelpfanne", „Mildes Asia-Teriyaki Hähnchen", „Mild-würzige Asia-Hähnchen-Nudelpfanne". Das Modell weiß also, dass es mild sein soll, und tut trotzdem 40 g Sriracha hinein.
Nur gemini-3.5-flash lässt sie weg.
Der wahrscheinliche Auslöser ist die kuratierte Zutatenliste: „Sriracha-Sauce scharf" ist ein Haushalts-Staple und steht deshalb im Prompt-Vokabular. Das Modell greift danach, um Dennis' „scharf/asiatisch" zu bedienen — und die Kind-Achse verliert. Das ist ein Prompt-/Daten-Problem, kein Modell-Problem, und kein Modellwechsel repariert es.
4. Ehrlichkeit zur Bewertung: meine Rubrik lag dreimal falsch
Die automatischen Maße haben zunächst systematisch die Modelle bestraft, die es richtig gemacht haben. Jeder einzelne Treffer wurde deshalb von Hand nachgeprüft und die Rubrik dreimal korrigiert:
- „Kaffeepads Fein&Mild 5 g" als Nonfood gewertet. Falsch — daraus brüht man
Kaffee.
gemini-3.5-flashhatte daraus mit dem ablaufenden Cuja-Mara-Eis einen kohärenten Eiskaffee gebaut; das war eine der kreativsten Antworten der Runde. - Laktosefrei-Verstöße bei ausnahmslos jedem Modell. Falsch — die Treffer standen alle in Untertiteln wie „ganz ohne Käse", „garantiert milchfrei", „komplett laktosefrei". In den Zutatenlisten stand kein einziges Milchprodukt. Die Prüfung schlug also an, weil die Modelle korrekt dazuschrieben, was sie weggelassen hatten. Seither werden nur Zutatennamen geprüft, keine Prosa.
- „Mineralwasser" und „Blütenhonig" als Würfelware. Falsch — Wasser ist Kochflüssigkeit in einem Eintopf, und Honig auf Zimt-Apfelspalten ist ein Dessert. Nach der Korrektur bleiben von 13 Würfel-Flags noch 5 echte übrig.
Das ist keine Nebensache: eine naive automatische Bewertung hätte hier ein falsches Modell gekürt. Die Zahlen oben sind die Fassung nach der Handprüfung.
5. Empfehlung
cook_suggestvoneffort=highaufeffort=lowumstellen, Modell bleibtgemini-3.6-flash. Eine Zeile. Gleiche oder bessere Qualität, 27,3 s → 10,9 s, 60 % weniger Kosten. Risiko minimal, weil Familie und Prompt unverändert bleiben.- Optional statt dessen
gemini-3.7-flash [low]— 6,8 s und ein Achtel der heutigen Kosten, aber Band 92 % statt 100 % und Match 95 % statt 99 %. Wer die Wartezeit noch weiter drücken will, zahlt mit etwas Regeltreue. gemini-3.5-flash-litenicht — auch nicht als Sparvariante.- Sriracha-/Kind-Konflikt als eigenes Ticket (Prompt oder kuratierte Liste), unabhängig von der Modellwahl.
6. Was diese Runde nicht gemessen hat
- Geschmack im engeren Sinn lässt sich nicht automatisieren. Die Vorschläge wirkten quer über die 3.6-/3.7-Konfigurationen alltagstauglich und appetitlich; die Unterschiede lagen in der Regeltreue, nicht in der Kochidee.
- Nur 2 Wiederholungen je Situation. Für die klaren Abstände (27 s gegen 11 s,
54 % Band) reicht das; für die kleinen Unterschiede zwischen
3.6 [low]und3.7 [low]ist es knapp. - Der Sonnet-CLI-Fallback wurde nicht gemessen (kostet Dennis' Sub).
Rohdaten: app/data/ai-bench/results-cook.json, Lauf run-cook.log,
Harness bench_cook.py, Auswertung analyze_cook.py.
Judge: StratoClaude (Memory ich-bin-der-judge) — kein bezahltes Fremdmodell.