S Swiftli Smart HR
Termin

Insights · Entwicklertagebuch

Wir haben das Modell getauscht.
Und dabei die Aufgabe neu verstanden.

Im Mai stand an dieser Stelle ein Beitrag über Phi-4-mini-instruct. Seither läuft im Smart Assistant ein anderes Sprachmodell: Qwen3-4B-Instruct-2507, quantisiert auf vier Bit, rund 2.28 GB gross, lokal über Apple MLX. Dieser Text erzählt, wie es dazu kam — mit den Umwegen, den verworfenen Ideen und dem, was heute noch fehlt.

11 Minuten Lesezeit · August 2026

Was im Mai stand

Der Mai-Beitrag war ein Vergleich: lokales Sprachmodell gegen Cloud-Dienst, Datenschutz gegen Bequemlichkeit, Latenz gegen Qualität. Damals war Phi-4-mini-instruct unsere Wahl. Es war klein, es lief auf jedem halbwegs aktuellen Mac, und es beantwortete Fragen zur Bedienung erstaunlich brauchbar.

Der Beitrag hatte einen blinden Fleck, und der lag nicht beim Modell. Er lag bei uns. Wir haben damals über Antworten nachgedacht — über ein System, das Fragen zur Software beantwortet. Was wir tatsächlich bauen mussten, war etwas anderes: ein Übersetzer.

Die Aufgabe war eine andere, als wir dachten

Ein Dienstplan ist keine Textaufgabe. Er ist ein Optimierungsproblem mit harten Grenzen: Ruhezeiten, Höchstarbeitszeiten, Mindestbesetzung pro Posten, Ferien, Pensen, Qualifikationen. Wer so etwas von einem Sprachmodell erzeugen lässt, bekommt einen Plan, der plausibel aussieht und beim zweiten Hinsehen gegen das Arbeitsgesetz verstösst. Wir haben das früh probiert. Es war jedes Mal knapp daneben, und knapp daneben ist bei Ruhezeiten dasselbe wie falsch.

Also haben wir die Aufgabe geteilt. Der Plan entsteht heute deterministisch in einem Constraint-Solver — dieselbe Ausgangslage ergibt denselben Plan, jedes Mal, nachvollziehbar. Arbeitsgesetz, Obligationenrecht und L-GAV liegen dort als prüfbare Bedingungen vor, nicht als Merkblatt zum Nachschlagen.

Übrig bleibt für das Sprachmodell genau eine Aufgabe, und die ist eng: Eine Betriebsleiterin schreibt in ein Feld «die Chefin arbeitet nie am Sonntag». Das Modell übersetzt diesen Satz in eine Planungsbedingung, die der Solver versteht und die vorher geprüft wird. 16 Regelarten sind dafür definiert — mehr Formen kennt der Übersetzer nicht, und er erfindet auch keine dazu. Passt ein Satz in keine davon, wird er zurückgewiesen statt gebogen.

Das Modell würfelt den Plan nicht. Es übersetzt einen Satz — und wenn es den Satz nicht sicher versteht, sagt es das, statt zu raten.

Warum Qwen3 und nicht weiter Phi-4

Sobald die Aufgabe so eng gefasst war, änderten sich die Kriterien. Wir brauchten kein Modell mehr, das gut plaudert. Wir brauchten eines, das zuverlässig strukturierte Ausgaben liefert, das sich mit eigenen Daten sauber nachtrainieren lässt und das die vier Landessprachen nicht nur höflich streift.

Der letzte Punkt war der Ausschlag. Wir wollten für jede Landessprache einen eigenen Adapter trainieren, und der Grundstock an Sprachverständnis muss vom Basismodell kommen — ein Adapter bringt einer Sprache keine Grammatik bei, er richtet vorhandenes Können auf eine Aufgabe aus. Bei Rumantsch und bei geschriebenem Schweizerdeutsch war der Unterschied im Ausgangsmaterial deutlich genug, um den Aufwand eines Wechsels zu rechtfertigen.

Heute läuft Qwen3-4B-Instruct-2507, quantisiert auf vier Bit. Die Gewichte belegen rund 2.28 GB auf der Festplatte. Ausgeführt wird über Apple MLX, also direkt auf der Grafikeinheit des Macs, ohne Umweg über einen Server.

2.28 GB

Das ganze Sprachmodell auf vier Bit quantisiert, lokal über Apple MLX ausgeführt.

16

Definierte Regelarten. Mehr Formen kennt der Übersetzer nicht — und erfindet auch keine dazu.

13'750

Beispiele im Training des deutschen Adapters — Schwiizertüütsch und Hochdeutsch.

6 von 16

Regelarten setzt der Planer heute noch nicht durch. Der ehrliche Stand, nicht der Prospekt.

Ein Modell ist eine Lieferkette

Der unangenehmste Teil des Wechsels hatte mit Sprache nichts zu tun. Ein Sprachmodell wird heruntergeladen — und alles, was heruntergeladen wird, ist eine Lieferkette, die jemand angreifen kann. «Läuft lokal» heisst nicht «kam sicher an».

Wir haben deshalb drei Dinge festgezurrt. Erstens: eine feste Modellrevision. Nicht «die neuste Fassung», sondern ein bestimmter, benannter Stand. Zweitens: SHA-256-Prüfsummen für Basismodell und für jeden Adapter, hinterlegt in der App. Drittens, und das ist der Punkt, der zählt: fail-closed. Stimmt eine Prüfsumme nicht, startet der Assistent gar nicht. Es gibt keinen Schalter «trotzdem laden», keine Warnung, die man wegklicken kann.

Das ist unbequem. Ein abgebrochener Download bedeutet, dass der Assistent stumm bleibt, bis er sauber nachgeladen ist. Wir halten das für die richtige Unbequemlichkeit: Ein Modell, das Planungsbedingungen für Personaldaten erzeugt, ist kein Ort für «wird schon stimmen».

Vier Adapter, vier Landessprachen

Auf dem Basismodell sitzen vier eigene LoRA-Adapter — Deutsch, Französisch, Italienisch, Rumantsch. Ein Adapter ist eine kleine, nachtrainierte Ergänzungsschicht: Er verändert das Basismodell nicht, er richtet es auf eine bestimmte Aufgabe in einer bestimmten Sprache aus.

Der deutsche Adapter ist an rund 13'750 Beispielen trainiert — als Schwiizertüütsch-Fassung, die auch Hochdeutsch mit abdeckt. Das war kein Zusatzwunsch, sondern eine Notwendigkeit: Hausregeln werden nicht in Hochdeutsch getippt. Sie werden so getippt, wie im Betrieb geredet wird — «d'Chefin schafft nie am Sunntig». Ein Übersetzer, der daran scheitert, ist im Alltag wertlos.

Der Adapter für Rumantsch ist voll ausgebaut, in derselben Tiefe wie die anderen drei. Das ist selten, und es ist wirtschaftlich schwer zu begründen — die Zahl der Betriebe, die ihn tatsächlich brauchen, ist überschaubar. Wir haben ihn trotzdem gebaut. Eine Software, die für die Schweiz gemacht ist, kann die vierte Landessprache nicht als Fussnote führen.

Der Umweg, den wir zuerst nicht wollten

Unsere erste Fassung schickte jeden Satz durchs Sprachmodell. Das war elegant gedacht und in der Praxis unnötig: Ein grosser Teil der Hausregeln, die tatsächlich eingegeben werden, folgt wenigen wiederkehrenden Mustern. Ein Sprachmodell für «keine Doppelschichten am Wochenende» zu bemühen, ist ungefähr so, als würde man für eine Addition eine Sitzung einberufen.

Heute ist die Verarbeitung zweistufig. Zuerst läuft ein Weg über reguläre Ausdrücke — deterministisch, sofort, ohne Modellaufruf. Erst was dort nicht greift, geht ans Sprachmodell. Das Modell ist die Rückfallebene, nicht der Hauptweg. Das ist schneller, sparsamer, und vor allem: Der häufigste Fall ist damit der am besten überprüfbare.

Verwerfen statt raten

Eine Entscheidung, über die wir lange gestritten haben: Was tun, wenn ein Name nicht eindeutig ist? Wenn zwei Mitarbeiterinnen «Meier» heissen und in der Regel nur «Meier arbeitet nie am Sonntag» steht?

Die verlockende Antwort ist, die wahrscheinlichere zu nehmen — die mit mehr Schichten, die zuletzt bearbeitete. Wir tun das nicht. Mehrdeutige Namen werden verworfen, und es wird nachgefragt. Ein falsch zugeordneter Name erzeugt eine Regel, die still im Plan mitläuft und jemandem über Monate Sonntage zuschiebt, die er nie zugesagt hat. Eine Rückfrage kostet zehn Sekunden. Der andere Fehler kostet Vertrauen.

Was wir wieder ausgebaut haben

Es gab eine Fassung, in der jede einzelne Schicht eine Begründung trug: warum diese Person, warum dieser Posten, welche Regel den Ausschlag gab. Fachlich war das korrekt. In der Bedienung war es ein Fehler.

Wer einen Monatsplan öffnet, sieht ein paar hundert Schichten. Ein paar hundert Begründungen daneben ergeben keine Transparenz, sondern Rauschen — und jede einzelne lud dazu ein, den Plan an genau dieser Stelle in Frage zu stellen, obwohl die Begründung nur einen von vielen wirksamen Faktoren nannte. Die Rückmeldungen waren eindeutig: mehr Verwirrung als Nutzen.

Also haben wir sie aus der Oberfläche entfernt. Nicht abgeschwächt, nicht eingeklappt — entfernt. Die Prüfung gegen das Regelwerk läuft unverändert weiter, sie steht nur nicht mehr als Kommentar an jeder Schicht. Es fällt schwerer, Arbeit wegzuwerfen, die funktioniert, als Arbeit, die scheitert.

Was heute noch nicht stimmt

Drei Punkte, die in einem Prospekt nicht stünden.

  • Sechs der sechzehn Regelarten setzt der Planer heute noch nicht durch. Sie lassen sich erfassen und werden korrekt übersetzt, aber der Solver zwingt sie noch nicht in den Plan. Wer sich auf sie verlässt, verlässt sich auf etwas, das noch nicht trägt.
  • «Kein Internet nötig» gilt erst nach dem einmaligen Modell-Download. Die 2.28 GB müssen einmal auf das Gerät. Danach stimmt der Satz vollständig — vorher ist er eine Verkürzung, und wir haben ihn eine Zeit lang zu bereitwillig verwendet.
  • Der Regex-Weg ist Handarbeit. Jedes neue Muster ist eine bewusste Erweiterung. Das ist der Preis dafür, dass der häufigste Fall der überprüfbarste ist — aber es ist Arbeit, die nie ganz fertig wird.

Was wir daraus gelernt haben

Der eigentliche Fortschritt der letzten Monate war nicht der Modellwechsel. Er war die Erkenntnis, wie klein die Rolle des Sprachmodells sein muss, damit das Ergebnis verlässlich wird. Es plant nicht. Es entscheidet nicht. Es übersetzt einen Satz in eine geprüfte Bedingung — und wenn es unsicher ist, fragt es nach.

Das ist eine unspektakuläre Aufgabe. Aber sie ist überprüfbar, sie ist umkehrbar, und sie lässt sich einem Betriebsleiter in zwei Sätzen erklären. Für Personaldaten in einem Schweizer Betrieb ist das mehr wert als jede Fähigkeit, die man beeindruckend vorführen, aber nicht belegen kann.

Ob der nächste Beitrag wieder einen Wechsel beschreibt, wissen wir nicht. Er wird jedenfalls ebenso wenig behaupten, dass diesmal alles fertig sei.

Quellen und weiterführende Links

Weiterlesen

Wie der Smart Assistant Planner im Alltag arbeitet, zeigt sich am schnellsten am eigenen Dienstplan. Dreissig Minuten, ohne Folien.