Erinnerungen erstellen

Mit der Agent Platform Memory Bank können Sie langfristige Erinnerungen aus Unterhaltungen zwischen dem Nutzer und Ihrem Agenten erstellen. Dieser Prozess wird automatisch ausgelöst und extrahiert wertvolle Informationen für zukünftige Interaktionen.

In diesem Dokument wird erläutert, wie die Generierung von gemerkten Informationen funktioniert, wie Sie die Extraktion von gemerkten Informationen mit Themen anpassen und wie Sie Anfragen zur Generierung von gemerkten Informationen auslösen.

Informationen zum Einrichten Ihrer Umgebung finden Sie unter Memory Bank einrichten.

Informationen zum Merken von Informationen

Memory Bank extrahiert gemerkte Informationen aus Quelldaten und verwaltet sie selbst für eine bestimmte Sammlung von gemerkten Informationen (definiert durch eine scope), indem sie im Laufe der Zeit gemerkte Informationen hinzufügt, aktualisiert und entfernt.

Wenn Sie das Merken von Informationen auslösen, führt Memory Bank die folgenden Vorgänge aus:

  • Extraktion: Extrahiert Informationen über den Nutzer aus seinen Unterhaltungen mit dem Agenten. Es werden nur Informationen gespeichert, die mit mindestens einem der gemerkten Themen Ihrer Instanz übereinstimmen.

  • Konsolidierung: Es wird ermittelt, ob vorhandene gemerkte Informationen mit demselben Bereich basierend auf den extrahierten Informationen gelöscht oder aktualisiert werden sollen. Die Memory Bank prüft, ob neue gemerkte Informationen doppelt vorhanden sind oder im Widerspruch zu bestehenden gemerkten Informationen stehen, bevor sie zusammengeführt werden. Wenn sich vorhandene gemerkte Informationen nicht mit den neuen Informationen überschneiden, wird eine neue gemerkte Information erstellt.

Algorithmus zum Merken von Informationen

Sie können die Zwischenschritte der Erstellung von gemerkten Informationen prüfen und mithilfe von Versionen von gemerkten Informationen sehen, wie sich gemerkte Informationen über mehrere Anfragen hinweg ändern. Jede Version enthält die Zwischenausgabe des Extraktionsschritts (extracted_memories) und des abschließenden Konsolidierungsschritts (fact) für jede Anfrage zur Gedächtnisgenerierung.

list(client.memory_banks.memories.revisions.list(
  name="projects/.../locations/.../reasoningEngines/.../memories/.../revisions/..."))

"""
[
  MemoryRevision(
    name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/456",
    fact="This is my updated fact",
    extracted_memories=[
      IntermediateExtractedMemory(
        fact='This is the output of extraction for a single request.'
      ),
    ],
    ...
  ),
  MemoryRevision(
    name="projects/123/locations/us-central1/reasoningEngines/456/memories/789/revision/123",
    fact="This is my original fact",
    extracted_memories=[
      IntermediateExtractedMemory(
        fact='This is my original fact.'
      ),
    ],
    ...
  )
]
"""

Themen der gemerkten Informationen

„Memory-Themen“ geben an, welche Informationen Memory Bank als sinnvoll erachtet und daher als generierte gemerkte Informationen speichern sollte. Memory Bank unterstützt zwei Arten von Themen:

  • Verwaltete Themen: Label und Anweisungen werden von Memory Bank definiert. Sie müssen nur den Namen des verwalteten Themas angeben. Beispiel:

    Wörterbuch

    memory_topic = {
        "managed_memory_topic": {
            "managed_topic_enum": "USER_PERSONAL_INFO"
        }
    }
    

    Kursbasiert

    from agentplatform.types import ManagedTopicEnum
    from agentplatform.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
    from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
    
    memory_topic = MemoryTopic(
        managed_memory_topic=ManagedMemoryTopic(
            managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO
        )
    )
    
  • Benutzerdefinierte Themen: Label und Anweisungen werden von Ihnen beim Einrichten Ihrer Memory Bank-Instanz definiert. Sie werden im Prompt für den Extraktionsschritt von Memory Bank verwendet. Beispiel:

    Wörterbuch

    memory_topic = {
        "custom_memory_topic": {
            "label": "business_feedback",
            "description": """Specific user feedback about their experience
            at the coffee shop. This includes opinions on drinks, food,
            pastries, ambiance, staff friendliness, service speed,
            cleanliness, and any suggestions for improvement."""
        }
    }
    

    Kursbasiert

    from agentplatform.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
    from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic
    
    memory_topic = MemoryTopic(
        custom_memory_topic=CustomMemoryTopic(
            label="business_feedback",
            description="""Specific user feedback about their experience at
            the coffee shop. This includes opinions on drinks, food,
            pastries, ambiance, staff friendliness, service speed,
            cleanliness, and any suggestions for improvement."""
        )
    )
    

    Wenn Sie benutzerdefinierte Themen verwenden, sollten Sie auch Few-Shot-Beispiele angeben, um zu zeigen, wie gemerkte Informationen aus Ihrer Unterhaltung extrahiert werden sollen.

Standardmäßig speichert die Memory Bank alle folgenden verwalteten Themen:

  • Nutzerinformationen (USER_PERSONAL_INFO): Wichtige Informationen über den Nutzer, z. B. Namen, Beziehungen, Hobbys und wichtige Termine. Beispiel: „Ich arbeite bei Google“ oder „Mein Hochzeitstag ist am 31. Dezember“.

  • Nutzereinstellungen (USER_PREFERENCES): Angegebene oder implizierte Vorlieben, Abneigungen, bevorzugte Stile oder Muster. Beispiel: „Ich bevorzuge den mittleren Sitz.“

  • Wichtige Gesprächsereignisse und Aufgabenergebnisse (KEY_CONVERSATION_DETAILS): Wichtige Meilensteine oder Schlussfolgerungen im Dialog. Beispiel: „Ich habe Flugtickets für einen Hin- und Rückflug zwischen JFK und SFO gebucht. Ich reise am 1. Juni 2025 ab und kehre am 7. Juni 2025 zurück.“

  • Explizite Anweisungen zum Speichern oder Vergessen (EXPLICIT_INSTRUCTIONS): Informationen, die der Nutzer den Agenten explizit auffordert, sich zu merken oder zu vergessen. Wenn der Nutzer beispielsweise sagt „Merk dir, dass ich hauptsächlich Python verwende“, generiert die Memory Bank eine gemerkte Information wie „Ich verwende hauptsächlich Python“.

Dies entspricht der Verwendung der folgenden Themen für verwalteten Speicher:

Wörterbuch

  memory_topics = [
      {"managed_memory_topic": {"managed_topic_enum": "USER_PERSONAL_INFO"}},
      {"managed_memory_topic": {"managed_topic_enum": "USER_PREFERENCES"}},
      {"managed_memory_topic": {"managed_topic_enum": "KEY_CONVERSATION_DETAILS"}},
      {"managed_memory_topic": {"managed_topic_enum": "EXPLICIT_INSTRUCTIONS"}},
  ]

Kursbasiert

from agentplatform.types import ManagedTopicEnum
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic

memory_topics = [
  MemoryTopic(
      managed_memory_topic=ManagedMemoryTopic(
          managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)),
  MemoryTopic(
      managed_memory_topic=ManagedMemoryTopic(
          managed_topic_enum=ManagedTopicEnum.USER_PREFERENCES)),
  MemoryTopic(
      managed_memory_topic=ManagedMemoryTopic(
          managed_topic_enum=ManagedTopicEnum.KEY_CONVERSATION_DETAILS)),
  MemoryTopic(
      managed_memory_topic=ManagedMemoryTopic(
          managed_topic_enum=ManagedTopicEnum.EXPLICIT_INSTRUCTIONS)),
]

Wenn Sie anpassen möchten, welche Themen Memory Bank speichert, legen Sie die Themen für Memory Bank in Ihrer Anpassungskonfiguration fest, wenn Sie Memory Bank einrichten.

Metadaten während der Konsolidierung verwenden

Sie können generierten Erinnerungen Metadaten hinzufügen. Mit Metadaten können Sie strukturierte Informationen (Strings, Doubles, Booleans oder Zeitstempel) zusammen mit einem gemerkten Fakt speichern. Das ist nützlich, um Erinnerungen zu filtern oder ihren Lebenszyklus zu verwalten.

Wörterbuch

import datetime

client.memory_banks.memories.generate(
    ...,
    config={
        "metadata": {
            "my_string_key": {"string_value": "my_string_value"},
            "my_double_key": {"double_value": 123.456},
            "my_boolean_key": {"bool_value": True},
            "my_timestamp_key": {
                "timestamp_value": datetime.datetime(
                    2027, 1, 1, 12, 30, 00, tzinfo=datetime.timezone.utc
                )
            }
        },
        "metadata_merge_strategy": "MERGE"
    },
)

Kursbasiert

import datetime

from agentplatform import types

client.memory_banks.memories.generate(
    ...,
    config=types.GenerateMemoriesConfig(
        metadata={
            "my_string_key": types.MemoryMetadataValue(string_value="my_string_value"),
            "my_double_key": types.MemoryMetadataValue(double_value=123.456),
            "my_boolean_key": types.MemoryMetadataValue(bool_value=True),
            "my_timestamp_key": types.MemoryMetadataValue(
                timestamp_value=datetime.datetime(
                    2027, 1, 1, 12, 30, 00, tzinfo=datetime.timezone.utc
                )
            ),
        },
        metadata_merge_strategy=types.MemoryMetadataMergeStrategy.MERGE,
    )
)

Mit einem metadata_merge_strategy können Sie steuern, wie neue Metadaten während der Konsolidierung mit vorhandenen gemerkten Informationen interagieren:

  • MERGE: (Standard) Neue Metadaten mit vorhandenen Metadaten kombinieren. Wenn ein Schlüssel bereits vorhanden ist, wird der alte Wert durch den neuen Wert überschrieben.

  • OVERWRITE: Ersetzt die Metadaten der aktualisierten gemerkten Informationen durch die neuen Metadaten.

  • REQUIRE_EXACT_MATCH: Die Konsolidierung wird auf gemerkte Informationen beschränkt, die genau dieselben Metadaten wie die Anfrage haben. Wenn eine Erinnerung nicht dieselben Metadaten hat, kann sie nicht zusammengeführt und nicht aktualisiert werden.

Erinnerungen für eine Teilmenge von Themen generieren

Standardmäßig werden bei der Generierung von gemerkten Informationen Daten für alle Themen für gemerkte Informationen extrahiert, die Sie bei der Einrichtung Ihrer Memory Bank-Instanz konfiguriert haben. Für eine bestimmte GenerateMemories-Anfrage können Sie die Extraktion auf eine Teilmenge der konfigurierten Themen beschränken. Verwenden Sie das Feld allowed_topics, um zulässige Themen zu konfigurieren.

Wörterbuch

client.memory_banks.memories.generate(
    ...,
    config={
        "allowed_topics": [
            {"managed_memory_topic": "USER_PERSONAL_INFO"},
            {"custom_memory_topic_label": "business_feedback"}
        ]
    },
)

Kursbasiert

from agentplatform import types

client.memory_banks.memories.generate(
    ...,
    config=types.GenerateMemoriesConfig(
        allowed_topics=[
            types.MemoryTopicId(
                managed_memory_topic=types.ManagedTopicEnum.USER_PERSONAL_INFO
            ),
            types.MemoryTopicId(
                custom_memory_topic_label="business_feedback"
            )
        ]
    )
)

Merken von Informationen wird ausgelöst

Sie können die Erstellung von Erinnerungen mit einer der folgenden Methoden auslösen:

  • GenerateMemories: Daten in die Memory Bank aufnehmen und die Speichergenerierung sofort auslösen. Diese Methode ist nützlich, wenn Sie zu einem bestimmten Zeitpunkt gemerkte Informationen generieren möchten, z. B. am Ende einer Sitzung oder in regelmäßigen Abständen innerhalb einer Sitzung.
  • IngestEvents: Daten kontinuierlich in Memory Bank aufnehmen und von Memory Bank verarbeiten lassen, wenn Ihre Auslösekriterien erfüllt sind. Diese Methode ist nützlich, wenn Sie einen kontinuierlichen Stream von Ereignissen haben und möchten, dass Memory Bank die Zwischenspeicherung automatisch übernimmt und die Speichergenerierung basierend auf Volumen oder Zeit auslöst. Weitere Informationen finden Sie unter Ereignisse aufnehmen.

Bei der Generierung von gemerkten Informationen wird der wichtigste Kontext aus den Quellunterhaltungen extrahiert und mit vorhandenen gemerkten Informationen für denselben Bereich kombiniert. Sie können beispielsweise gemerkte Informationen auf Sitzungsebene erstellen, indem Sie einen Bereich wie {"user_id": "123", "session_id": "456"} verwenden. Gemerkte Informationen mit demselben Bereich können konsolidiert und zusammen abgerufen werden.

GenerateMemories ist ein Vorgang mit langer Ausführungszeit. Nach Abschluss des Vorgangs enthält GenerateMemoriesOperation eine Liste der generierten gemerkten Informationen, falls welche generiert wurden:

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

Jede generierte gemerkte Information enthält die action, die für diese gemerkte Information ausgeführt wurde:

  • CREATED: Gibt an, dass eine neue gemerkte Information hinzugefügt wurde, die ein neues Konzept darstellt, das nicht von vorhandenen gemerkten Informationen abgedeckt wurde.

  • UPDATED: Gibt an, dass eine vorhandene gemerkte Information aktualisiert wurde. Das passiert, wenn die gemerkte Information ähnliche Konzepte wie die neu extrahierten Informationen abdeckt. Die Information im gemerkten Fakt kann mit neuen Informationen aktualisiert werden oder unverändert bleiben.

  • DELETED: Gibt an, dass die vorhandene gemerkte Information gelöscht wurde, weil sie im Widerspruch zu neuen Informationen stand, die aus der Unterhaltung extrahiert wurden.

Für CREATED- oder UPDATED-Merkinhalte können Sie GetMemories verwenden, um den vollständigen Inhalt des Merkinhalts abzurufen. Das Abrufen von DELETED-Erinnerungen führt zu einem 404-Fehler.

Gemerkte Informationen werden im Hintergrund generiert

GenerateMemories ist ein Vorgang mit langer Ausführungszeit. Standardmäßig ist client.memory_banks.memories.generate eine Blockierfunktion, die den Vorgang abfragt, bis er abgeschlossen ist. Das Ausführen der Generierung von gemerkten Informationen als blockierender Vorgang ist hilfreich, wenn Sie generierte gemerkte Informationen manuell prüfen oder Endnutzer darüber informieren möchten, welche gemerkten Informationen generiert wurden.

Bei Produktions-Agents sollten Sie die Speichergenerierung jedoch im Allgemeinen im Hintergrund als asynchronen Prozess ausführen. In den meisten Fällen muss der Client die Ausgabe für die aktuelle Ausführung nicht verwenden. Es ist also nicht erforderlich, zusätzliche Latenz zu verursachen, während auf eine Antwort gewartet wird. Wenn die Speichergenerierung im Hintergrund ausgeführt werden soll, setzen Sie wait_for_completion auf False:

client.memory_banks.memories.generate(
    ...,
    config={
        "wait_for_completion": False
    }
)

Als Alternative zum asynchronen Aufruf von GenerateMemories können Sie IngestEvents verwenden. Dadurch wird die Ereignisaufnahme von der Gedächtnisgenerierung entkoppelt und Ereignisse werden standardmäßig im Hintergrund verarbeitet.

Datenquellen

Es gibt mehrere Möglichkeiten, Quelldaten für die Erstellung von Erinnerungen bereitzustellen:

Wenn Sie Ereignisse direkt in der Nutzlast angeben oder Sitzungen verwenden, werden Informationen aus der Unterhaltung extrahiert und mit vorhandenen gemerkten Informationen konsolidiert. Wenn Sie nur Informationen aus diesen Datenquellen extrahieren möchten, können Sie die Konsolidierung deaktivieren:

client.memory_banks.memories.generate(
    ...
    config={
        "disable_consolidation": True
    }
)

Ereignisse in der Nutzlast als Datenquelle verwenden

Verwenden Sie direct_contents_source, wenn Sie Erinnerungen mit Ereignissen generieren möchten, die direkt in der Nutzlast bereitgestellt werden. Aus diesen Ereignissen werden aussagekräftige Informationen extrahiert und mit vorhandenen Informationen für denselben Bereich konsolidiert. Dieser Ansatz kann verwendet werden, wenn Sie einen anderen Sitzungsspeicher als Agent Platform Sessions verwenden.

Wörterbuch

Die Ereignisse sollten Content-Wörterbücher enthalten.

events =  [
  {
    "content": {
      "role": "user",
      "parts": [
        {"text": "I work with LLM agents!"}
      ]
    }
  }
]

client.memory_banks.memories.generate(
    name=memory_bank.name,
    direct_contents_source={
      "events": EVENTS
    },
    # For example, `scope={"user_id": "123"}`.
    scope=SCOPE,
    config={
        "wait_for_completion": True
    }
)

Ersetzen Sie Folgendes:

  • SCOPE: Ein Dictionary, das den Umfang der generierten Erinnerungen darstellt. Beispiel: {"session_id": "MY_SESSION"}. Für die Konsolidierung werden nur gemerkte Informationen mit demselben Bereich berücksichtigt.

Kursbasiert

Die Ereignisse sollten Content-Objekte enthalten.

from google import genai
from agentplatform import types

events = [
  types.GenerateMemoriesRequestDirectContentsSourceEvent(
    content=genai.types.Content(
      role="user",
      parts=[
        genai.types.Part.from_text(text="I work with LLM agents!")
      ]
    )
  )
]

client.memory_banks.memories.generate(
    name=memory_bank.name,
    direct_contents_source={
      "events": events
    },
    # For example, `scope={"user_id": "123"}`.
    scope=SCOPE,
    config={
        "wait_for_completion": True
    }
)

Ersetzen Sie Folgendes:

  • SCOPE: Ein Dictionary, das den Umfang der generierten Erinnerungen darstellt. Beispiel: {"session_id": "MY_SESSION"}. Für die Konsolidierung werden nur gemerkte Informationen mit demselben Bereich berücksichtigt.

Agent Platform-Sitzungen als Datenquelle verwenden

Bei Sitzungen verwendet Memory Bank Sitzungsereignisse als Quellunterhaltung für das Merken von Informationen.

Um den Bereich der generierten gemerkten Informationen einzugrenzen, extrahiert und verwendet Memory Bank standardmäßig die Nutzer-ID aus der Sitzung. Beispiel: Der Bereich der gemerkten Informationen wird als {"user_id": "123"} gespeichert, wenn die user_id der Sitzung „123“ ist. Sie können auch direkt einen scope angeben, der die Verwendung der user_id der Sitzung als Bereich überschreibt.

Wörterbuch

client.memory_banks.memories.generate(
  name=memory_bank.name,
  vertex_session_source={
      # For example, projects/.../locations/.../reasoningEngines/.../sessions/...
      "session": "SESSION_NAME"
  },
  # Optional when using Sessions. Defaults to {"user_id": session.user_id}.
  scope=SCOPE,
  config={
      "wait_for_completion": True
  }
)

Ersetzen Sie Folgendes:

  • SESSION_NAME: Der vollständig qualifizierte Sitzungsname.

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

Kursbasiert

from agentplatform import types

client.memory_banks.memories.generate(
  name=memory_bank.name,
  vertex_session_source=types.GenerateMemoriesRequestVertexSessionSource(
      # For example, projects/.../locations/.../reasoningEngines/.../sessions/...
      session="SESSION_NAME"
  ),
  # Optional when using Sessions. Defaults to {"user_id": session.user_id}.
  scope=SCOPE,
  config={
      "wait_for_completion": True
  }
)

Optional können Sie einen Zeitraum angeben, um festzulegen, welche Ereignisse in der Sitzung berücksichtigt werden sollen. Wenn keine angegeben ist, werden alle Ereignisse in der Sitzung berücksichtigt.

Wörterbuch

import datetime

client.memory_banks.memories.generate(
  name=memory_bank.name,
  vertex_session_source={
      "session": "SESSION_NAME",
      # Extract memories from the last hour of events.
      "start_time": datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(seconds=24 * 60),
      "end_time": datetime.datetime.now(tz=datetime.timezone.utc)
  },
  scope=SCOPE
)

Kursbasiert

import datetime

from agentplatform import types

client.memory_banks.memories.generate(
  name=memory_bank.name,
  vertex_session_source=types.GenerateMemoriesRequestVertexSessionSource(
      session="SESSION_NAME",
      # Extract memories from the last hour of events.
      start_time=datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(seconds=24 * 60),
      end_time=datetime.datetime.now(tz=datetime.timezone.utc)
  ),
  scope=SCOPE
)

Zusammenfassen von zuvor extrahierten gemerkten Informationen

Alternativ zum automatischen Extraktionsprozess von Memory Bank können Sie vorab extrahierte gemerkte Informationen direkt bereitstellen. Gemerkte Informationen aus direkten Quellen werden mit vorhandenen gemerkten Informationen für denselben Bereich konsolidiert. Das kann nützlich sein, wenn Sie möchten, dass Ihr Agent oder ein Human-in-the-Loop für das Extrahieren von gemerkten Informationen verantwortlich ist, Sie aber trotzdem die Konsolidierung der Memory Bank nutzen möchten, um sicherzustellen, dass es keine doppelten oder widersprüchlichen gemerkten Informationen gibt.

client.memory_banks.memories.generate(
    name=memory_bank.name,
    direct_memories_source={"direct_memories": [{"fact": "FACT"}]},
    scope=SCOPE
)

Ersetzen Sie Folgendes:

  • FACT: Der vorab extrahierte Fakt, der mit vorhandenen gemerkten Informationen zusammengeführt werden soll. Sie können bis zu fünf vorab extrahierte Fakten in einer Liste wie der folgenden angeben:

    {"direct_memories": [{"fact": "fact 1"}, {"fact": "fact 2"}]}
    
  • SCOPE: Ein Dictionary, das den Umfang der generierten Erinnerungen darstellt. Beispiel: {"session_id": "MY_SESSION"}. Nur gemerkte Informationen mit demselben Bereich werden für die Konsolidierung berücksichtigt.

Multimodale Eingabe verwenden

Sie können gemerkte Informationen aus multimodalen Eingaben extrahieren. Gemerkte Informationen werden jedoch nur aus Text, Inline-Dateien und Dateidaten im Quellinhalt extrahiert. Alle anderen Inhalte, einschließlich Funktionsaufrufen und Antworten, werden beim Generieren von gemerkten Informationen ignoriert.

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

Sie können beispielsweise ein Bild und Kontext für das Bild in der Nutzlast angeben:

Wörterbuch

with open(file_name, "rb") as f:
    inline_data = f.read()

events =  [
  {
    "content": {
      "role": "user",
      "parts": [
        {"text": "This is my dog"},
        {
          "inline_data": {
            "mime_type": "image/jpeg",
            "data": inline_data
          }
        },
        {
          "file_data": {
            "file_uri": "gs://cloud-samples-data/generative-ai/image/dog.jpg",
            "mime_type": "image/jpeg"
          }
        },
      ]
    }
  }
]

Kursbasiert

from google import genai
from agentplatform import types

with open(file_name, "rb") as f:
    inline_data = f.read()

events = [
  types.GenerateMemoriesRequestDirectContentsSourceEvent(
    content=genai.types.Content(
      role="user",
      parts=[
        genai.types.Part.from_text(text="This is my dog"),
        genai.types.Part.from_bytes(
          data=inline_data,
          mime_type="image/jpeg",
        ),
        genai.types.Part.from_uri(
          file_uri="gs://cloud-samples-data/generative-ai/image/dog.jpg",
          mime_type="image/jpeg",
        )
      ]
    )
  )
]

Nächste Schritte

Anleitung

Informationen zum Abrufen generierter und hochgeladener gemerkter Informationen

Anleitung

Informationen zum Einrichten von Memory Bank

Anleitung

Informationen zum Prüfen von Speicherversionen