Auf dieser Seite wird beschrieben, wie Speicherüberarbeitungsressourcen für Vertex AI Agent Engine Memory Bank erstellt und verwaltet werden.
Lebenszyklus von Erinnerungen und ihren Überarbeitungen

Erinnerungen können entweder direkt (mit CreateMemory, UpdateMemory bzw. DeleteMemory) oder dynamisch (mit GenerateMemories) erstellt, aktualisiert oder gelöscht werden. Ressourcen für die Überarbeitung von Erinnerungen bieten einen vollständigen Versionsverlauf einer Erinnerungsressource für alle Mutationsvorgänge. Jedes Mal, wenn ein Memory erstellt oder geändert wird, wird automatisch eine neue, unveränderliche Version gespeichert. So können Sie nachvollziehen, wie sich ein Memory entwickelt hat und (bei der Memory-Generierung), welche spezifischen Informationen in den einzelnen Schritten extrahiert und zusammengefasst wurden.
Jeder Speicherressource sind eine oder mehrere untergeordnete Speicherversionsressourcen zugeordnet:
Memory-Ressourcen spiegeln immer den aktuellen, konsolidierten Status 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 Status des übergeordneten Speichers dar. Jede Überarbeitung ist ein Snapshot des Speichers zu 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 Informationen sind standardmäßig aktiviert. Informationen zum Deaktivieren von Erinnerungsüberarbeitungen finden Sie unter Erinnerungsüberarbeitungen deaktivieren.
Erstellung von Erinnerungen
Erinnerungen können entweder direkt mit CreateMemory oder dynamisch mit GenerateMemories erstellt werden. Bei der Speichergenerierung wird ein Speicher erstellt, wenn keine vorhandenen Erinnerungen ähnliche Informationen für denselben Bereich abdecken:
# Direct creation using CreateMemory
client.agent_engines.memories.create(name=agent_engine_name, ...)
# Dynamic creation using GenerateMemory
client.agent_engines.memories.generate_memories(name=agent_engine_name, ...)
Wenn eine Erinnerung erstellt wird, werden eine einzelne Memory-Ressource und eine untergeordnete MemoryRevision-Ressource 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 Generieren von Erinnerungen 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=agent_engine_name, ...)
Wenn eine Erinnerung aktualisiert wird, wird die vorhandene Memory-Ressource aktualisiert und eine neue untergeordnete MemoryRevision-Ressource 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 abgerufen werden. Bei der Erinnerungsgenerierung 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=agent_engine_name, ...)
Wenn ein Speicher gelöscht wird, wird die vorhandene Memory-Ressource gelöscht und ein neues untergeordnetes Element MemoryRevision erstellt. Das fact in der letzten Überarbeitung des Speichers 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 Kindermemorys sind nur bis zu 48 Stunden nach dem Löschen des Elternmemorys verfügbar. Während dieses Zeitraums können Sie weiterhin Ihre Memory-Überarbeitungen prüfen und Ihr Memory 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 zu einer vorherigen Ü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 Format:
projects/.../locations/.../reasoningEngines/.../memories/...
Beim Generieren von Erinnerungen können Sie Überarbeitungslabels angeben, die auf die zugehörigen Überarbeitungen angewendet werden. Labels sind beliebige Schlüssel/Wert-Paare. Sie können beispielsweise Überarbeitungen mit der ID der Datenquelle labeln, die zum Generieren des Erinnerungsbilds 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 Informationsspeichers abzurufen.
client.agent_engines.memories.revisions.get(name=MEMORY_REVISION_NAME)
Ersetzen Sie Folgendes:
- MEMORY_REVISION_NAME: Ressourcenname der abzurufenden Memory-Revision im Format:
projects/.../locations/.../reasoningEngines/.../memories/.../revisions/...
Erinnerung rückgängig machen
Mit RollbackMemory können Sie eine Erinnerung auf eine frühere Version 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 Revision, auf die zurückgesetzt werden soll. Dies ist das letzte Segment des Ressourcennamens der Speicherüberarbeitung, z. B.
789inprojects/MyProject/locations/us-central1/reasoningEngines/123/memories/456/revisions/789.
Wenn Sie eine von GenerateMemories vorgenommene Änderung an einem Erinnerungsbild rückgängig machen möchten, setzen Sie das Erinnerungsbild auf die Version vor der Änderung zurück. Die Antwort zur Generierung von Erinnerungen enthält für jede aktualisierte oder gelöschte Erinnerung einen Verweis auf die vorherige Version (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 Erinnerungen sind standardmäßig aktiviert. Sie können Überarbeitungen des Speichers entweder für alle Anfragen an Ihre Memory Bank-Instanz oder für jede einzelne Anfrage deaktivieren. Wenn Überarbeitungen von Erinnerungen deaktiviert sind, wird keine Überarbeitung erstellt, wenn die Erinnerung 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:
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 Überarbeitungen
Überarbeitungen von Erinnerungen 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. Sobald eine Überarbeitung eines Memes abgelaufen ist, ist sie nicht mehr verfügbar und kann nicht mehr überprüft oder zurückgesetzt werden.
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 Speicherrevision auf Anfrageebene konfigurieren möchten, fügen Sie Ihrer Anfrage revision_expire_time oder revision_ttl hinzu:
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
)