Als die Anweisungen des Assistenten tausend Zeilen hatten
Jedes Mal, wenn du mit XNeuronal sprichst, liest das Modell zuerst seine Anweisungen. Am Morgen des 21. Mai waren das 1 043 Zeilen: Regeln, Gegenbeispiele, Sonderfälle, über Monate einer nach dem anderen hinzugefügt, und jede Ergänzung stieß eine andere um. An diesem Tag wurde alles neu geschrieben: 408 Zeilen, die beschreiben, was die App ist, statt vorzugeben, was in jeder Situation zu sagen ist. Jedes Werkzeug trägt jetzt seine eigene Gebrauchsanweisung, gelesen erst in dem Moment, in dem es benutzt wird. Und der Assistent hat gelernt, einmal am Tag Hallo zu sagen, nicht bei jedem Satz. Das Ergebnis: gleichmäßigere Antworten, weniger leere „Notiert“, ein Ton, der hält.
Ein „Notiert“ zu viel
Jonas erzählt auf dem Heimweg von seiner Woche. „Mein Bruder Milan kommt am Sonntag, er hat mit dem Zucker aufgehört, ich muss ihm einen Nachtisch finden.“ Die App antwortet „OK, notiert.“ Zwei Sätze später fragt Jonas nach einer Nachtisch-Idee, und die Antwort schlägt eine Zuckertarte vor, ohne ein Wort über Milan. Die Tatsache war behalten worden. Sie war auch vergessen worden, in derselben Minute.
Solche Szenen waren im Frühjahr nicht selten. Ein Satz konnte drei Erinnerungen enthalten und keine davon hinterlassen, davon haben wir erzählt. Aber es gab einen dumpferen Fehler, der sich schwerer fotografieren ließ: Der Assistent hatte von einem Zug zum nächsten nicht denselben Charakter. An einem Tag kommentierte er jede Information mit einem „Notiert“, am nächsten schwieg er. Manchmal fasste er zusammen, was du gerade gesagt hattest, manchmal stellte er die richtige Frage. Und mitten im Gespräch konnte er nicht mehr wissen, was zwei Sätze vorher gesagt worden war.
Wir haben die Ursache zuerst im Gedächtnis gesucht. Sie lag woanders: in dem Text, den das Modell vor jeder Antwort neu liest.
Ein Handbuch mit tausend Zeilen
Ein Sprachmodell weiß nichts über XNeuronal, wenn es ankommt. Alles, was es über die App, ihr Gedächtnis, ihre Werkzeuge und die Art, wie es sprechen soll, weiß, steht in einem Text, den es zu Beginn jedes Austauschs bekommt: den Anweisungen.
Diese Anweisungen waren gewachsen, wie eine Hausordnung wächst: durch Ergänzungen. Eine misslungene Antwort im Test, eine Regel mehr. Ein schlecht behandelter Fall im Alltag, ein Beispiel mehr, mit der falschen Antwort durchgestrichen und der richtigen daneben. Am Morgen des 21. Mai hatte der Text 1 043 Zeilen. Er enthielt zweiunddreißig Zeilen Beispiele der Art „sag nicht dies, sag das“. Er enthielt die Regel, die trennt, was still behalten und was laut bestätigt wird, wiederholt in fünf verschiedenen Abschnitten, jedes Mal ein wenig anders. Er enthielt 175 Zeilen, die Feld für Feld den Aufbau einer Karte beschrieben, mit einem Beispiel pro Memo-Art: Rezept, Einkaufsliste, Lesenotiz. Und er enthielt fünfzig Zeilen darüber, wie ein Illustrationsbild zu bestellen sei, obwohl dieser Befehl dem Assistenten neun Tage zuvor entzogen worden war: Seit dem 12. Mai wählt der Server das Bild selbst. Niemand hatte die Gebrauchsanweisung entfernt.
Ebenfalls neun Tage zuvor war eine Karte des Gedächtnisses an den Anfang dieses Textes gestellt worden, um dem Modell zu sagen, wohin jede Information gehört: nützlich, und ein paar Dutzend Zeilen mehr.
Das eigentliche Problem war nicht die Länge an sich. Es war, dass jeder Sonderfall einem anderen widersprach. „Bestätige immer, wenn man dich bittet, etwas zu behalten“ stand neben „sag nie notiert“. Jede Regel war in ihrem Zusammenhang richtig gewesen, und das Modell bekam alle Zusammenhänge auf einmal. Es wandte einen Teil davon an, nicht immer denselben.
Warum ein längeres Handbuch den Assistenten unzuverlässiger macht
Ein Sprachmodell liest seine Anweisungen nicht ein für alle Mal. Es liest sie bei jedem Zug vollständig neu, zusammen mit dem Gesprächsverlauf, dem aktiven Gedächtnis und der Beschreibung seiner Werkzeuge. All das bildet einen einzigen Textblock, und dieser Block wog in der Größenordnung von fünfzigtausend Token pro Zug, davon gut die Hälfte allein für die Anweisungen. Die Aufmerksamkeit eines Modells ist über einen Block dieser Größe nicht gleichmäßig verteilt. Was in der Mitte steht, zählt weniger als das, was am Anfang und am Ende steht. Und der Gesprächsfaden, das, was du zwei Sätze vorher gesagt hast, lag genau in der Mitte, eingeklemmt zwischen tausend Zeilen Regeln und der Liste der Werkzeuge.
Das erklärt Milans Nachtisch. Die Tatsache war durchaus ins Gedächtnis geschrieben worden. Aber im nächsten Zug, in der neu gelesenen Masse, wog sie weniger als ein Beispielrezept für Couscous. Das Modell hatte nicht vergessen: Es hatte dort nicht hingeschaut. Und jeder Zug brauchte länger zur Verarbeitung, was jede künftige Ergänzung verschlimmert hätte.
Sagen, was wahr ist, statt was zu tun ist
Am späten Nachmittag des 21. Mai wurde der Text von Grund auf neu geschrieben. Nicht gekürzt: neu geschrieben, nach einem anderen Prinzip.
Der alte Text sagte, was zu tun ist: In dieser Situation antworte dies, rufe jenes Werkzeug auf, vermeide jenen Satz. Der neue sagt, was wahr ist. Er beantwortet dreizehn Fragen, der Reihe nach: wer du bist; was XNeuronal ist und was nicht; warum es existiert; wie sein Gedächtnis aufgebaut ist; wie eine Erinnerung eingeordnet wird; wie ihr Inhalt geschrieben wird; welche Werkzeuge es gibt; wie sie sich verketten; wann etwas still behalten und wann laut bestätigt wird; warum nie etwas gelöscht wird; wie gesprochen wird; die wenigen Situationen, die eine gesonderte Behandlung verdienen; und was der Server bei jedem Zug hinzufügt.
Die Wette passt in einen Satz: Ein Modell, dem man die Welt erklärt, leitet das richtige Verhalten besser ab als ein Modell, dem man die Antworten diktiert. Nimm das Gedächtnis. Der alte Text listete Ablageregeln auf. Der neue erklärt, dass das Gedächtnis der App drei Systeme des menschlichen Gedächtnisses nachahmt: was wir wissen, die dauerhaften Tatsachen über dein Leben; was wir erlebt haben, die Ereignisse in der Zeit; was wir zu tun haben, die Handlungen, die später ausgelöst werden. Er sagt, dass die erste Kategorie still ist, dass sich keine Karte öffnet, wenn du den Vornamen deiner Schwester erwähnst, und dass die dritte immer sichtbar ist, weil du erwartest, die gesetzte Erinnerung zu sehen. Aus diesen drei Sätzen folgen Dutzende von Fällen, die der alte Text einzeln aufzählte.
Die Regel des Schweigens, die fünfmal wiederholt wurde, steht jetzt nur noch einmal, in zwei Absätzen. Du erzählst von deinem Leben: Die App behält es ohne Kommentar und reagiert auf den Inhalt, stellt die nützliche Frage, weist auf einen Widerspruch hin. Du bittest ausdrücklich um einen Gedächtnisakt, „notier das“, „erinnere mich um vier“: Sie bestätigt in einem kurzen Satz. Es ist dieselbe Regel wie vorher. Sie hat keine Konkurrentin mehr.
Das Ergebnis hat 408 Zeilen. Einundsechzig Prozent weniger. Der bei jedem Zug neu gelesene Block wurde ungefähr halbiert, und der Gesprächsverlauf hat seinen Platz zurückbekommen.
Jedes Werkzeug trägt seine Gebrauchsanweisung
Ein Teil dessen, was aus den Anweisungen verschwunden ist, wurde nicht gelöscht. Er ist umgezogen.
Der Assistent wirkt über Werkzeuge auf die App ein: eine Erinnerung anlegen, eine ändern, welche suchen, eine weiterentwickeln, eine Erinnerung setzen, im Web suchen, eine Karte anzeigen, erklären, dass jemand anderes spricht, eine Verhaltensregel speichern. Neun Werkzeuge, an diesem Tag. Jedes wird dem Modell mit seinen Parametern beschrieben, und diese Beschreibung wird in dem Moment gelesen, in dem es sie benutzen will.
Dorthin sind die 175 Zeilen Kartenaufbau gewandert, dazu das Wichtigkeitsraster von eins bis zehn und die Tabelle der vier Gründe, aus denen sich eine Erinnerung weiterentwickeln kann: eine Tatsache, die sich ändert, eine Tatsache, die falsch war, ein gelöstes Problem, eine Information, die du vergessen lassen willst. Vierundfünfzig Zeilen zu den Werkzeugbeschreibungen hinzugefügt, sechshundertfünfunddreißig aus den Anweisungen entfernt. Dieselbe Information, aber nur dann herangezogen, wenn sie gebraucht wird. Der Assistent muss den Aufbau einer Rezeptkarte nicht kennen, um dir „Hallo“ zu antworten. Er braucht ihn, wenn er die Karte anlegt, und in diesem Moment wird er ihm gezeigt.
Das vollständige Rezeptbeispiel, das die Zutaten nach Familien ordnet, Fleisch, Gemüse, Gewürze, statt sie auf einen Haufen zu werfen, ist noch da, in der Beschreibung des Feldes, das die Karte beschreibt. Gelesen, wenn du nach einem Rezept fragst, nicht, wenn du nach der Uhrzeit fragst.
Was weggeworfen wurde, und was wir nicht behalten wollten
Der Block über die Bilder wurde ersatzlos gestrichen: Er beschrieb ein Werkzeug, das der Assistent nicht mehr hatte, da der Server die Illustration einer Karte selbst baut, aus Titel, Anreißer und Chips. Wir hätten ihn „für alle Fälle“ behalten können. Er wäre bei jedem Zug weiter umsonst gelesen worden.
Drei weitere Optionen wurden verworfen. Den Text lassen, wie er war: Das Symptom blieb, und jede Ergänzung verschlimmerte es. Ihn um ein Drittel kürzen und den Stil „sag nicht dies, sag das“ beibehalten: Die Wiederholungen wären geblieben, und mit ihnen eine Art, das Modell wie einen zu dressierenden Papagei zu behandeln. Den Kartenaufbau in den Anweisungen lassen: Das hieße, es vor jedem „Hallo“ eine Montageanleitung lesen zu lassen.
Die Entscheidung ist umkehrbar, und das steht schwarz auf weiß im Entscheidungsprotokoll des Projekts. Zwei Commits rückgängig machen, keine Datenbank berührt, keine Oberfläche geändert. Sollte sich der neue Text als schlechter erweisen, dauert der Rückweg eine Minute.
Einmal am Tag Hallo
Am selben Tag, etwas früher, hatte der Assistent etwas Kleineres und Sichtbareres gelernt: Hallo zu sagen.
Bis dahin konnte er die Begrüßung ganz auslassen, wenn du den Tag mit einer direkten Bitte eröffnet hast, oder umgekehrt bei jedem Austausch „Guten Tag Jonas“ antworten, als träfe er dich alle zehn Minuten zum ersten Mal. Keins von beidem ist das, was jemand tut, der dich kennt.
Der Server weiß jetzt, ob das Gespräch, das sich öffnet, das erste deines Tages ist: Er schaut auf das zuletzt archivierte Gespräch und prüft, ob es von heute stammt, nach Pariser Zeit. Diese Information wird dem Kontext jedes Zuges hinzugefügt, zusammen mit der Uhrzeit. Ist es das erste Gespräch des Tages, eröffnet der Assistent vor achtzehn Uhr mit „Guten Tag“ und danach mit „Guten Abend“, gefolgt von deinem Vornamen, wenn er ihn kennt. Er ergreift die Initiative, auch wenn du direkt mit einer Bitte anfängst: „hi, das Wetter für morgen“ bekommt „Guten Tag Jonas, ich schaue nach.“ Später am Tag fängt er nicht von vorne an. Wenn du ihn grüßt, grüßt er einfach zurück. Wenn du gleich zur Sache kommst, kommt er auch zur Sache.
Zwei Details dieses Rituals sagen etwas darüber, wie die App gebaut ist. Erstens: Wenn er deinen Vornamen nicht kennt, sagt er nur „Guten Tag“. Nie „Guten Tag lieber Freund“, nie einen aus dem Gedächtnis erratenen Namen. Zweitens: Wenn die Antwort ein paar Sekunden dauern wird, trägt der kurze Satz, den der Assistent sofort sagt, „OK, ich schaue nach“, an diesem Morgen ebenfalls den Gruß. Die Höflichkeit kommt im sofortigen Ton an, nicht nur in der vollständigen Antwort, die folgt. Und wenn das Telefon verliehen ist, wird der Vorname der Person benutzt, die spricht, nicht der des Besitzers.
Im alten Text nahm dieses Ritual einen ganzen Abschnitt ein, drei nummerierte Regeln und sechs Beispiele. Im neuen drei Absätze, die dasselbe tun.
Was sich ändert, wenn du mit ihm sprichst
Nichts davon ist in der Oberfläche zu sehen. Am 21. Mai hat sich kein Knopf bewegt. Was sich ändert, ist die Gleichmäßigkeit.
Du erzählst, dass dein Bruder mit dem Zucker aufgehört hat: Die App sagt nicht mehr „Notiert“. Sie reagiert auf das, was du gerade gesagt hast, oder sie schweigt, und die Tatsache wird behalten. Du fragst zwei Sätze später nach einem Nachtisch: Sie hat den Faden vor Augen, weil der Faden nicht mehr unter tausend Zeilen begraben ist. Du setzt eine Erinnerung: „OK, Erinnerung für vier Uhr gesetzt“, ein Satz, keine Zusammenfassung. Eine Karte öffnet sich: ein begleitender Satz, „so, fertig“, nie Schweigen über einem Bildschirm, der sich gerade verändert hat. Und das Gespräch behält von einem Tag zum nächsten denselben Ton, kurz, per Du, ohne Moderatorenbegeisterung, weil dieser Ton einmal beschrieben statt zwanzigmal vorgeschrieben ist.
Was die App zwei Tage zuvor über das Flüchtige gelernt hatte, eine Wettervorhersage zeigen, ohne sie zu behalten, hat seinen Platz im neuen Text als Prinzip gefunden, in drei Zeilen, nicht als ein weiterer Fall. Und die Regeln, die du ihr selbst gibst, „sprich nicht mehr über dieses Thema“, „erinnere mich immer daran“, werden als das beschrieben, was sie sind: eine dauerhafte Anweisung, die du ihrer eigenen hinzufügst, gespeichert durch ein eigenes Werkzeug, bei jedem Zug in ihrem aktiven Gedächtnis neu gelesen.
Was wir im Auge behalten
Ein deklarativer Text geht eine Wette auf das Modell ein, das ihn liest: dass es aus einem klaren mentalen Modell das richtige Verhalten ableitet. Nicht alle Modelle schließen gleich gut, und das, das an diesem Tag in Produktion läuft, ist nicht das, für das der Text zuerst geschrieben wurde.
Die beiden Stellen, an denen ein Rückschritt erwartet wird, sind bekannt. Ein Satz, der mehrere Tatsachen enthält, von denen eine durchrutschen könnte. Und der Unterschied zwischen „erinnere mich“ und „merk dir“, der eine Erinnerung von einer einfachen zu behaltenden Tatsache trennt. Für das Erste bleibt der zweite Durchgang, der am 18. Mai eingeführt wurde und die Tatsachen eines Satzes nach der Antwort nachzählt, als Sicherheitsnetz an Ort und Stelle. Für beide steht die Regel fest: Wenn das Modell ein Verhalten verfehlt, bekommt es eine gezielte Anweisung, eine Zeile genau an der Stelle, an der sie fehlt. Zum Handbuch kehren wir nicht zurück.
Jonas wird vor allem eines bemerken. An dem Sonntag, an dem Milan kommt, wird die App ihm einen zuckerfreien Nachtisch vorschlagen, und sie wird nicht „Notiert“ gesagt haben, um das zu wissen.
