Configurare Memory Bank

Per utilizzare Agent Platform Memory Bank, devi prima creare e configurare un'istanza di Memory Bank. Questa istanza gestisce i tuoi ricordi e può essere integrata con i tuoi agenti in vari runtime.

Questo documento spiega come configurare il tuo progetto Cloud de Confiance by S3NS , installare le librerie richieste e creare o aggiornare un'istanza con configurazioni personalizzate come argomenti e TTL.

Inizia

Prima di utilizzare Memory Bank, devi configurare l'ambiente.

Configura il progetto Cloud de Confiance

Ogni progetto può essere identificato in due modi: tramite il numero del progetto o l'ID progetto. Il PROJECT_NUMBER viene creato automaticamente in fase di creazione del progetto, mentre l'PROJECT_ID viene creato da te o da chiunque abbia creato il progetto. Per configurare un progetto:

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

Ottieni le autorizzazioni richieste

Per ottenere le autorizzazioni necessarie per utilizzare Memory Bank, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Se invii richieste a Memory Bank da un agente di cui è stato eseguito il deployment su Google Kubernetes Engine (GKE) o Cloud Run, assicurati che il tuo account di servizio disponga delle autorizzazioni necessarie per leggere, scrivere o generare memorie. Il service agent motore di ragionamento dispone già delle autorizzazioni necessarie per leggere, scrivere e generare memorie, quindi le richieste in uscita da Agent Runtime dovrebbero già avere l'autorizzazione per accedere a Memory Bank.

Installare le librerie

Questa sezione presuppone che tu abbia configurato un ambiente di sviluppo Python o che utilizzi un runtime con un ambiente di sviluppo Python (come Colaboratory).

Installa l'SDK Agent Platform:

pip install google-cloud-agentplatform>=2.0.1

Autenticazione

Segui le istruzioni riportate in Autenticazione in Gemini Enterprise Agent Platform.

Configura un client SDK Agent Platform

Esegui il seguente codice per configurare un client SDK Agent Platform:

SDK Agent Platform

import agentplatform

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

dove

Endpoint multiregionali e globali

Memory Bank supporta endpoint multiregionali e globali:

  • Per le istanze globali, imposta la località su global.
  • Per le istanze multiregionali, imposta la località su us o eu.

Crea o aggiorna un'istanza di Memory Bank

Per iniziare a utilizzare Memory Bank, devi prima creare un'istanza di Memory Bank. Se non hai ancora un'istanza, puoi crearne una utilizzando la configurazione predefinita e un nome visualizzato di tua scelta.

# create the resource
memory_bank = client.memory_banks.create(
    config={
        "display_name": "My Memory Bank",
    }
)

# Optionally, print out the Memory Bank resource name. You will need the
# resource name to interact with your Memory Bank instance later on.
print(memory_bank.name)

Se vuoi personalizzare la configurazione del comportamento della tua istanza Memory Bank nuova o esistente, consulta Configurare l'istanza Memory Bank. Ad esempio, puoi specificare quali informazioni Memory Bank considera significative da rendere persistenti.

Una volta creata un'istanza di Memory Bank, puoi utilizzare il nome dell'istanza per leggere o scrivere ricordi. Ad esempio:

# Generate memories using your Memory Bank instance.
client.memory_banks.memories.generate(
  # `name` should have the format `projects/.../locations/.../reasoningEngines/...`.
  name=memory_bank.name,
  ...
)

Utilizzo con Agent Runtime

Sebbene Memory Bank possa essere utilizzato in qualsiasi runtime, puoi anche utilizzarlo con Agent Runtime per leggere e scrivere ricordi dal tuo agente di cui è stato eseguito il deployment.

Per eseguire il deployment di un agente su Agent Runtime con Memory Bank integrato, innanzitutto configura l'ambiente per Agent Runtime. Dopodiché, prepara l'agente per il deployment su Agent Runtime con l'integrazione della memoria. L'agente di cui hai eseguito il deployment deve effettuare chiamate per leggere e scrivere i ricordi in base alle necessità.

AdkApp

Se utilizzi il modello Agent Development Kit (ADK) di Agent Platform, l'agente utilizza VertexAiMemoryBankService per impostazione predefinita quando viene eseguito il deployment in Agent Runtime. Ciò significa che gli strumenti di memoria dell'ADK leggono i ricordi da Memory Bank.

from google.adk.agents import Agent
from agentplatform.frameworks import AdkApp

# Develop an agent using the ADK template.
agent = Agent(...)

adk_app = AdkApp(
      agent=adk_agent,
      ...
)

# Deploy the agent to Agent Runtime.
runtime = client.runtimes.create(
      agent=adk_app,
      config={
            "staging_bucket": "STAGING_BUCKET",
            "requirements": ["google-cloud-agentplatform[runtimes,adk]"],
            # Optional.
            **context_spec
      }
)

# Update an existing Agent Runtime to add or modify the Runtime.
runtime = client.runtimes.update(
      name=runtime.api_resource.name,
      agent=adk_app,
      config={
            "staging_bucket": "STAGING_BUCKET",
            "requirements": ["google-cloud-agentplatform[runtimes,adk]"],
            # Optional.
            **context_spec
      }
)

Sostituisci quanto segue:

  • STAGING_BUCKET: il tuo bucket Cloud Storage da utilizzare per la gestione temporanea di Agent Runtime.

Per saperne di più sull'utilizzo di Memory Bank con ADK, consulta la Guida rapida con ADK.

Agente personalizzato

Puoi utilizzare Memory Bank con il tuo agente personalizzato di cui è stato eseguito il deployment in Agent Runtime. In questo caso, l'agente deve orchestrare le chiamate a Memory Bank per attivare la generazione di ricordi e le chiamate di recupero dei ricordi.

L'applicazione di cui è stato eseguito il deployment in Agent Runtime può leggere le variabili di ambiente GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION,GOOGLE_CLOUD_AGENT_ENGINE_ID per dedurre il nome di Agent Runtime dall'ambiente:

project = os.environ.get("GOOGLE_CLOUD_PROJECT")
location = os.environ.get("GOOGLE_CLOUD_LOCATION")
agent_engine_id = os.environ.get("GOOGLE_CLOUD_AGENT_ENGINE_ID")

agent_engine_name = f"projects/{project}/locations/{location}/reasoningEngines/{agent_engine_id}"

Se utilizzi l'agente di servizio predefinito per l'agente in Agent Runtime, l'agente dispone già dell'autorizzazione per leggere e scrivere ricordi. Se utilizzi un service account cliente, devi concedere al account di servizio le autorizzazioni per leggere e scrivere i ricordi. Le autorizzazioni richieste dipendono dalle operazioni che l'agente deve essere in grado di eseguire. Se vuoi che l'agente recuperi e generi solo i ricordi, sono sufficienti aiplatform.memories.generate e aiplatform.memories.retrieve.

Utilizzo in tutti gli altri runtime

Se vuoi utilizzare Memory Bank in un ambiente diverso, come Cloud Run o Colab, crea una Memory Bank. Se non fornisci una configurazione, Memory Bank viene creata con le impostazioni predefinite per la gestione del salvataggio di informazioni e del recupero dei ricordi.

memory_bank = client.memory_banks.create()

Se hai già utilizzato Memory Bank, la creazione di una nuova istanza di Memory Bank dovrebbe richiedere solo pochi secondi. Se è la prima volta che utilizzi la banca della memoria, l'operazione potrebbe richiedere più tempo (1-2 minuti).

Se vuoi configurare il comportamento, fornisci una configurazione Memory Bank:

Crea

memory_bank = client.memory_banks.create(
  managed_semantic_memory_config={
    "generation_config": ...,
    "unstructured_memory_configs": [...],
    "structured_memory_configs": [...],
    "similarity_search_config": ...,
    "ttl_config": ...,
    "disable_memory_revisions": False,
  }
)

Aggiorna

Se vuoi modificare la configurazione di Memory Bank, puoi aggiornare l'istanza di Memory Bank.

memory_bank = client.runtimes.update(
  # You can access the name using `memory_bank.name` for a MemoryBank object.
  name="MEMORY_BANK_NAME",
  config={
    "context_spec": {
      "memory_bank_config": {
        "generation_config": ...,
        "customization_configs": [...],
        "structured_memory_configs": [...],
        "similarity_search_config": ...,
        "ttl_config": ...,
        "disable_memory_revisions": False,
      }
    }
  }
)

Sostituisci quanto segue:

  • MEMORY_BANK_NAME: il nome della banca di memoria. Deve essere nel formato projects/.../locations/.../reasoningEngines/.... Consulta le regioni supportate per Memory Bank.

Puoi utilizzare Memory Bank in qualsiasi ambiente con l'autorizzazione a leggere e scrivere ricordi. Ad esempio, per utilizzare Memory Bank con Cloud Run, concedi le autorizzazioni all'identità del servizio Cloud Run per leggere e scrivere i ricordi. Le autorizzazioni richieste dipendono dalle operazioni che l'agente deve essere in grado di eseguire. Se vuoi che il tuo agente recuperi e generi solo ricordi, aiplatform.memories.generate e aiplatform.memories.retrieve sono sufficienti.

Configura l'istanza Memory Bank

Puoi configurare il tuo Memory Bank per personalizzare la modalità di generazione e gestione dei ricordi. Se non fornisci la configurazione, Memory Bank utilizza le impostazioni predefinite per ogni tipo di configurazione.

Puoi configurare le seguenti impostazioni di Memory Bank per la tua istanza:

L'esempio seguente mostra il Memory Bank predefinito:

Dizionario

managed_semantic_memory_config = {
  "generation_config": {
    # `gemini-3.5-flash` will be used to extract and consolidate memories.
    "model": "projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/gemini-3.5-flash"
  },
  "similarity_search_config": {
    # `text-embedding-005` will be used for similarity search, including
    # during consolidation. Consolidation uses similarity search to find
    # candidate memories that may be updated with new information.
    "embedding_model": "projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/text-embedding-005"
  },
  "ttl_config": {
    # Default TTL for memory revisions is 365 days.
    "memory_revision_default_ttl": f"{365 * 24 * 60 * 60}s"
  },
  "unstructured_memory_configs": [
    {
      # Extract user information, preferences, key conversation details,
      # and information that the user explicitly asked to be remembered.
      "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"}}
      ],
      "consolidation_config": {
        # Only use the latest memory revision of each candidate memory during
        # consolidation.
        "revisions_per_candidate_count": 1
      },
      # Only use the pre-defined set of examples.
      "generate_memories_examples": [],
      # Generate memories in the first person.
      "enable_third_person_memories": False
    }
  ],
  # Memory revisions will be persisted. This can be overridden on a request-level.
  "disable_memory_revisions": False
}

Basato sulla classe

from agentplatform.types import ManagedSemanticMemoryConfig
from agentplatform.types import ManagedSemanticMemoryConfigGenerationConfig as GenerationConfig
from agentplatform.types import ManagedSemanticMemoryConfigSimilaritySearchConfig as SimilaritySearchConfig
from agentplatform.types import ManagedSemanticMemoryConfigTtlConfig as TtlConfig
from agentplatform.types import ManagedTopicEnum
from agentplatform.types import MemoryBankCustomizationConfig as CustomizationConfig
from agentplatform.types import MemoryBankCustomizationConfigConsolidationConfig as ConsolidationConfig
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic

managed_semantic_memory_config = ManagedSemanticMemoryConfig(
  generation_config=GenerationConfig(
    # `gemini-3.5-flash` will be used to extract and consolidate memories.
    # Note: The global endpoint will be used for regions that don't have a
    # regional endpoint available.
    model="projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/gemini-3.5-flash"
  ),
  similarity_search_config=SimilaritySearchConfig(
    # `text-embedding-005` will be used for similarity search, including
    # during consolidation. Consolidation uses similarity search to find
    # candidate memories that may be updated with new information.
    embedding_model="projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/text-embedding-005"
  ),
  ttl_config=TtlConfig(
    # Default TTL for memory revisions is 365 days.
    memory_revision_default_ttl=f"{365 * 24 * 60 * 60}s"
  ),
  unstructured_memory_configs=[
    CustomizationConfig(
      # Extract personal information, preferences, key conversation details,
      # and information that the user explicitly asked to be remembered.
      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))
      ],
      # Only use the pre-defined set of examples.
      generate_memories_examples=[],
      consolidation_config=ConsolidationConfig(
        # Only use the latest memory revision of each candidate memory during
        # consolidation.
        revisions_per_candidate_count=1
      ),
      # Generate memories in the first person.
      enable_third_person_memories=False,
    )
  ],
  # Memory revisions will be persisted. This can be overridden on a request-level.
  disable_memory_revisions=False
)

Puoi modificare la configurazione di Memory Bank quando crei o aggiorni l'istanza. L'esempio seguente mostra come creare un'istanza con una configurazione specifica di banchi di memoria.

memory_bank = client.memory_banks.create(
    managed_semantic_memory_config=managed_semantic_memory_config
)

Configurazione della personalizzazione della memoria in linguaggio naturale

Per personalizzare il modo in cui Memory Bank estrae i ricordi in linguaggio naturale, configura il comportamento di estrazione durante la configurazione dell'istanza. Utilizza le seguenti opzioni per personalizzare il comportamento:

Puoi personalizzare il comportamento di estrazione della banca della memoria in due passaggi: indicazione e dimostrazione. Gli argomenti della memoria indicano alla Memory Bank quali informazioni rendere persistenti. Gli esempi mostrano a Memory Bank quale tipo di informazioni deve generare un ricordo specifico, aiutandolo a imparare i pattern, le sfumature e le frasi che ti aspetti che comprenda.

Se vuoi, puoi configurare un comportamento diverso per i vari livelli di ambito. Ad esempio, gli argomenti significativi per i ricordi a livello di sessione potrebbero non essere significativi per i ricordi a livello di utente (su più sessioni). Per configurare il comportamento per un determinato sottoinsieme di ricordi, imposta le chiavi di ambito della configurazione della personalizzazione. Solo le richieste GenerateMemories che includono queste chiavi di ambito utilizzeranno questa configurazione. Puoi anche configurare il comportamento predefinito (applicato a tutti gli insiemi di chiavi di ambito) omettendo il campo scope_key. Questa configurazione verrà applicata a tutte le richieste che non hanno una configurazione che corrisponda esattamente alle chiavi di ambito per un'altra configurazione di personalizzazione.

Ad esempio, user_level_config si applicherebbe solo alle richieste GenerateMemories che utilizzano esattamente la chiave di ambito user_id (ovvero scope={"user_id": "123"} senza chiavi aggiuntive). default_config si applica ad altre richieste:

Dizionario


user_level_config = {
  "scope_keys": ["user_id"],
  "memory_topics": [...],
  "generate_memories_examples": [...]
}

default_config = {
  "memory_topics": [...],
  "generate_memories_examples": [...]
}

managed_semantic_memory_config = {
  "unstructured_memory_configs": [
    user_level_config,
    default_config
  ]
}

Basato su classi

from agentplatform.types import ManagedSemanticMemoryConfig
from agentplatform.types import MemoryBankCustomizationConfig as CustomizationConfig

user_level_config = CustomizationConfig(
  scope_keys=["user_id"],
  memory_topics=[...],
  generate_memories_examples=[...]
)

default_config = CustomizationConfig(
  memory_topics=[...],
  generate_memories_examples=[...]
)

managed_semantic_memory_config = ManagedSemanticMemoryConfig(
  unstructured_memory_configs=[
    user_level_config,
    default_config,
  ]
)

Configurazione degli argomenti della memoria

Gli "argomenti dei ricordi" identificano le informazioni che Memory Bank considera significative e che devono quindi essere mantenute come ricordi generati. Memory Bank supporta due tipi di argomenti di memoria:

  • Argomenti gestiti: l'etichetta e le istruzioni sono definite da Memory Bank. Devi solo fornire il nome dell'argomento gestito. Ad esempio,

    Dizionario

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

    Basato su classi

    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
        )
    )
    

    I seguenti argomenti gestiti sono supportati da Memory Bank:

    • Informazioni utente (USER_PERSONAL_INFO): informazioni significative sull'utente, come nomi, relazioni, hobby e date importanti. Ad esempio, "Lavoro in Google" o "Il mio anniversario di matrimonio è il 31 dicembre".
    • Preferenze dell'utente (USER_PREFERENCES): Mi piace, Non mi piace, stili o comportamenti tipici dichiarati o impliciti. Ad esempio, "Preferisco il posto centrale".
    • Eventi chiave della conversazione e risultati delle attività (KEY_CONVERSATION_DETAILS): traguardi o conclusioni importanti all'interno del dialogo. Ad esempio, "Ho prenotato biglietti aerei per un viaggio di andata e ritorno tra JFK e SFO. Parto il 1° giugno 2025 e torno il 7 giugno 2025."
    • Istruzioni esplicite di memorizzazione / eliminazione (EXPLICIT_INSTRUCTIONS): informazioni che l'utente chiede esplicitamente all'agente di memorizzare o eliminare. Ad esempio, se l'utente dice "Ricorda che utilizzo principalmente Python", Memory Bank genera un ricordo come "Utilizzo principalmente Python".
  • Argomenti personalizzati: l'etichetta e le istruzioni vengono definite da te durante la configurazione dell'istanza di Memory Bank. Verranno utilizzate nel prompt per il passaggio di estrazione di Memory Bank. Ad esempio,

    Dizionario

    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."""
        }
    }
    

    Basato sulla classe

    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."""
      )
    )
    

    Quando utilizzi argomenti personalizzati, ti consigliamo di fornire anche esempi few-shot che mostrino come estrarre i ricordi dalla conversazione.

Con la personalizzazione, puoi utilizzare qualsiasi combinazione di argomenti dei ricordi. Ad esempio, puoi utilizzare un sottoinsieme degli argomenti di memoria gestita disponibili:

Dizionario

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

Basato su classi

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

customization_config = CustomizationConfig(
  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)
      ),
  ]
)

Puoi anche utilizzare una combinazione di argomenti gestiti e personalizzati (o utilizzare solo argomenti personalizzati):

Dizionario

customization_config = {
  "memory_topics": [
    { "managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" } },
    {
      "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."""
        }
    }
  ]
}

Basato su classi

from agentplatform.types import ManagedTopicEnum
from agentplatform.types import MemoryBankCustomizationConfig as CustomizationConfig
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic
from agentplatform.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic

customization_config = CustomizationConfig(
  memory_topics=[
      MemoryTopic(
          managed_memory_topic=ManagedMemoryTopic(
              managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)
      ),
      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."""
          )
    )
  ]
)

Esempi few-shot

Gli esempi few-shot ti consentono di dimostrare il comportamento di estrazione della memoria previsto a Memory Bank. Ad esempio, puoi fornire una conversazione di input di esempio e i ricordi che dovrebbero essere estratti da questa conversazione.

Ti consigliamo di utilizzare sempre pochi esempi con argomenti personalizzati in modo che Memory Bank possa apprendere il comportamento previsto. Gli esempi di pochi scatti sono facoltativi quando si utilizzano argomenti gestiti, poiché Memory Bank definisce esempi per ogni argomento. Mostra conversazioni che non dovrebbero generare ricordi fornendo un elenco generated_memories vuoto.

Ad esempio, puoi fornire esempi few-shot che mostrano come estrarre feedback sulla tua attività dai messaggi dei clienti:

Dizionario

example = {
    "conversationSource": {
      "events": [
        {
          "content": {
            "role": "model",
            "parts": [{ "text": "Welcome back to The Daily Grind! We'd love to hear your feedback on your visit." }] }
        },
        {
          "content": {
            "role": "user",
            "parts": [{ "text": "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend." }] }
        }
      ]
    },
    "generatedMemories": [
      {
        "fact": "The user reported that the drip coffee was lukewarm."
      },
      {
        "fact": "The user felt the music in the shop was too loud."
      }
    ]
}

Basato su classi

from google.genai.types import Content, Part
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExampleGeneratedMemory as ExampleGeneratedMemory

example = GenerateMemoriesExample(
    conversation_source=ConversationSource(
        events=[
            ConversationSourceEvent(
                content=Content(
                    role="model",
                    parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
                )
            ),
            ConversationSourceEvent(
                content=Content(
                    role="user",
                    parts=[Part(text= "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend.")]
                )
            )
        ]
    ),
    generated_memories=[
        ExampleGeneratedMemory(
            fact="The user reported that the drip coffee was lukewarm."
        ),
        ExampleGeneratedMemory(
            fact="The user felt the music in the shop was too loud."
        )
    ]
)

Puoi anche fornire esempi di conversazioni che non dovrebbero generare ricordi fornendo un elenco vuoto per l'output previsto (generated_memories):

Dizionario

example = {
    "conversationSource": {
        "events": [
          {
              "content": {
                  "role": "model",
                  "parts": [{ "text": "Good morning! What can I get for you at The Daily Grind?" }] }
          },
          {
              "content": {
                  "role": "user",
                  "parts": [{ "text": "Thanks for the coffee." }] }
          }
        ]
    },
    "generatedMemories": []
}

Basato su classi

from google.genai.types import Content, Part
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
from agentplatform.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent

example = GenerateMemoriesExample(
    conversation_source=ConversationSource(
        events=[
            ConversationSourceEvent(
                content=Content(
                    role="model",
                    parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
                )
            ),
            ConversationSourceEvent(
                content=Content(
                    role="user",
                    parts=[Part(text= "Thanks for the coffee!")]
                )
            )
        ]
    ),
    generated_memories=[]
)

Prospettiva della memoria

Per impostazione predefinita, i ricordi vengono generati in prima persona (ad es. "Utilizzo Memory Bank per la gestione della memoria"). Puoi configurare Memory Bank in modo che generi in terza persona (ad es. "L'utente utilizza Memory Bank per la gestione della memoria") utilizzando il parametro enable_third_person_memories.

Dizionario

customization_config = {
  "enable_third_person_memories": True
}

Basato sulla classe

from agentplatform.types import MemoryBankCustomizationConfig as CustomizationConfig

customization_config = CustomizationConfig(
    enable_third_person_memories=True
)

Personalizzazione del consolidamento

Durante il consolidamento, Memory Bank determina come integrare le informazioni appena acquisite nel set di ricordi esistente. Memory Bank valuta se AGGIUNGERE nuovi ricordi, AGGIORNARE quelli esistenti con un contesto aggiuntivo o ELIMINARE quelli obsoleti.

Per garantire ricordi di alta qualità e confermati, Memory Bank può facoltativamente analizzare la cronologia di un ricordo per distinguere le tendenze a lungo termine dai valori anomali una tantum.

Per impostazione predefinita, Memory Bank confronta le nuove informazioni solo con lo snapshot più recente di una memoria candidata (una "revisione della memoria"). Per aumentare la profondità di questa analisi, configura il parametro revisions_per_candidate_count. Questo parametro definisce il numero di revisioni precedenti di ogni "ricordo candidato" (il record specifico in fase di valutazione per un aggiornamento) che Memory Bank prende in considerazione durante il consolidamento.

Dizionario

customization_config = {
  "consolidation_config": {
    "revisions_per_candidate_count": 10
  }
}

Basato su classi

from agentplatform.types import MemoryBankCustomizationConfig as CustomizationConfig
from agentplatform.types import MemoryBankCustomizationConfigConsolidationConfig as ConsolidationConfig

customization_config = CustomizationConfig(
    consolidation_config=ConsolidationConfig(
      revisions_per_candidate_count=10
    )
)

L'aumento di revisions_per_candidate_count comporta ricordi più coerenti e confermati, tenendo conto della ripetizione delle informazioni acquisite. Tuttavia, un numero più elevato aumenta il consumo di token durante il processo di consolidamento.

Applicazione delle configurazioni di personalizzazione

Per applicare le configurazioni di personalizzazione all'istanza di Memory Bank, forniscile nell'elenco unstructured_memory_configs di managed_semantic_memory_config:

Dizionario

managed_semantic_memory_config = {
  "unstructured_memory_configs": [customization_config],
  # Include other configurations (similarity search, generation, TTL)...
}

Basato su classi

from agentplatform.types import ManagedSemanticMemoryConfig

managed_semantic_memory_config = ManagedSemanticMemoryConfig(
  unstructured_memory_configs=[customization_config],
  # Include other configurations (similarity search, generation, TTL)...
)

Configurazione della ricerca di somiglianze

La configurazione della ricerca di somiglianze controlla quale modello di embedding viene utilizzato dalla tua istanza per la ricerca di somiglianze. La ricerca di similarità viene utilizzata per identificare quali memorie devono essere candidate per il consolidamento e per il recupero della memoria basato sulla ricerca di similarità. Se questa configurazione non viene fornita, Memory Bank utilizza text-embedding-005 come modello predefinito.

Se prevedi che le conversazioni degli utenti siano in lingue diverse dall'inglese, utilizza un modello che supporti più lingue, come gemini-embedding-2, gemini-embedding-001 o text-multilingual-embedding-002, per migliorare la qualità del recupero.

Dizionario

similarity_search_config = {
    "embedding_model": "EMBEDDING_MODEL",
}

Basato su classi

from agentplatform.types import ManagedSemanticMemoryConfigSimilaritySearchConfig as SimilaritySearchConfig

similarity_search_config = SimilaritySearchConfig(
    embedding_model="EMBEDDING_MODEL"
)

Sostituisci quanto segue:

  • EMBEDDING_MODEL: il modello di text embedding di Google da utilizzare per la ricerca per somiglianza, nel formato projects/{project}/locations/{location}/publishers/google/models/{model}.

Configurazione della generazione

La configurazione della generazione controlla quale LLM viene utilizzato per la generazione di ricordi, inclusa l'estrazione di ricordi e il consolidamento di nuovi ricordi con quelli esistenti.

A partire dal 29 giugno 2026, Memory Bank utilizza gemini-3.5-flash per il modello predefinito. Le istanze create prima di questa data utilizzano gemini-2.5-flash.

Per le nuove istanze di Memory Bank che utilizzano il modello predefinito:

  • Le istanze di Memory Bank nella località multiregionale us o nelle regioni singole us-* (ad esempio us-central1) utilizzano l'endpoint Gemini 3.5 della località multiregionale us.
  • Le istanze di Memory Bank nella località multiregionale eu o nelle regioni singole eu-* (ad esempio europe-west2) utilizzano l'endpoint Gemini 3.5 multiregionale eu.
  • Tutte le altre regioni di Memory Bank utilizzano l'endpoint Gemini 3.5 globale.

Per le istanze di Memory Bank create prima del 29 giugno 2026 utilizzando il modello predefinito, Memory Bank utilizza l'endpoint Gemini global per le regioni che non hanno un endpoint Gemini 2.5 regionale disponibile.

Dizionario

generation_config = {
  "model": "LLM_MODEL",
}

Basato su classi

from agentplatform.types import ManagedSemanticMemoryConfigGenerationConfig as GenerationConfig

generation_config = GenerationConfig(
  model="LLM_MODEL"
)

Sostituisci quanto segue:

  • LLM_MODEL: il modello LLM di Google da utilizzare per estrarre e consolidare i ricordi, nel formato projects/{project}/locations/{location}/publishers/google/models/{model}.

Configurazione della durata (TTL)

La configurazione TTL controlla il modo in cui Memory Bank deve impostare dinamicamente il tempo di scadenza dei ricordi. Una volta trascorso il periodo di validità, i ricordi non saranno più disponibili per il recupero e verranno eliminati.

Se la configurazione non viene fornita, la data di scadenza non verrà impostata in modo dinamico per i ricordi creati o aggiornati, pertanto i ricordi non scadranno a meno che la data di scadenza non venga impostata manualmente.

Esistono due opzioni per la configurazione del TTL:

  • TTL predefinito: il TTL verrà applicato a tutte le operazioni che creano o aggiornano una memoria, incluse UpdateMemory, CreateMemory e GenerateMemories.

    Dizionario

    ttl_config = {
        "default_ttl": f"TTLs"
    }
    

    Basato su classi

    from agentplatform.types import ManagedSemanticMemoryConfigTtlConfig as TtlConfig
    
    ttl_config = TtlConfig(
        default_ttl=f"TTLs"
    )
    

    Sostituisci quanto segue:

    • TTL: la durata in secondi del TTL. Per le informazioni salvate aggiornate, la data di scadenza appena calcolata (ora + TTL) sovrascriverà la data di scadenza precedente della memoria.
  • TTL granulare (per operazione): il TTL viene calcolato in base all'operazione che ha creato o aggiornato la memoria. Se non è impostato per una determinata operazione, l'operazione non aggiornerà la data di scadenza del ricordo.

    Dizionario

    ttl_config = {
        "granular_ttl": {
            "create_ttl": f"CREATE_TTLs",
            "generate_created_ttl": f"GENERATE_CREATED_TTLs",
            "generate_updated_ttl": f"GENERATE_UPDATED_TTLs"
        }
    }
    

    Basato su classi

    from agentplatform.types import ManagedSemanticMemoryConfigTtlConfig as TtlConfig
    from agentplatform.types import ManagedSemanticMemoryConfigTtlConfigGranularTtlConfig as GranularTtlConfig
    
    ttl_config = TtlConfig(
        granular_ttl_config=GranularTtlConfig(
            create_ttl=f"CREATE_TTLs",
            generate_created_ttl=f"GENERATE_CREATED_TTLs",
            generate_updated_ttl=f"GENERATE_UPDATED_TTLs",
        )
    )
    

    Sostituisci quanto segue:

    • CREATE_TTL: La durata in secondi del TTL per le informazioni salvate create utilizzando CreateMemory.
    • GENERATE_CREATED_TTL: la durata in secondi del TTL per i ricordi creati utilizzando GenerateMemories.
    • GENERATE_UPDATED_TTL: la durata in secondi del TTL per le informazioni salvate aggiornate utilizzando GenerateMemories. L'ora di scadenza appena calcolata (ora + TTL) sovrascriverà l'ora di scadenza precedente del ricordo.

Passaggi successivi

Guida rapida

Inizia a utilizzare l'API Memory Bank per gestire i ricordi a lungo termine.

Guida rapida

Inizia a utilizzare l'Agent Development Kit (ADK).