Memory Bank verwaltet automatisch einen Versionsverlauf Ihrer Erinnerungen über Ressourcen zur Überarbeitung von Erinnerungen. Jedes Mal, wenn eine Erinnerung erstellt oder geändert wird, wird eine neue unveränderliche Version gespeichert. So ist nachvollziehbar, wie sich Informationen entwickeln und was in jedem Schritt extrahiert wurde.
In diesem Dokument wird der Lebenszyklus von Erinnerungen und ihren Überarbeitungen erläutert. Außerdem werden Vorgänge wie das Auflisten, Abrufen und Zurücksetzen von Überarbeitungen beschrieben.
Weitere Informationen zum Generieren von Erinnerungen finden Sie unter Erinnerungen generieren.
Lebenszyklus einer Erinnerung und ihrer Überarbeitungen

Erinnerungen können entweder direkt (mit CreateMemory, UpdateMemory oder DeleteMemory) oder dynamisch (mit GenerateMemories) erstellt, aktualisiert oder gelöscht werden. Speicherüberarbeitungsressourcen bieten einen vollständigen Versionsverlauf einer Speicherressource für alle Mutationsvorgänge. Bei jeder Erstellung oder Änderung des Speichers wird automatisch eine neue, unveränderliche Überarbeitung gespeichert. So können Sie nachvollziehen, wie sich eine Erinnerung entwickelt hat und (beim Merken von Informationen), welche spezifischen Informationen in jedem Schritt extrahiert und konsolidiert wurden.
Jeder Speicherressource sind eine oder mehrere untergeordnete Speicherversionsressourcen zugeordnet:
Memory-Ressourcen spiegeln immer den aktuellen, konsolidierten Zustand der Informationen wider. Ein einzelner Speicher kann abgeleitete Daten aus mehreren Anfragen und Datenquellen enthalten.Memory( create_time=datetime.datetime(...), fact='This is my current memory content after consolidation', name='projects/.../locations/.../reasoningEngines/../memories/...', scope={ 'my_scope_key': 'my_scope_value' }, topics=[ MemoryTopicId( managed_memory_topic=<ManagedTopicEnum.USER_PERSONAL_INFO: 'USER_PERSONAL_INFO'> ), ], update_time=datetime.datetime(...) )MemoryRevisions-Ressourcen stellen die bisherigen Zustände des übergeordneten Speichers dar. Jede Überarbeitung ist ein Snapshot des Speichers bei einem Mutationsereignis. Wenn ein Memory mitGenerateMemoriesgeändert wurde, enthält die Überarbeitung auch die Informationen, die aus der Datenquelle (extracted_memories) extrahiert wurden, bevor sie mit dem vorhandenen Inhalt des Memory zusammengeführt wurden.MemoryRevision( create_time=datetime.datetime(...), expire_time=datetime.datetime(...), extracted_memories=[ IntermediateExtractedMemory( fact='This information was extracted from my data source' ), ], fact='This is my current memory content after consolidation', name='projects/.../locations/.../reasoningEngines/.../memories/.../revisions/...' )Überarbeitungen von gemerkten Informationen sind standardmäßig aktiviert. Informationen zum Deaktivieren von Erinnerungsüberarbeitungen finden Sie unter Erinnerungsüberarbeitungen deaktivieren.
Erstellung von Erinnerungen
Gemerkte Informationen können entweder direkt mit CreateMemory oder dynamisch mit GenerateMemories erstellt werden. Beim Merken von Informationen wird eine gemerkte Information erstellt, wenn es keine vorhandenen gemerkten Informationen gibt, die ähnliche Informationen für denselben Bereich abdecken:
# Direct creation using CreateMemory
client.agent_engines.memories.create(name=memory_bank_name, ...)
# Dynamic creation using GenerateMemory
client.agent_engines.memories.generate_memories(name=memory_bank_name, ...)
Wenn eine Erinnerung erstellt wird, werden eine einzelne Memory-Ressource und ein untergeordnetes MemoryRevision-Element erstellt:
client.agent_engines.memories.get(name=memory_name)
"""
Memory(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789",
fact="This is my original fact.",
...
)
"""
list(client.agent_engines.memories.revisions.list(name=memory_name))
"""
[
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/123",
fact="This is my original fact",
...
)
]
"""
Gemerkte Information aktualisiert
Erinnerungen können entweder direkt mit UpdateMemory oder dynamisch mit GenerateMemories aktualisiert werden. Beim Merken von Informationen werden diese dynamisch aktualisiert, wenn beim Konsolidierungsprozess festgestellt wird, dass die neuen Informationen für denselben Bereich doppelt, ergänzend oder widersprüchlich zu allen vorhandenen Erinnerungen sind.
# Direct update using UpdateMemory
client.agent_engines.memories.update(name=memory_name, ...)
# Dynamic update using GenerateMemories
client.agent_engines.memories.generate_memories(name=memory_bank_name, ...)
Wenn ein Memory aktualisiert wird, wird die vorhandene Memory-Ressource aktualisiert und ein neues untergeordnetes MemoryRevision-Element wird erstellt.
client.agent_engines.memories.get(name=memory_name)
"""
Memory(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789",
fact="This is my updated fact.",
...
)
"""
list(client.agent_engines.memories.revisions.list(name=memory_name))
"""
[
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/456",
fact="This is my updated fact",
...
),
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/123",
fact="This is my original fact",
...
)
]
"""
Löschen von gemerkten Informationen
Erinnerungen können entweder direkt mit DeleteMemory oder dynamisch mit GenerateMemories erstellt werden. Beim Merken von Informationen werden Erinnerungen dynamisch gelöscht, wenn im Konsolidierungsprozess entschieden wird, dass die neuen Informationen die vorhandenen Informationen für denselben Bereich ungültig machen.
# Direct deletion using UpdateMemory
client.agent_engines.memories.delete(name=memory_name, ...)
# Dynamic delete using GenerateMemories
client.agent_engines.memories.generate_memories(name=memory_bank_name, ...)
Wenn eine Erinnerung gelöscht wird, wird die vorhandene Memory-Ressource gelöscht und ein neues untergeordnetes MemoryRevision-Element erstellt. Das fact in der letzten Gedächtnisüberarbeitung ist leer, da es eine Löschmutation widerspiegelt.
client.agent_engines.memories.get(name=memory_name)
"""
404 Not Found.
"""
list(client.agent_engines.memories.revisions.list(name=memory_name))
"""
[
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/789",
fact="",
...
),
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/456",
fact="This is my updated fact",
...
),
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/123",
fact="This is my original fact",
...
)
]
"""
Die Überarbeitungen des Kinderspeichers sind nur bis zu 48 Stunden nach dem Löschen des Elternspeichers zugänglich. Während dieses Wiederherstellungszeitraums können Sie weiterhin Ihre Erinnerungsüberarbeitungen ansehen und Ihre Erinnerung wiederherstellen, indem Sie ein Rollback zu einer früheren Überarbeitung durchführen.
Vorgänge zur Überarbeitung des Arbeitsspeichers
In diesem Abschnitt wird beschrieben, wie Sie Speicherüberarbeitungen prüfen und ein Rollback eines Speichers auf eine vorherige Überarbeitung durchführen können.
Versionen auflisten
Verwenden Sie ListMemoryRevisions, um alle Überarbeitungen eines Memory zurückzugeben.
list(client.agent_engines.memories.revisions.list(name=MEMORY_NAME))
Ersetzen Sie Folgendes:
MEMORY_NAME: Ressourcenname des Speichers im Formatprojects/.../locations/.../reasoningEngines/.../memories/...
Beim Generieren von Erinnerungen können Sie Überarbeitungs-Labels angeben, die auf die zugehörigen Überarbeitungen angewendet werden. Labels sind beliebige Schlüssel/Wert-Paare. Sie können beispielsweise Überarbeitungen mit einer ID der Datenquelle kennzeichnen, die zum Generieren des Memory verwendet wurde, und dann Überarbeitungen nach diesem Label filtern:
response = client.agent_engines.memories.generate(
...,
config={
"revision_labels": {
"data_source": "321"
}
}
)
list(client.agent_engines.memories.revisions.list(
name=MEMORY_NAME,
config={
"filter": "labels.data_source=\"321\""
}
))
"""
[
MemoryRevision(
name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/123",
labels={
"data_source": "123"
}
...
)
]
"""
Überarbeitung erhalten
Verwenden Sie GetMemoryRevision, um eine einzelne Überarbeitung des Speichers abzurufen.
client.agent_engines.memories.revisions.get(name=MEMORY_REVISION_NAME)
Ersetzen Sie Folgendes:
MEMORY_REVISION_NAME: Ressourcenname der abzurufenden Memory-Version im Format:projects/.../locations/.../reasoningEngines/.../memories/.../revisions/...
Erinnerung rückgängig machen
Mit RollbackMemory können Sie eine Erinnerung auf eine frühere Überarbeitung zurücksetzen.
client.agent_engines.memories.rollback(
name=name=MEMORY_NAME,
target_revision_id=REVISION_ID
)
Ersetzen Sie Folgendes:
MEMORY_NAME: Der Ressourcenname des Speichers, der aktualisiert werden soll, im Format:projects/.../locations/.../reasoningEngines/.../memories/...REVISION_ID: ID der Version, zu der ein Rollback durchgeführt werden soll. Dies ist das letzte Segment des Ressourcennamens der Speicherversion, z. B.789inprojects/MyProject/locations/us-central1/reasoningEngines/123/memories/456/revisions/789.
Wenn Sie eine von GenerateMemories vorgenommene Änderung an einer Erinnerung rückgängig machen möchten, setzen Sie die Erinnerung auf die Version vor der Änderung zurück. Die Antwort zum Merken von Informationen enthält für jede aktualisierte oder gelöschte Information einen Verweis auf die vorherige Überarbeitung (previous_revision):
operation = client.agent_engines.memories.generate(
...
)
# Rollback the first generated memory to the previous revision.
client.agent_engines.memories.rollback(
name=operation.response.generated_memories[0].memory.name,
target_revision_id=operation.response.generated_memories[0].previous_revision
)
Überarbeitungen von gemerkten Informationen deaktivieren
Überarbeitungen von gemerkten Informationen sind standardmäßig aktiviert. Sie können Überarbeitungen von Informationen entweder für alle Anfragen an Ihre Memory Bank-Instanz oder für jede einzelne Anfrage deaktivieren. Wenn Speicherüberarbeitungen deaktiviert sind, wird keine Speicherüberarbeitung erstellt, wenn der Speicher geändert wird.
Sie können die Überarbeitung von Erinnerungen für alle Anfragen an Ihre Memory Bank-Instanz deaktivieren, wenn Sie die Instanz einrichten:
memory_bank = client.agent_engines.create(
config={
"context_spec": {
"memory_bank_config": {
"disable_memory_revisions": True
}
}
}
)
Sie können die Überarbeitung des Gedächtnisses auf Anfrageebene deaktivieren, wenn Sie die Anfrage senden:
Generieren
client.agent_engines.memories.generate(
...,
"config": {
"disable_memory_revisions": True
}
)
Erstellen
client.agent_engines.memories.create(
...,
"config": {
"disable_memory_revisions": True
}
)
Aktualisieren
client.agent_engines.memories.update(
...,
"config": {
"disable_memory_revisions": True
}
)
Ablauf von Versionen
Überarbeitungen des Arbeitsspeichers werden nicht dauerhaft gespeichert. Sie müssen entweder das Ablaufdatum der Überarbeitungen festlegen oder das Standardablaufdatum verwenden. Die Standard-Gültigkeitsdauer (TTL) beträgt 365 Tage. Sie können das Ablaufdatum entweder für alle Anfragen an Ihre Memory Bank-Instanz oder für jede einzelne Anfrage konfigurieren. Nach Ablauf einer Erinnerungsüberarbeitung ist sie nicht mehr für die Überprüfung oder das Zurücksetzen verfügbar.
Sie können die TTL für alle Anfragen an Ihre Memory Bank-Instanz konfigurieren, wenn Sie die Instanz einrichten:
client.agent_engines.create(
config={
"context_spec": {
"memory_bank_config": {
"ttl_config": {
# Persist memory revisions for 30 days after they're created.
"revision_ttl": f"{30 * 60 * 60 * 24}s"
}
}
}
}
)
Wenn Sie die TTL für jede Speicherversion auf Anfrageebene konfigurieren möchten, fügen Sie revision_expire_time oder revision_ttl in Ihre Anfrage ein:
TTL
config = {
# Persist memory revisions for 30 days after they're created.
"revision_ttl": f"{30 * 60 * 60 * 24}s"
}
client.agent_engines.memories.create(
...,
config=config
)
client.agent_engines.memories.update(
...,
config=config
)
client.agent_engines.memories.generate(
...,
config=config
)
Ablauffrist
import datetime
config = {
"revision_expire_time": datetime.datetime.now(tz=datetime.timezone.utc) + datetime.timedelta(weeks=3)
}
client.agent_engines.memories.create(
...,
config=config
)
client.agent_engines.memories.update(
...,
config=config
)
client.agent_engines.memories.generate(
...,
config=config
)