Ihr KI-Bot ist ein Amnesiker. Jedes Mal, wenn der Kontext endet, vergisst er, wer Sie sind. So habe ich es behoben

Aktualisiert:
Ihr KI-Bot ist ein Amnesiker. Jedes Mal, wenn der Kontext endet, vergisst er, wer Sie sind. So habe ich es behoben

Wenn Sie einen KI-Chat erstellen, ist das erste Problem, dem Sie begegnen, dass das Modell zwischen den Anfragen keine Erinnerung hat. Jede Nachricht ist für sie alles, was existiert. Dies zu lösen ist nicht so einfach, wie es scheint.

Warum KI Sie nicht erinnert – und das ist kein Bug

Wenn Menschen zum ersten Mal mit einer KI-Figur interagieren, erwarten sie intuitiv, dass der Bot sie in Erinnerung behält. Dass er weiß, worüber sie gestern gesprochen haben. Dass er berücksichtigt, was sie vor einer Stunde über sich erzählt haben. Das scheint offensichtlich – aber das ist es nicht.

Ein Sprachmodell hat keine Erinnerung zwischen den Anfragen. Jede Nachricht, die Sie senden, ist ein separater, isolierter Aufruf. Das Modell "hört" die vorherigen Antworten nicht, wenn Sie sie nicht explizit übermitteln. Es gibt keine Sitzung, die irgendwo im Hintergrund gespeichert wird. Es gibt kein internes Gesprächsprotokoll. Es gibt nur das, was in die aktuelle Anfrage gelangt – und nichts weiter.

In der Praxis sieht das so aus: Ein Benutzer erzählt einer Figur eine Stunde lang von seinem Leben – Arbeit, Beziehungen, Pläne. Und dann beginnt er ein neues Gespräch und erhält: "Hallo! Erzähl mir ein bisschen von dir." Der Bot tut nicht so. Er weiß es wirklich nicht. Für ihn existiert diese Stunde nicht.

Das ist kein Bug des Modells und keine Einschränkung, die irgendwann behoben wird. Das ist die grundlegende Architektur von LLMs. Und die einzige Person, die das lösen kann, ist der Entwickler, der ein Produkt auf Basis des Modells erstellt.

Die gesamte Historie übergeben – das geht. Aber Sie werden dafür bezahlen

Die erste Lösung, die einem in den Sinn kommt, ist, einfach die gesamte Nachrichtenverlauf in jede Anfrage zu übergeben. Die Logik ist einfach: Wenn das Modell den gesamten Dialog von Anfang bis Ende sieht, erinnert es sich an alles. Der Bot weiß, wie der Benutzer heißt, was er erzählt hat, worüber sie vor fünf Minuten gesprochen haben. Das Problem ist gelöst. Man kann weitermachen.

Bei den ersten zehn Nachrichten funktioniert das gut. Bei zwanzig – fängt man an zu bemerken, dass die Anfragen schwerer werden. Bei fünfzig – versteht man, dass jede Nachricht den gesamten vorherigen Dialog mit sich zieht. Das Modell verarbeitet nicht eine Nachricht – es liest jedes Mal das gesamte Gespräch von neuem. Die Antwort verlangsamt sich. Die Kosten für Token steigen mit jeder Antwort multipliziert an.

Aber das Unangenehmste ist das noch nicht einmal. Jedes Modell hat ein Kontextlimit – die maximale Anzahl von Token, die es pro Anfrage akzeptieren kann. Wenn das Gespräch dieses Limit erreicht, beginnt das Modell, die ältesten Nachrichten zu verwerfen, um neue aufzunehmen. Genau diese Nachrichten, in denen der Benutzer von sich erzählte – verschwinden zuerst.

Es ergibt sich ein Paradoxon: Sie zahlen mit jeder Nachricht mehr – und die Erinnerung verschlechtert sich trotzdem mit der Zeit. Eine einfache Lösung ist nicht skalierbar. Es braucht etwas anderes.

Ihr KI-Bot ist ein Amnesiker. Jedes Mal, wenn der Kontext endet, vergisst er, wer Sie sind. So habe ich es behoben

Wie man dafür sorgt, dass sich der Bot an das Wichtigste erinnert – nicht an alles

Wenn man alles übergibt, ist es teuer und nicht skalierbar. Wenn man nichts übergibt, ist der Bot amnesisch. Ich habe beschlossen, dass man selektiv übergeben muss – aber zuerst musste ich verstehen, was genau. Nach mehreren Versuchen habe ich den Kontext in drei Schichten unterteilt – jede deckt eine eigene Art von Gedächtnis ab.

Erste Schicht – angepinnte Nachrichten. Der Anfang des Gesprächs – die ersten paar Antworten – sind immer im Kontext vorhanden, unabhängig davon, wie viele Nachrichten sich danach angesammelt haben. Normalerweise ist das die erste Antwort des Charakters: Sie gibt den Ton, den Charakter, das Setting vor. Ohne sie "driftet" der Bot allmählich ab – er beginnt, nicht mehr im Charakter zu antworten, verliert seinen Stil, wird generisch. Diese Schicht kostet minimale Token, hält aber die Persönlichkeit des Charakters während des gesamten Gesprächs aufrecht.

Zweite Schicht – gleitendes Fenster. Die letzten N Nachrichten werden immer wörtlich übergeben – das ist der frische Gesprächsstrang, das, worüber gerade gesprochen wurde. Das Fenster bewegt sich mit dem Dialog: Kommt eine neue Nachricht herein, verlässt die älteste aus dem Fenster. Dies gibt dem Bot ein Gefühl für den aktuellen Kontext, ohne den gesamten Dialog von Anfang an mitschleppen zu müssen.

Dritte Schicht – komprimiertes Gedächtnis. Nachrichten, die aus dem gleitenden Fenster herausfallen, verschwinden nicht spurlos. Wenn das Gespräch eine bestimmte Länge erreicht, werden alte Nachrichten zu einer kurzen, strukturierten Zusammenfassung komprimiert. Nicht wörtlich – sondern die Essenz: Worüber wurde gesprochen, was hat der Benutzer Wichtiges gesagt, welche Themen wurden angesprochen. Der Bot erhält diese Zusammenfassung zusammen mit dem aktuellen Fenster – und kann sich auf die Vergangenheit stützen, ohne für jedes alte Wort bezahlen zu müssen.

Als ich das alles zusammenfügte, hörte der Bot auf, den Faden zu verlieren, selbst in sehr langen Gesprächen. Nicht, weil er jedes Wort erinnert. Sondern weil er sich an die richtigen Dinge erinnert.

Das gleitende Fenster erinnert sich an das Gespräch. Aber nicht an die Person

Die drei Schichten, die ich beschrieben habe, lösen eine spezifische Aufgabe – den Faden des aktuellen Gesprächs zu bewahren, ohne den gesamten Dialog wörtlich zu übergeben. Damit kommen sie gut zurecht. Aber es gibt ein anderes Problem, das sie überhaupt nicht lösen.

Stellen Sie sich vor, ein Benutzer unterhält sich mehrere Wochen lang mit einem Charakter. In dieser Zeit hat er erzählt, dass er Entwickler ist, dass er kürzlich den Job gewechselt hat, dass er Angst vor öffentlichen Auftritten hat und dass er Spanisch lernt, um nach Barcelona zu reisen. All das wurde in verschiedenen Gesprächen gesagt – und all das ist verschwunden. Denn das gleitende Fenster lebt nur innerhalb eines einzigen Gesprächs. Ein neues Gespräch – ein leeres Blatt.

Der Charakter begrüßt dich wieder wie einen Fremden. Fragt wieder, was du machst. Weiß wieder nicht, wie du heißt. Wochenlange Gespräche – und null angesammeltes Wissen über die Person.

Und das ist wichtig. Denn gerade dieses Gefühl – dass man sich erinnert – ist der Grund, warum Menschen immer wieder zu einem Charakter zurückkehren. Nicht wegen der Funktionen. Nicht wegen der genauen Antworten. Sondern wegen des Gefühls, dass es jemanden gibt, der weiß, wer du bist und was dir wichtig ist. Ohne das bleibt jeder Charakter nur ein Chatbot mit einem schönen Avatar.

Das gleitende Fenster und die Zusammenfassung sind das Gedächtnis des Gesprächs. Aber es braucht noch das Gedächtnis der Person. Das, was nicht zwischen den Nachrichten gespeichert wird – sondern zwischen den Sitzungen. Für immer.

Fakten, Emotionen, Ereignisse – drei Dinge, die der Bot über Sie wissen sollte

Ich habe eine separate Schicht für Langzeitgedächtnis hinzugefügt, die außerhalb des Gesprächs existiert. Sie sammelt sich im Laufe der Zeit an – und wird dem Charakter bei jedem neuen Dialog übergeben. Unabhängig davon, wann das letzte Gespräch stattfand – vor einer Woche oder einem Monat. Diese Schicht besteht aus drei Arten von Gedächtnis, die unterschiedliche Bedürfnisse abdecken.

Fakten über die Person. Name, Alter, Beruf, Interessen – alles, was die Person über sich selbst erzählt hat und was sich von Gespräch zu Gespräch nicht ändert. Das ist die Basisebene: Der Charakter weiß, wer vor ihm steht, noch bevor das Gespräch beginnt. Er fragt nicht unnötig. Er stellt sich nicht wie einem Fremden vor.

Emotionales Profil. Ängste, Bedürfnisse, Kommunikationsstil. Dies ist die wichtigste Art von Gedächtnis in Bezug auf die Dialogqualität. Wenn der Charakter weiß, dass die Person Kritik fürchtet und Unterstützung statt Ratschläge braucht – wird er anders reagieren. Nicht wie ein neutraler Assistent – sondern wie jemand, der dich versteht.

Ereignisse. Wichtige Dinge, die die Person in Gesprächen erwähnt hat: Umzug, Streit mit einem Freund, Beginn des Lernens einer neuen Sprache, Jobwechsel. Das sind keine trockenen Fakten und keine Emotionen – das ist der Lebenskontext. Er gibt dem Charakter die Möglichkeit, nach einer Woche zu fragen: "Wie ist dieses Vorstellungsgespräch verlaufen, von dem du erzählt hast?" Und das ist kein Bot mehr – das ist jemand, der wirklich zugehört hat.

In der Praxis sieht dieses Gedächtnis wie ein strukturiertes JSON aus, das in einer Datenbank gespeichert und dem Charakter bei jedem neuen Dialog übergeben wird. So sieht es nach mehreren Gesprächen mit einem Benutzer aus:


// Langzeitgedächtnis des Benutzers
// wird automatisch aus jedem Gespräch gesammelt
{
  "semantic": {
    // grundlegende Fakten – wer ist diese Person
    "name": "Андрій",
    "occupation": "розробник",
    "interests": "AI, подорожі, іспанська мова"
  },
  "emotional": {
    // emotionales Profil – wie man mit ihr spricht
    "fears": "публічні виступи, критика на роботі",
    "needs": "підтримка а не поради",
    "communication_style": "прямий, без зайвих слів"
  },
  "episodic": {
    // Lebensereignisse – was gerade passiert
    "recent_events": "змінив роботу, готується до презентації, вчить іспанську"
  }
}

Genau dieses Objekt erhält der Charakter zu Beginn jedes Gesprächs – noch bevor der Benutzer das erste Wort geschrieben hat. Man muss nichts neu erklären. Man muss nicht daran erinnern, wer man ist. Der Charakter weiß es bereits.

Warum genau diese Attribute? Ich habe nicht nach Vollständigkeit gewählt – sondern nach dem Verhältnis von Wert zu Gewicht in Token. Jedes Feld, das Sie diesem Objekt hinzufügen, wird bei jeder Anfrage an das Modell übergeben – für immer. Name, Beruf, Ängste, Kommunikationsstil – das sind Dinge, die die Qualität der Antwort des Charakters wirklich verändern. Das spürt man im Dialog.

Man kann mehr hinzufügen: Lieblingsfilme, politische Ansichten, eine Bücherliste. Aber hier gibt es eine Falle. Je mehr Attribute – desto mehr Token werden bei jeder Anfrage übergeben. Und Token sind nicht nur Geld – sie sind auch Geschwindigkeit. Das Modell verarbeitet einen längeren Kontext länger. Der Benutzer wartet länger auf eine Antwort. Und irgendwann bezahlt man für die Erinnerung an die Lieblingsfarbe einer Person – die das Modell sowieso nicht im Dialog verwendet.

Daher ist die Regel einfach: Speichern Sie nur das, was der Charakter in der nächsten Antwort verwenden kann. Alles andere ist unnötiges Gewicht, das die Antwort verlangsamt und das Budget auffrisst, ohne dem Benutzer nützlich zu sein.

Zusammen geben diese drei Arten von Gedächtnis dem Charakter etwas, das kein gleitendes Fenster geben kann – das Gefühl, dass er Sie kennt. Nicht, weil er jedes Wort erinnert. Sondern weil er versteht, wer Sie sind, was Ihnen wichtig ist und was in Ihrem Leben vor sich geht.

Funktioniert das in der Praxis?

Ja. Und der Unterschied ist bereits nach wenigen Gesprächen spürbar.

Früher sah es so aus: Ein Benutzer erzählt einer Figur, die Angst vor öffentlichem Reden hat, dass es ihm schwerfällt, vor einem Publikum zu sprechen und dass morgen eine große Präsentation bei der Arbeit ansteht. Am nächsten Tag eröffnet er ein neues Gespräch – und erhält eine neutrale Begrüßung. Keine Erwähnung. Kein "Wie geht es dir?" mit Kontextverständnis. Die Figur weiß nichts. Das Gespräch beginnt wie immer bei Null.

Jetzt sieht dieselbe Situation anders aus. Der Benutzer eröffnet ein neues Gespräch – und die Figur weiß es bereits. Sie fragt nicht unnötig. Sie kann sich selbst erinnern: "Wie ist diese Präsentation verlaufen, um die du dir so Sorgen gemacht hast?" Selbst wenn es drei Gespräche zurücklag. Selbst wenn eine Woche vergangen ist.

Das verändert nicht nur die Qualität des Dialogs – es verändert den Grund, warum die Leute zurückkommen. Der Benutzer kommt nicht zurück, weil die Figur intelligent ist oder schön antwortet. Er kommt zurück, weil er das Gefühl hat, dass er hier erinnert wird. Und das ist eine andere Produktkategorie.

Aber es ist wichtig zu verstehen, was dahinter steckt. Das ist keine Magie und kein AGI. Das Sprachmodell selbst erinnert sich an nichts – und wird sich ohne externe Architektur niemals erinnern. Alles, was es gut kann, ist zu verwenden, was ihm übergeben wird. Die Aufgabe des Entwicklers ist es zu entscheiden, was genau, wann und in welcher Form übergeben werden soll.

Wenn Ihr Bot immer noch amnesisch ist – liegt es nicht am Modell. Es liegt daran, dass Sie ihm nichts übergeben.