Ein Benutzer klickt auf Senden, nachdem ein Assistent sagt: „Rechnung an Alice senden“ – denn die Benutzeroberfläche erweckt den Eindruck, dass genau dies geschehen wird.
Die Benutzeroberfläche führt daraufhin eine Anfrage aus, deren tatsächlicher Empfänger bob@vendor.com ist; der Benutzer erfährt dies erst im Nachhinein, wenn die Rechnung im falschen Posteingang landet.
Für diesen Fehler muss das Modell das Produkt nicht „hacken“.
Der Fehler tritt an der Schnittstelle auf, an der generierter Text von einem Menschen freigegeben wird und die Benutzeroberfläche die flüssige Beschreibung des Assistenten an die Stelle der tatsächlich ausgeführten Parameter treten lässt.
Das nächste Beispiel zeigt eine einfache Benutzeroberfläche für einen Assistenten, bei der die Diskrepanz sofort beim Klicken auf die Schaltfläche sichtbar wird.
Dieser Code veranschaulicht das Problem, indem er die Anzeige der Benutzeroberfläche (UI) von den tatsächlich übermittelten Daten trennt; ein Klick offenbart die eigentliche Nutzlast, die das Produkt versenden würde.
Die soeben beobachtete Diskrepanz entsteht, weil der Ablauf eines Frontend-Assistenten aus mehreren eigenständigen Phasen besteht, von denen jede zu einer anderen Art von fehlerhafter Annahme führen kann.
Wir können vier vom Frontend gesteuerte Phasen benennen und sie jeweils mit demselben Szenario – dem „Versand einer Rechnung“ – verknüpfen, damit spätere Korrekturen an der richtigen Stelle des Ablaufs ansetzen können.
Die Trennung dieser Phasen ist sinnvoll, da jede von ihnen unterschiedliche Kontrollmechanismen der Benutzeroberfläche erfordert; ein Warnhinweis in der falschen Phase kann das unerwünschte Ergebnis nicht verhindern.
Das folgende Diagramm markiert die beiden für diesen Kurs entscheidenden Schnittstellen: den Übergang von Text zu DOM sowie den Übergang von der Freigabe zur eigentlichen Anfrage.