Erinnerungen erstellen

Mit Memory Bank können Sie langfristig gemerkte Informationen aus Unterhaltungen zwischen dem Nutzer und Ihrem Agent erstellen. Memory Bank konsolidiert und kuratiert dann Erinnerungen für einen bestimmten Nutzer, indem im Laufe der Zeit Erinnerungen hinzugefügt, aktualisiert und entfernt werden. Auf dieser Seite wird beschrieben, wie Sie die Generierung von Erinnerungen auslösen und die Erinnerungen abrufen.

Wenn Sie die Generierung von Erinnerungen auslösen, führt Memory Bank automatisch die folgenden Vorgänge aus:

  • Extraktion: Extrahiert Informationen über den Nutzer aus seinen Unterhaltungen mit dem Agent.

  • Zusammenführung: Gibt an, ob vorhandene Erinnerungen mit demselben Umfang gelöscht oder aktualisiert werden sollen. Memory Bank prüft, ob neue Erinnerungen doppelt oder widersprüchlich sind, bevor sie mit bestehenden Erinnerungen zusammengeführt werden.

Nicht bei allen User-Agent-Interaktionen werden Erinnerungen erstellt oder aktualisiert. Memory Bank speichert nur Informationen, die für zukünftige Interaktionen als wertvoll erachtet werden. Dazu können die folgenden Arten von Informationen gehören:

  • Informationen über den Nutzer, z. B. Einstellungen, Namen, Beziehungen, Hobbys und wichtige Termine. Beispiele: „Ich arbeite bei Google“, „Ich bevorzuge den Gangplatz“ oder „Mein Hochzeitstag ist am 31. Dezember“.
  • Wichtige Unterhaltungsereignisse und Aufgabenergebnisse. Beispiel: „Ich habe Flugtickets für einen Hin- und Rückflug zwischen JFK und SFO gebucht. Ich reise am 1. Juni 2025 ab und am 7. Juni 2025 wieder an.“
  • Informationen, die der Nutzer den Agent explizit auffordert, sich zu merken. Wenn der Nutzer beispielsweise sagt: „Merke dir, dass ich hauptsächlich Python verwende“, generiert Memory Bank einen Eintrag wie „Ich verwende hauptsächlich Python“.

Erinnerungen können nur aus Text, Inline-Dateien und Dateidaten im Quellinhalt extrahiert werden. Alle anderen Inhalte, einschließlich Funktionsaufrufen und Antworten, werden bei der Erstellung von Erinnerungen ignoriert.

Erinnerungen können aus Bildern, Videos und Audio extrahiert werden, die vom Nutzer bereitgestellt werden. Wenn der von der multimodalen Eingabe bereitgestellte Kontext von Memory Bank als sinnvoll für zukünftige Interaktionen eingestuft wird, kann ein textueller Speicher erstellt werden, der aus der Eingabe extrahierte Informationen enthält. Wenn der Nutzer beispielsweise ein Bild eines Golden Retrievers mit dem Text „Das ist mein Hund“ bereitstellt, generiert Memory Bank eine Erinnerung wie „Mein Hund ist ein Golden Retriever“.

Umgebung einrichten

Bevor Sie mit dem Generieren von Erinnerungen beginnen können, müssen Sie Ihre Umgebung und Ihre Agent Engine-Instanz einrichten. In diesem Abschnitt wird davon ausgegangen, dass Sie eine Python-Entwicklungsumgebung eingerichtet haben oder eine Laufzeit mit einer Python-Entwicklungsumgebung (z. B. Colab) verwenden.

Bibliotheken importieren

Installieren Sie das Vertex AI SDK:

  pip install google-cloud-aiplatform>=1.100.0

Vertex AI SDK-Client einrichten

  import vertexai

  client = vertexai.Client(
      project="PROJECT_ID",
      location="LOCATION",
  )

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: Ihre Region. Für die Memory Bank von Vertex AI Agent Engine wird nur us-central1 unterstützt.

Agent Engine-Instanz konfigurieren

Wenn Sie Erinnerungen aus Memory Bank abrufen möchten, benötigen Sie zuerst eine Instanz einer Agent Engine. Sie können entweder eine neue Instanz erstellen oder eine vorhandene Instanz abrufen. Neue Instanzen sind leer, sofern Sie nicht zuerst Erinnerungen erstellen oder generieren.

Erstellen

agent_engine = client.agent_engines.create()

Vorhandene verwenden

agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")

Ersetzen Sie Folgendes:

  • AGENT_ENGINE_NAME: Der Name der Agent Engine. Er sollte das Format projects/.../locations/.../reasoningEngines/... haben. Sie können Agent Engine-Instanzen nur in us-central1 für Vertex AI Agent Engine Memory Bank verwenden.

Erinnerungen erstellen

Sie können die Generierung von Erinnerungen mit GenerateMemories am Ende einer Sitzung oder in regelmäßigen Abständen innerhalb einer Sitzung auslösen. Beim Generieren von Erinnerungen wird der wichtigste Kontext aus Quellunterhaltungen extrahiert und mit vorhandenen Erinnerungen für denselben Bereich kombiniert. Sie können beispielsweise Erinnerungen auf Sitzungsebene erstellen, indem Sie einen Bereich wie {"user_id": "123", "session_id": "456"} verwenden. Erinnerungen mit demselben Umfang können zusammengefasst und gemeinsam abgerufen werden.

Wenn Sie GenerateMemories aufrufen, müssen Sie die Quellunterhaltung über Agent Engine-Sitzungen oder direkt im JSON-Format angeben:

Agent Engine-Sitzungen

Bei Agent Engine-Sitzungen verwendet Memory Bank Sitzungsereignisse als Quellunterhaltung für die Speichergenerierung.

Um die generierten Erinnerungen einzugrenzen, wird standardmäßig die Nutzer-ID aus der Sitzung extrahiert und verwendet. Der Bereich der Erinnerungen wird beispielsweise als {"user_id": "123"} gespeichert, wenn die user_id der Sitzung „123“ ist. Sie können auch direkt ein scope angeben. Dadurch wird die Verwendung von user_id der Sitzung als Bereich überschrieben.

client.agent_engines.generate_memories(
  name=agent_engine.api_resource.name,
  vertex_session_source={
    "session": "SESSION_NAME"
  },
  # Optional when using Agent Engine Sessions. Defaults to {"user_id": session.user_id}.
  scope=SCOPE,
  config={
      "wait_for_completion": True
  }
)

Ersetzen Sie Folgendes:

  • SESSION_NAME: Der Sitzungsname.

  • (Optional) SCOPE: Ein Dictionary, das den Umfang der generierten Erinnerungen darstellt. Beispiel: {"session_id": "MY_SESSION"}. Für die Konsolidierung werden nur Erinnerungen mit demselben Umfang berücksichtigt. Wenn nicht angegeben, wird {"user_id": session.user_id} verwendet.

JSON-Format

Geben Sie die Quellunterhaltung direkt im JSON-Format an, wenn Sie einen anderen Sitzungsspeicher als Agent Engine Sessions verwenden:

client.agent_engines.generate_memories(
    name=agent_engine.api_resource.name,
    direct_contents_source={
      "events": EVENTS
    },
    scope=SCOPE,
    config={
        "wait_for_completion": True
    }
)

Ersetzen Sie Folgendes:

  • EVENTS: Liste der Inhaltswörterbücher. Beispiel:
[
  {
    "content": {
      "role": "user",
      "parts": [
        {"text": "I'm work with LLM agents!"}
      ]
    }
  }
]
  • SCOPE: Ein Dictionary, das den Umfang der generierten Erinnerungen darstellt. Beispiel: {"session_id": "MY_SESSION"}. Für die Konsolidierung werden nur Erinnerungen mit demselben Umfang berücksichtigt.

GenerateMemories gibt ein AgentEngineGenerateMemoriesOperation mit einer Liste der generierten Erinnerungen zurück:

AgentEngineGenerateMemoriesOperation(
  name="projects/.../locations/.../reasoningEngines/.../operations/...",
  done=True,
  response=GenerateMemoriesResponse(
    generatedMemories=[
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.CREATED: "CREATED">,
      ),
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.UPDATED: "UPDATED">,
      ),
      GenerateMemoriesResponseGeneratedMemory(
        memory=Memory(
          "name": "projects/.../locations/.../reasoningEngines/.../memories/..."
        ),
        action=<GenerateMemoriesResponseGeneratedMemoryAction.DELETED: "DELETED">,
      ),
    ]
  )
)

Jeder generierte Kontext enthält die action, die für diesen Kontext ausgeführt wurde:

  • CREATED: Gibt an, dass eine neue Erinnerung hinzugefügt wurde, die ein neues Konzept darstellt, das nicht von vorhandenen Erinnerungen abgedeckt wurde.
  • UPDATED: Gibt an, dass ein vorhandener Speicher aktualisiert wurde. Dies geschieht, wenn der Speicher ähnliche Konzepte wie die neu extrahierten Informationen abdeckt. Die Fakten im Speicher können mit neuen Informationen aktualisiert werden oder gleich bleiben.
  • DELETED: Gibt an, dass das vorhandene Gedächtnis gelöscht wurde, weil seine Informationen im Widerspruch zu neuen Informationen standen, die aus dem Gespräch extrahiert wurden.

Für CREATED- oder UPDATED-Gedächtnisse können Sie GetMemories verwenden, um den vollständigen Inhalt des Gedächtnisses abzurufen. Beim Abrufen von DELETED-Erinnerungen wird ein 404-Fehler ausgegeben.

Nächste Schritte