Récupérer des souvenirs

Cette page explique comment récupérer les souvenirs générés et importés depuis la Banque de souvenirs. Pour découvrir l'intégralité du workflow de configuration, de génération et d'utilisation de la banque de mémoire, consultez le guide de démarrage rapide avec l'API REST.

Vous disposez des options suivantes pour récupérer les souvenirs générés :

  • Obtenir un souvenir : obtenir le contenu complet d'un souvenir.

  • Lister les souvenirs : lister les souvenirs

  • Récupérer des souvenirs : récupérez des souvenirs à l'aide de la récupération de mémoire basée sur le champ d'application. Récupérez des souvenirs à l'aide de la recherche par similarité ou tous les souvenirs inclus dans le champ d'application.

Configurer votre environnement

Avant de commencer, vous devez configurer votre environnement et votre instance Agent Engine. Cette section suppose que vous avez configuré un environnement de développement Python ou que vous utilisez un environnement d'exécution avec un environnement de développement Python (tel que Colab).

Importer des bibliothèques

Installez le SDK Vertex AI :

  pip install google-cloud-aiplatform>=1.100.0

Configurer un client SDK Vertex AI

  import vertexai

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : votre région. Seule la région us-central1 est acceptée pour la banque de mémoire Vertex AI Agent Engine.

Configurer votre instance Agent Engine

Pour extraire des souvenirs de la Memory Bank, vous avez d'abord besoin d'une instance d'Agent Engine. Vous pouvez créer une instance ou en obtenir une existante. Les nouvelles instances Agent Engine sont vides, sauf si vous créez ou générez des souvenirs au préalable.

Créer

agent_engine = client.agent_engines.create()

Utiliser un secret existant

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

Remplacez les éléments suivants :

  • AGENT_ENGINE_NAME : nom de l'Agent Engine. Il doit être au format projects/.../locations/.../reasoningEngines/.... Vous ne pouvez utiliser les instances Agent Engine dans us-central1 que pour la Memory Bank de Vertex AI Agent Engine.

Obtenir un souvenir

Utilisez GetMemories pour obtenir l'intégralité du contenu d'une mémoire :

memory = client.agent_engines.get_memory(name="MEMORY_NAME")

Remplacez les éléments suivants :

  • MEMORY_NAME : nom de mémoire complet au format "projects/.../locations/.../reasoningEngines/.../memories...".

Lister les souvenirs

Utilisez ListMemories pour récupérer tous les souvenirs de votre banque de souvenirs.

pager = client.agent_engines.list_memories(name=agent_engine.api_resource.name)
for page in pager:
  print(page)

Récupérer des souvenirs à l'aide de la récupération basée sur le champ d'application

Vous pouvez utiliser RetrieveMemories pour récupérer des souvenirs pour une portée spécifique. Seules les mémoires dont le champ d'application est exactement le même (indépendamment de l'ordre) que celui de la demande de récupération sont renvoyées. Par exemple, vous pouvez récupérer tous les souvenirs associés à un utilisateur spécifique à l'aide de {"user_id": "123"}. Si aucun souvenir n'est renvoyé, cela signifie que la banque de souvenirs n'en a aucun pour le champ d'application fourni.

Le champ d'application d'un souvenir est défini lorsqu'il est généré ou créé, et il est immuable.

Vous pouvez utiliser RetrieveMemories pour effectuer les opérations suivantes pour un champ d'application spécifique :

Si vous avez de nombreux souvenirs pour une portée spécifique, vous pouvez utiliser la recherche par similarité pour ne récupérer que les souvenirs les plus similaires en fournissant des paramètres de recherche par similarité. La banque de mémoire ne prend en compte que les souvenirs dont le champ d'application est exactement le même que celui de la demande lors de la recherche par similarité. La recherche de similarités compare les vecteurs d'embedding entre les faits des souvenirs et la requête de recherche.

Les souvenirs renvoyés sont triés du plus similaire (distance euclidienne la plus courte) au moins similaire (distance euclidienne la plus longue) :

results = client.agent_engines.retrieve_memories(
    name=agent_engine.api_resource.name,
    scope=SCOPE,
    similarity_search_params={
        "search_query": "QUERY",
        # Optional. Defaults to 3.
        "top_k": 3
    }
)
# RetrieveMemories returns a pager. You can use `list` to retrieve all memories.
list(results)

"""
Returns:

[
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is a fact."
      },
      distance=0.5
    ),
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is another fact."
      },
      distance=0.7
    ),
]
"""

Remplacez les éléments suivants :

  • QUERY : requête pour laquelle effectuer une recherche par similarité. Par exemple, vous pouvez utiliser la dernière intervention de l'utilisateur dans la conversation comme requête.

  • SCOPE : dictionnaire représentant le champ d'application de la recherche par similarité. Exemple :{"user_id": "123"} Seules les mémoires ayant la même portée que la requête sont prises en compte.

Récupérer toutes les infos mémorisées

Si aucun paramètre de recherche de similarité n'est fourni, RetrieveMemories renvoie toutes les mémoires ayant la portée indiquée, quelle que soit leur similarité avec la conversation en cours.

results = client.agent_engines.retrieve_memories(
    name=agent_engine.api_resource.name,
    scope=SCOPE
)
# RetrieveMemories returns a pager. You can use `list` to retrieve all pages' memories.
list(results)

"""
Returns:

[
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is a fact."
      }
    ),
    RetrieveMemoriesResponseRetrievedMemory(
      memory=Memory(
        name="projects/.../locations/.../reasoningEngines/.../memories/...",
        ...
        fact="This is another fact."
      }
    ),
]
"""

Remplacez les éléments suivants :

  • SCOPE : dictionnaire représentant le champ d'application pour la récupération. Exemple :{"user_id": "123"} Seuls les souvenirs ayant la même portée que la requête sont renvoyés.