\n\n\n\n Meine KI erinnert sich: Beständiger Kontext über Aufgaben hinweg erreichen Agent 101 \n

Meine KI erinnert sich: Beständiger Kontext über Aufgaben hinweg erreichen

📖 12 min read2,384 wordsUpdated Mar 29, 2026

Hallo, angehender Agent! Emma hier, zurück auf agent101.net, und heute werfen wir uns kopfüber in etwas, das seit Wochen in meinem Kopf (und meiner Entwicklungsumgebung) herumspukt: wie du deinen KI-Agenten dazu bringst, tatsächlich *Dinge zu behalten*. Nicht nur für eine Aufgabe, sondern diesen Kontext, diese Erkenntnisse, diese Persönlichkeit über mehrere Interaktionen hinweg zu tragen. Denn seien wir ehrlich, ein vergesslicher Agent ist nur ein schickes Skript, oder?

Das aktuelle Datum ist der 25. März 2026, und die Welt der KI-Agenten bewegt sich mit Warpgeschwindigkeit. Vor ein oder zwei Jahren waren wir beeindruckt von einem Chatbot, der fünf Minuten lang ein anständiges Gespräch führen konnte. Jetzt? Wir erwarten von unseren Agenten, dass sie unsere digitalen Begleiter, unsere Forschungsassistenten, unsere Code-Reviewer sind, und sie sollten sich so anfühlen, als würden sie uns kennen, oder zumindest wissen, was sie tun. Es geht nicht darum, eine vollwertige AGI zu erstellen (noch nicht!), sondern darum, deine alltäglichen, praktischen KI-Agenten nützlicher, intelligenter und weniger wie Dorie aus Findet Nemo zu gestalten.

Ich habe mit verschiedenen Agenten-Frameworks experimentiert, von LangChain bis AutoGen, und eine ständige Hürde für Anfänger (und ehrlich gesagt auch für mich manchmal!) ist das effektive Management von Zustand und Gedächtnis. Oft wird das in grundlegenden Tutorials nur am Rande behandelt, die sich meist auf eine einzelne Aufforderung-Antwort-Schleife konzentrieren. Aber wenn du möchtest, dass dein Agent auf seinen vorherigen Aktionen aufbaut, aus seinen Fehlern lernt oder sogar nur deinen Namen nach der ersten Interaktion behält, brauchst du eine Strategie.

Warum Vergisst Mein Agent, Worüber Wir Gerade Gesprochen Haben?

Stell dir Folgendes vor: Ich versuchte, einen einfachen Agenten zu bauen, um mir beim Brainstorming für Blogbeiträge zu helfen. Mein anfängliches Setup war ziemlich einfach: Ich gab ihm ein Thema und er spuckte Ideen aus. Großartig für einmalige Aufforderungen. Aber dann sagte ich: „Okay, jetzt erweiter Idee Nummer drei,“ und er schaute mich (metaphorisch gesprochen) mit einem leeren Blick an und fragte: „Welche Idee Nummer drei?“ Das war frustrierend! Es bedeutete, dass ich ständig den Kontext neu bereitstellen musste, was die Interaktion umständlich und ineffizient machte.

Diese „Vergesslichkeit“ kommt von der zustandslosen Natur der meisten großen Sprachmodelle (LLMs) im Kern. Jeder API-Aufruf wird oft als frische Anfrage behandelt. Es erinnert sich nicht von selbst an den Gesprächsverlauf oder die Ergebnisse früherer Aufrufe. Agenten-Frameworks existieren, um diese Aufrufe zu orchestrieren, aber du, als Entwickler, bist dafür verantwortlich zu entscheiden, welche Informationen weitergegeben werden. Hier kommt das Gedächtnis ins Spiel.

Die Zwei Großen Kategorien des Agentengedächtnisses: Kurzzeit- und Langzeitgedächtnis

Wenn wir über das „Erinnern“ eines KI-Agenten sprechen, beziehen wir uns im Allgemeinen auf zwei Hauptarten von Gedächtnis, ähnlich unserem eigenen:

Kurzzeitgedächtnis: Der Gesprächspuffer

Dies ist die einfachste Art des Gedächtnisses und das, womit die meisten Anfänger beginnen sollten. Das Kurzzeitgedächtnis dreht sich alles um das Erinnern an die unmittelbare Vergangenheit – das aktuelle Gespräch. Denk daran wie an dein Arbeitsgedächtnis, wenn du mit einem Freund sprichst. Du erinnerst dich daran, was gerade gesagt wurde, wer was gesagt hat und den allgemeinen Verlauf der Diskussion.

Für einen KI-Agenten bedeutet dies normalerweise, den kürzlichen Austausch von Nachrichten (Aufforderungen und Antworten) zu speichern und sie zusammen mit jeder neuen Aufforderung an das LLM zu senden. Die meisten Agenten-Frameworks bieten einfache Möglichkeiten, dies zu implementieren.

Praktisches Beispiel: LangChains ConversationBufferMemory

Schauen wir uns ein einfaches Python-Beispiel mit LangChain an. Das zeigt, wie man eine einfache Gesprächshistorie beibehält.


from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

# Initialisiere dein LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

# Initialisiere das Gedächtnis
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# Definiere eine einfache Aufforderungsvorlage
template = """Du bist ein freundlicher KI-Assistent.
Aktuelles Gespräch:
{chat_history}
Mensch: {input}
KI:"""
prompt = PromptTemplate(input_variables=["chat_history", "input"], template=template)

# Erstelle die Gesprächskette
conversation_chain = LLMChain(
 llm=llm,
 prompt=prompt,
 verbose=True, # Hilft zu sehen, was passiert
 memory=memory
)

# Erste Interaktion
print("--- Interaktion 1 ---")
response1 = conversation_chain.invoke({"input": "Hallo, ich heiße Emma. Wie heißt du?"})
print(f"KI: {response1['text']}")

# Zweite Interaktion, beachte, wie 'chat_history' automatisch übergeben wird
print("\n--- Interaktion 2 ---")
response2 = conversation_chain.invoke({"input": "Kannst du mir eine interessante Tatsache über KI erzählen?"})
print(f"KI: {response2['text']}")

# Dritte Interaktion, der Agent erinnert sich an meinen Namen!
print("\n--- Interaktion 3 ---")
response3 = conversation_chain.invoke({"input": "Danke! Übrigens, wie alt ist Emma?"})
print(f"KI: {response3['text']}")

print("\n--- Endgültiger Gedächtniszustand ---")
print(memory.load_memory_variables({}))

Was passiert hier?

  • `ConversationBufferMemory` speichert die Nachrichten, während sie geschehen.
  • Die `PromptTemplate` enthält eine `{chat_history}`-Variable.
  • Wenn `conversation_chain.invoke()` aufgerufen wird, injiziert LangChain automatisch die gespeicherte `chat_history` in die Aufforderung, bevor sie an das LLM gesendet wird.

Das ist großartig für kurze Gespräche. Aber was, wenn dein Gespräch lange dauert? LLMs haben Kontextfenster (eine Begrenzung, wie viel Text sie gleichzeitig verarbeiten können). Wenn deine Chat-Historie zu lang wird, stößt du entweder auf diese Grenze und erhältst einen Fehler, oder die älteren Teile des Gesprächs werden gekürzt. Hier kommen fortgeschrittenere Strategien für Kurzzeitgedächtnis ins Spiel, wie `ConversationBufferWindowMemory` (merkt sich nur die letzten N Interaktionen) oder `ConversationSummaryBufferMemory` (fasst ältere Teile des Gesprächs zusammen, um Platz zu sparen).

Langzeitgedächtnis: Wissensdatenbank und Vektorspeicher

Das Kurzzeitgedächtnis dreht sich um den unmittelbaren Chat. Das Langzeitgedächtnis befasst sich mit persistentem Wissen, Fakten, früheren Erfahrungen oder sogar einer erlernten „Persönlichkeit“, die ein Agent über Sitzungen oder sogar über verschiedene Aufgaben hinweg behalten sollte. Hier wird es wirklich interessant und mächtig.

Mein Beispiel für einen Agenten zum Brainstorming von Blogbeiträgen ist ein perfekter Fall für Langzeitgedächtnis. Ich möchte, dass er meinen bevorzugten Stil, meine Nische (KI-Agenten für Anfänger) und sogar frühere erfolgreiche Themen merkt, damit er nicht jedes Mal etwas völlig Irrelevantes vorschlägt. Ich möchte nicht jeden einzelnen Tag agent101.net erklären müssen!

Die gängigste Methode zur Implementierung von Langzeitgedächtnis besteht derzeit aus zwei wichtigen Komponenten:

  1. Embedding-Modelle: Diese Modelle wandeln Text (dein Wissen, frühere Interaktionen usw.) in numerische Vektoren um. Texte mit ähnlichen Bedeutungen haben Vektoren, die numerisch „nahe“ beieinander liegen.
  2. Vektorspeicher (oder Vektordatenbanken): Dies sind spezialisierte Datenbanken, die entwickelt wurden, um diese numerischen Vektoren effizient zu speichern und zu durchsuchen. Wenn du eine neue Anfrage oder einen neuen Kontext hast, wandelst du ihn in einen Vektor um und suchst dann im Vektorspeicher nach den ähnlichsten vorhandenen Vektoren. Der mit diesen ähnlichen Vektoren verbundene Text wird dann abgerufen und kann in deine Aufforderung injiziert werden.

Dieser Prozess wird oft als Retrieval Augmented Generation (RAG) bezeichnet. Du rufst relevante Informationen aus deinem Langzeitgedächtnis ab und ergänzst die Aufforderung des LLM damit.

Praktisches Beispiel: Verwendung eines Vektorspeichers für die Agentenpersönlichkeit

Stell dir vor, wir möchten, dass unser Agent eine konsistente „Persona“ hat oder auf eine Wissensdatenbank über unsere Marke zugreift. Wir können diese Informationen in einem Vektorspeicher speichern.


from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.prompts import PromptTemplate

# 1. Definiere unser 'langfristiges Wissen' (z. B. Agenten-Persona, Markenrichtlinien)
# In einem echten Szenario würde dies aus einer Datei, Datenbank usw. geladen werden.
brand_persona_info = """
Der Name des Agenten ist Emma. Sie schreibt für agent101.net.
Ihr Schreibstil ist freundlich, praktisch und konzentriert sich darauf, Anfängern zu helfen, KI-Agenten zu verstehen.
Sie verwendet Anekdoten und vermeidet übermäßig technische Fachbegriffe, wo es möglich ist.
Ihr Hauptpublikum besteht aus Einzelpersonen, die neu bei KI-Agenten sind oder nach praktischen Umsetzungstipps suchen.
Wichtige Themen sind: LangChain, AutoGen, Prompt-Engineering für Agenten, Speichermanagement, Werkzeugnutzung.
Sie zielt darauf ab, komplexe KI-Konzepte zu entmystifizieren.
"""

# 2. Teile den Text in handhabbare Abschnitte (für größere Dokumente)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
docs = text_splitter.create_documents([brand_persona_info])

# 3. Erstelle Embeddings und speichere sie in einem Vektorspeicher
# FAISS ist eine gute lokale Option für Anfänger. Für die Produktion würden Sie Pinecone, Chroma usw. verwenden.
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embeddings)

# 4. Initialisiere das LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.5)

# 5. Erstelle einen Retriever aus dem Vektorspeicher
retriever = vectorstore.as_retriever()

# 6. Definiere eine benutzerdefinierte Prompt-Vorlage für die RAG-Kette
# Wir sagen dem LLM ausdrücklich, den bereitgestellten Kontext zu verwenden.
custom_prompt_template = """Nutze den folgenden Kontext, um die Frage des Benutzers zu beantworten.
Wenn du die Antwort basierend auf dem Kontext nicht weißt, sage einfach, dass du es nicht weißt, versuche nicht, eine Antwort zu erfinden.

Kontext:
{context}

Frage: {question}
"""
custom_prompt = PromptTemplate(
 template=custom_prompt_template,
 input_variables=["context", "question"]
)

# 7. Erstelle die RAG-Kette
qa_chain = RetrievalQA.from_chain_type(
 llm=llm,
 chain_type="stuff", # 'stuff' bedeutet, alle abgerufenen Dokumente in den Prompt einzufügen
 retriever=retriever,
 return_source_documents=True,
 chain_type_kwargs={"prompt": custom_prompt}
)

# Jetzt lass uns den Agenten abfragen
print("--- Anfrage 1 ---")
query1 = "Wer bist du und worüber schreibst du?"
result1 = qa_chain.invoke({"query": query1})
print(f"KI: {result1['result']}")

print("\n--- Anfrage 2 ---")
query2 = "Was ist Emmas bevorzugter Schreibstil?"
result2 = qa_chain.invoke({"query": query2})
print(f"KI: {result2['result']}")

print("\n--- Anfrage 3 (Außerhalb des Wissens) ---")
query3 = "Was ist die Hauptstadt von Frankreich?" # Diese Information befindet sich nicht in unseren Persona-Informationen
result3 = qa_chain.invoke({"query": query3})
print(f"KI: {result3['result']}") # Es sollte trotzdem antworten, da das LLM Allgemeinwissen hat,
 # aber wenn wir sichergestellt haben wollen, dass STRICTLY *nur* Kontext verwendet wird, würden wir den Prompt anpassen.

# Wichtiger Hinweis: Wenn du möchtest, dass der Agent ausschließlich den bereitgestellten Kontext befolgt 
# und sich weigert zu antworten, wenn der Kontext die Antwort nicht enthält, musst du in deinem custom_prompt_template sehr 
# deutlich sein. Zum Beispiel: "Basierend AUSSCHLIESSLICH auf dem folgenden Kontext..."

Aufschlüsselung des RAG-Beispiels:

  • Wir haben unseren “Persona”-Text genommen.
  • Wir haben ihn in Abschnitte unterteilt (wichtig für größere Dokumente).
  • Wir haben `OpenAIEmbeddings` verwendet, um diese Abschnitte in numerische Vektoren umzuwandeln.
  • `FAISS` (ein lokaler Vektorspeicher) hat diese Vektoren gespeichert.
  • Als wir eine Frage stellten, suchte der `retriever` in `FAISS` nach den relevantesten Textabschnitten.
  • Diese relevanten Abschnitte wurden dann in unsere `custom_prompt_template` als `{context}` eingefügt.
  • Schließlich verwendete das LLM diesen erweiterten Prompt, um die Frage zu beantworten, wodurch es so wirkte, als ob es seine Persona “erinnerte”.

Dieser Ansatz ist unglaublich flexibel. Du kannst ihn verwenden für:

  • Speichern von Dokumenten (PDFs, Artikel, interne Wikis).
  • Erinnern an Benutzerpräferenzen im Laufe der Zeit.
  • Aufrechterhalten der “Persönlichkeit” eines Agenten oder spezifische Anweisungen.
  • Speichern vergangener erfolgreicher Agentenaktionen oder Planungsstrategien.

Mein persönlicher Ansatz zum Einstieg in das Gedächtnis

Als ich anfing, versuchte ich, alles von Grund auf neu zu erstellen, weil ich dachte, ich sei klug. Ich lernte schnell, dass die Verwendung etablierter Frameworks wie LangChain oder AutoGen (das seine eigenen Gedächtniskonzepte hat, oft über die Nachrichtenhistorie des Agenten) der richtige Weg ist. Sie übernehmen viel des Boilerplate-Codes für dich.

Mein Rat für Anfänger:

  1. Beginne mit `ConversationBufferMemory`. Es ist das einfachste und lässt deine Agenten sofort gesprächiger wirken.
  2. Verstehe die Grenzen des Kontextfensters. Wenn deine Gespräche länger werden, wechsle zu `ConversationBufferWindowMemory` oder `ConversationSummaryBufferMemory`, um eine Kürzung oder übermäßige API-Kosten zu vermeiden.
  3. Sprich nicht gleich in komplexe RAG-Systeme ein. Gewöhne dich zuerst mit einfachem Chat-Gedächtnis an. Sobald du das Bedürfnis nach persistentem Wissen oder spezifischem Faktenabruf siehst, erkunde Vektorspeicher.
  4. Sei achtsam beim Prompt-Engineering für RAG. Wie du das LLM anweist, den abgerufenen Kontext zu verwenden, ist entscheidend. Experimentiere mit Formulierungen wie „Verwende NUR den folgenden Kontext“ oder „Ergänze dein Wissen mit dem folgenden Kontext.“
  5. Trenne kurzfristige und langfristige Bedürfnisse. Versuche nicht, die gesamte Lebensgeschichte deines Agenten in die `chat_history` zu stopfen. Reserviere `chat_history` für die aktuelle Interaktion und verwende RAG für alles andere.

Eine Herausforderung, der ich gegenüberstand, war das Management des Gedächtnisses über mehrere *Sitzungen*. Wenn mein Agent neu startete, war sein `ConversationBufferMemory` weg. Für wirklich persistentes Kurzzeitgedächtnis (z. B. wenn du ein Gespräch dort fortsetzen möchtest, wo du es gestern beendet hast), musst du dein `memory`-Objekt serialisieren und speichern (z. B. als JSON-Datei oder in einer Datenbank) und es laden, wenn der Agent hochfährt. Das fügt eine weitere Komplexitätsstufe hinzu, aber es ist absolut machbar, sobald du die Grundlagen gemeistert hast.

Umsetzbare Erkenntnisse für dein nächstes Agentenprojekt

Du hast die Theorie, jetzt fang an, zu bauen! Hier ist, was ich möchte, dass du als Nächstes tust:

  • Wähle ein bestehendes einfaches Agentenprojekt (oder starte ein neues), das du erstellt hast und das derzeit „vergisst“.
  • Implementiere `ConversationBufferMemory`, um ihm grundlegendes Kurzzeitgedächtnis zu geben. Sieh dir an, wie viel natürlicher das Gespräch wird.
  • Denke darüber nach, welches persistente Wissen dein Agent benötigen könnte. Ist es ein spezifischer Satz von Anweisungen? Eine persönliche Vorliebe? Eine Wissensdatenbank?
  • Experimentiere mit einem einfachen RAG-Setup. Nimm einen kleinen Textabschnitt (wie die gewünschte Persona deines Agenten oder einige Fakten) und speichere ihn in einem lokalen `FAISS`-Vektorspeicher. Sieh dir an, ob dein Agent diese Informationen abrufen und verwenden kann.
  • Achte auf deine Token-Nutzung! Denke daran, dass das Senden langer Chatverläufe oder vieler abgerufener Dokumente die Anzahl deiner Tokens erhöht, was sich direkt auf die Kosten und die Latenz auswirkt. Optimiere deine Gedächtnisstrategie, während du fortfährst.

Das Gedächtnis deines KI-Agenten zu aktivieren ist nicht nur ein technisches Detail; es verwandelt eine kalte, transaktionale Interaktion in etwas, das wirklich hilfreich und intelligent erscheint. Es ist der Unterschied zwischen einem Werkzeug und einem echten Assistenten. Lass deine Agenten klüger werden und vergiss nicht, deinen Fortschritt in den agent101.net Foren zu teilen!

Verwandte Artikel

🕒 Published:

🎓
Written by Jake Chen

AI educator passionate about making complex agent technology accessible. Created online courses reaching 10,000+ students.

Learn more →

Leave a Comment

Your email address will not be published. Required fields are marked *

Browse Topics: Beginner Guides | Explainers | Guides | Opinion | Safety & Ethics

See Also

BotsecAgntzenAgntdevAgntwork
Scroll to Top