Mémoire d'agent
Cette page présente l'implémentation concrète de la mémoire de l'agent Oracle AI.
Mémoire de l'agent Oracle
Remarque : OracleAgentMemory.delete_thread() est le chemin pris en charge pour le nettoyage en cascade de niveau thread. Il supprime le thread avec les messages associés, les mémoires durables et les données d'extraction gérées. Elle est plus large que OracleThread.delete_message(), ce qui supprime uniquement la ligne de message brut. Avant de supprimer le thread, il attend une extraction en arrière-plan acceptée antérieurement déjà connue de ce client pour ce thread. Il ne sérialise pas toutes les opérations simultanées pour le même thread tant que la suppression est en cours.
classe oracleagentmemory.core.OracleAgentMemory
Bases : IAgentMemory
Client de mémoire d'agent soutenu par Oracle DB ou un emplacement de stockage fourni par l'appelant.
Créez un client de mémoire.
- Paramètres:
- store
OracleMemoryStore: instance de stockage préconfigurée facultative. Lorsqu'il est fourni, le client utilise ce magasin directement au lieu d'instancier son propre magasin. Cela est utile lorsque les appelants ont besoin d'une configuration de stockage supérieure aux options de constructeur exposées parOracleAgentMemory. - connection
object: connexion/pool Oracle DB facultatif. Lorsqu'elle est fournie, la banque de données est utilisée. La transmission d'une connexion brute active le mode de session unique pour cette instance client. Par conséquent, les demandes simultanées doivent utiliser un pool de connexions à la place. Lorsqu'ils sont omis, les appelants doivent transmettre un élémentstoreexplicite. - embedder
IEmbedder | str: instance d'implémentation Embedder ou identificateur de modèle d'intégration LiteLLM. Lorsqu'il est omis, aucun intégrateur n'est joint. La recherche de base de données vectorielle uniquement nécessite ensuite des vecteurs précalculés via des API de stockage de niveau inférieur, tandis que la recherche de base de données par mot-clé peut être exécutée directement à partir du texte de requête. La recherche de base de données hybride requiert une instanceOracleDBEmbedderafin que l'index hybride géré et l'intégrateur principal utilisent le même modèle dans la base de données. - LLM
ILlm: adaptateur LLM facultatif utilisé par les threads pour l'extraction de mémoire et/ou l'agrégation de contexte. Par défaut, les threads créés ou chargés à partir de ce client nécessitent un LLM afin que les messages récents puissent être extraits pour des mémoires durables. Transmettez un élémentllmici, indiquez-en un ultérieurement danscreate_threadou désactivez l'extraction automatique avecmemory_extraction_config=MemoryExtractionConfig(extract_memories=False). - memory_extraction_config
MemoryExtractionConfig: configuration facultative de l'extraction de mémoire au niveau du client. Utilisez-le pour contrôler les paramètres d'extraction automatique de mémoire tels que le mode d'extraction, le comportement récapitulatif et les limites d'extraction. Les champs omis utilisent les valeurs par défaut du kit SDK. - schema_policy
SchemaPolicy | str: stratégie de configuration de schéma de base de données utilisée uniquement lors de la construction d'une banque de base de données à partir deconnection. La valeur par défaut estSchemaPolicy.REQUIRE_EXISTING. UtilisezSchemaPolicy.CREATE_IF_NECESSARYlors de la première activation de la recherche par mot-clé ou hybride sur un schéma existant, ou lors de l'ouverture d'un ancien schéma géré publié pris en charge, afin que le kit SDK puisse appliquer des mises à niveau de schéma non destructives et ajouter les objets de recherche de texte requis. Les schémas de développement ou partiellement mis à jour qui revendiquent déjà la forme de version actuelle doivent être recréés à la place. - memory_store_id
str: ID stable de la banque de mémoire de base de données gérée utilisé uniquement lors de la construction d'une banque de base de données à partir deconnection. Réutilisez le même ID pour rouvrir le même magasin géré. L'ID est joint aux noms d'objet de base de données gérée avec un trait de soulignement. Il doit donc commencer par une lettre, ne contenir que des lettres, des chiffres et des traits de soulignement et ne pas dépasser 16 caractères. Transmettez ceci outable_name_prefix, pas les deux. Si elle est omise, la banque de base de données utilisetable_name_prefixou la valeur par défaut sans préfixe lorsquetable_name_prefixest également omis. -
table_name_prefix
str–Préfixe de table/d'index de base de données facultatif utilisé uniquement lors de la construction d'une banque de base de données à partir de
connection. Transmettez ceci oumemory_store_id, pas les deux.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_store_id. - search_strategy
SearchStrategy– ValeurSearchStrategyqui sélectionne le back-end de recherche de base de données lors de la construction d'une banque de données à partir deconnection. UtilisezSearchStrategy.VECTOR(valeur par défaut) pour l'extraction vectorielle uniquement,SearchStrategy.HYBRIDpour interroger l'index vectoriel hybride Oracle géré sur le texte de recherche stocké ouSearchStrategy.KEYWORDpour effectuer un classement par correspondance mot-clé/texte sur le texte de recherche stocké sans fusion vectorielle.KEYWORDne nécessite pas d'intégrateur.HYBRIDexige queembeddersoit un élémentOracleDBEmbedder. Le démarrage du client échoue lorsqu'une stratégie incompatible est utilisée avec un schéma existant car ce schéma peut ne pas contenir l'état de recherche stocké dont la stratégie a besoin. - search_index_sync
SearchIndexSyncMode– ValeurSearchIndexSyncModequi sélectionne le comportement d'actualisation de l'index de recherche géré pourSearchStrategy.HYBRIDetSearchStrategy.KEYWORD.SearchIndexSyncMode.ON_COMMITest la valeur par défaut et permet de rechercher des enregistrements dès que la transaction d'écriture est validée.SearchIndexSyncMode.MANUALlaisse l'actualisation à une opération de synchronisation explicite côté base de données.SearchIndexSyncMode.AUTOpermet à Oracle d'actualiser l'index hybride géré de manière asynchrone et n'est pris en charge qu'avecSearchStrategy.HYBRID; la recherche par mot-clé rejetteAUTO. -
extract_memories
bool–Lorsque
True, les threads créés ou chargés par ce client nécessitent un LLM et l'extraction automatique de mémoire reste activée. Définissez la valeur surFalsepour désactiver l'extraction automatique de la mémoire et permettre à ces threads de fonctionner sans LLM. La valeur par défaut estTrue. Les LLM d'extraction manquants échouent donc rapidement.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_custom_instructions
str–Instructions personnalisées facultatives ajoutées à l'invite du système d'extraction automatique de mémoire pour les threads créés ou chargés par ce client. Les valeurs par thread transmises à
create_thread,get_threadouupdate_threadsont prioritaires.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. - memory_retention_config
MemoryRetentionConfig: configuration facultative de la conservation de la mémoire utilisée uniquement lors de la construction d'une banque de données à partir deconnection.MemoryRetentionConfig.default_ttl_daysest appliqué aux nouveaux messages et mémoires dont l'appel d'écriture ometttl_days.MemoryRetentionConfig.max_ttl_daysapplique des durées explicites par enregistrement au-dessus de la valeur maximale configurée avec un avertissement et, lorsqu'il est défini,ttl_days=Noneutilise cette valeur maximale au lieu de créer des enregistrements qui n'expirent pas. AvecSchemaPolicy.CREATE_IF_NECESSARY, une configuration explicite actualise les métadonnées stockées sur un schéma géré à jour existant, mais elle ne met pas à jour les dates d'expiration existantes. Si vous omettez cette opération, le paramètre existant est conservé. Si une configuration explicite laissedefault_ttl_daysoumax_ttl_daysdansNOT_SET_MARKER, le kit SDK résout cet attribut à sa valeur par défaut (None) avant de comparer ou de stocker les métadonnées de schéma. Choisissez cette configuration en fonction des informations attendues stockées dans les enregistrements, des raisons pour lesquelles l'application la conserve et des engagements de conservation des applications ou des réglementations.
- store
Avertissement : SchemaPolicy.CREATE_IF_NECESSARY peut être plus coûteux que le démarrage normal du client car il peut appliquer des instructions LDD de schéma géré et réécrire les données au mieux avant la réussite de l'initialisation. Planifiez la première ouverture d'un ancien schéma géré en tant qu'opération de migration ou de maintenance lorsque ce schéma peut contenir de nombreuses lignes.
Si la configuration du schéma doit créer le travail de purge géré des enregistrements expirés mais que l'utilisateur de base de données ne dispose pas du privilège Scheduler-job, l'initialisation avertit et continue. Les messages et les mémoires expirés restent masqués lors des lectures et des recherches, mais ils ne sont pas purgés physiquement tant que le travail n'est pas créé par un utilisateur disposant du privilège CREATE JOB ou d'un planificateur équivalent.
Lorsque SchemaPolicy.CREATE_IF_NECESSARY crée pour la première fois un index hybride géré sur un schéma existant, Oracle analyse le texte de recherche stocké et crée l'état de l'index hybride géré à partir du modèle dans la base de données configuré. Le démarrage du client attend la fin de ce script LDD. Planifiez donc la première mise à niveau hybride en tant qu'opération de migration ou de maintenance pour les schémas volumineux. SearchIndexSyncMode contrôle la maintenance en cours après l'existence de l'index. Il ne rend pas le premier build d'index asynchrone.
- Elèves : ValueError – Si une configuration d'emplacement de stockage en conflit est fournie, par exemple en transmettant
storeetconnection, des options propres à la base de données sans connexion à la base de données ou en omettantstoreetconnection. - Paramètres:
- store
OracleMemoryStore - connexion
object - embedder
IEmbedder | str - llm
ILlm - memory_extraction_config
MemoryExtractionConfig - schema_policy
SchemaPolicy | str - memory_store_id
str - préfixe_nom_table
str - search_strategy
SearchStrategy - search_index_sync
SearchIndexSyncMode - extract_memories
bool - memory_extraction_custom_instructions
str - memory_retention_config
MemoryRetentionConfig
- store
Exemples
from oracleagentmemory.core import (
MemoryExtractionConfig,
SearchIndexSyncMode,
OracleAgentMemory,
SchemaPolicy,
SearchStrategy,
)
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
read_only_client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
Utilisez un modèle d'intégration dans la base de données pour exploiter la recherche d'index hybride Oracle :
from oracleagentmemory.core.embedders import OracleDBEmbedder
db_embedder = OracleDBEmbedder(
connection=db_pool,
model="DOC_MODEL",
embedding_dimension=768,
)
hybrid_client = OracleAgentMemory(
connection=db_pool,
embedder=db_embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
search_strategy=SearchStrategy.HYBRID,
search_index_sync=SearchIndexSyncMode.ON_COMMIT,
)
méthode add_agent
Ajoutez un enregistrement de profil d'agent au magasin.
- Paramètres:
- agent_id
str: identificateur d'agent. - information
str: informations de forme libre sur l'agent. - metadata
dict[str, Any] | None– Mapping de métadonnées facultatif stocké sur la ligne de profil d'agent.
- agent_id
- Renvoie : identificateur du profil d'agent stocké.
- Type de retour : str
Remarques
Les enregistrements de profil d'agent sont stockés dans le magasin de niveau client et sont intentionnellement annulés. L'identificateur d'enregistrement renvoyé est le même que l'identificateur public que l'application utilise comme agent_id.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent(
"a1",
"Support assistant",
metadata={"source": "catalog"},
)
'a1'
méthode add_memory
Ajoutez une mémoire dans le système de mémoire, attribuée à l'utilisateur, à l'agent et au thread indiqués.
- Paramètres:
- content
str: contenu de mémoire à conserver. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– Catégorie de mémoire à stocker. Les valeurs prises en charge sont"memory","fact","guideline"et"preference". Lorsqu'il est omis, le contenu est stocké en tant que"memory"général. - user_id
str: identificateurs de portée facultatifs associés à la mémoire stockée. - agent_id
str: identificateurs de portée facultatifs associés à la mémoire stockée. - thread_id
str: identificateurs de portée facultatifs associés à la mémoire stockée. - memory_id
str: identificateur stable fourni par l'appelant facultatif pour cette ligne de mémoire. - metadata
dict[str, Any] | None: métadonnées facultatives pour la persistance avec la mémoire stockée. - timestamp
str | None: horodatage facultatif à enregistrer pour cette mémoire. Il représente le moment où la mémoire a été créée. Lorsqu'il est omis ouNone, l'emplacement de stockage utilise l'heure actuelle. Lorsquettl_anchorest défini surTimeToLiveAnchor.TIMESTAMP, les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - ttl_days
int | None: durée de vie facultative en jours. Omettez cet argument pour utiliser la durée de vie par défaut du schéma. TransmettezNonepour utiliserMemoryRetentionConfig.max_ttl_dayslorsque la configuration de conservation en définit une ou pour stocker une mémoire qui n'expire pas lorsqu'elle ne l'est pas. Les valeurs au-dessus deMemoryRetentionConfig.max_ttl_dayssont bloquées à ce maximum avec un avertissement. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création de la base de données ouTimeToLiveAnchor.TIMESTAMPpour l'horodatage de mémoire. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - **store_kwargs (N'importe lequel) – Options d'écriture propres à l'emplacement de stockage transférées vers l'emplacement de stockage secondaire.
- content
- Retours : Identificateur de l'enregistrement de mémoire inséré.
- Type de retour : str
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("User likes pizza", memory_id="mem-1")
memory_id
'mem-1'
method add_memory_async (async)
Ajoutez de manière asynchrone un enregistrement de mémoire au client.
- Paramètres:
- content
str: contenu texte à stocker en tant que mémoire. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– Catégorie de mémoire à stocker. Les valeurs prises en charge sont"memory","fact","guideline"et"preference". Lorsqu'il est omis, le contenu est stocké en tant que"memory"général. - user_id
str: identificateur utilisateur facultatif à associer à la mémoire. - agent_id
str: identificateur d'agent facultatif à associer à la mémoire. - thread_id
str: identificateur de thread facultatif à associer à la mémoire. - memory_id
str: identificateur stable fourni par l'appelant (facultatif). Lorsqu'il est omis, les magasins en génèrent un. - metadata
dict[str, Any] | None: métadonnées facultatives à conserver avec la ligne de mémoire. - timestamp
str | None: horodatage facultatif à enregistrer pour cette mémoire. Il représente le moment où la mémoire a été créée. Lorsqu'il est omis ouNone, l'emplacement de stockage utilise l'heure actuelle. - ttl_days
int | None: durée de vie facultative en jours. Omettez cet argument pour utiliser la durée de vie par défaut du schéma. TransmettezNonepour stocker une mémoire qui n'expire pas. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création de la base de données ouTimeToLiveAnchor.TIMESTAMPpour l'horodatage de mémoire. - **store_kwargs (N'importe lequel) – Options d'écriture propres à l'implémentation transmises à la banque de sauvegarde.
- content
- Retours : Identificateur de l'enregistrement de mémoire inséré.
- Type de retour : str
méthode add_user
Ajoutez un enregistrement de profil utilisateur au magasin.
- Paramètres:
- user_id
str: identificateur utilisateur. - information
str: informations de forme libre sur l'utilisateur. - metadata
dict[str, Any] | None– Mapping de métadonnées facultatif stocké sur la ligne du profil utilisateur.
- user_id
- Retours : Identifiant du profil utilisateur stocké.
- Type de retour : str
Remarques
Les enregistrements de profil utilisateur sont stockés dans le magasin de niveau client et sont intentionnellement annulés. L'identificateur d'enregistrement renvoyé est le même que l'identificateur public que l'application utilise comme user_id.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user(
"u1",
"Prefers concise answers.",
metadata={"source": "crm"},
)
'u1'
méthode close
Fermez le composant de mémoire de l'agent.
La fermeture arrête d'accepter le nouveau travail d'extraction en arrière-plan et attend que l'extraction en arrière-plan en attente se termine jusqu'au délai d'attente configuré. Si ce délai expire, close() renvoie même si certains travaux d'extraction en arrière-plan sont encore inachevés. La méthode est idempotente.
- Paramètres : timeout
float | None: nombre maximal de secondes d'attente facultatif pour la fin du travail d'extraction en arrière-plan accepté. La valeur par défaut est300. TransmettezNonepour attendre indéfiniment. - Type de retour : Aucun
Exemples
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.close()
method close_async (async)
Fermez de manière asynchrone le composant de mémoire de l'agent.
Cette méthode suit le même comportement d'arrêt que close(). Si le délai expire, il peut revenir alors que le travail d'extraction en arrière-plan est toujours en cours d'exécution.
- Paramètres : timeout
float | None: nombre maximal de secondes d'attente facultatif pour la fin du travail d'extraction en arrière-plan accepté. La valeur par défaut est300. TransmettezNonepour attendre indéfiniment. - Type de retour : Aucun
Exemples
await client.close_async()
méthode create_thread
Créez et enregistrez un thread.
- Paramètres:
- thread_id
str: identificateur de thread. Si elle est omise, une nouvelle est générée. - user_id
str– Identifiant utilisateur attaché à cet enregistrement de thread. Si elle est omise, une nouvelle est générée. - agent_id
str: identificateur d'agent attaché à cet enregistrement de thread. Si elle est omise, une nouvelle est générée. - metadata
dict[str, Any] | None– Métadonnées de type JSON facultatives conservées avec le fil de conversation. - LLM
ILlm– Remplacement facultatif du LLM pour ce thread. Si elle est omise, le LLM de niveau client configuré au moment de la construction est utilisé. Par défaut, le client ou le thread doit fournir un LLM afin que l'extraction automatique de la mémoire puisse s'exécuter. Définissezmemory_extraction_config=MemoryExtractionConfig(extract_memories=False)ici ou sur le client pour refuser cette exigence. - max_message_token_length
int– Taille maximale des messages d'invite avant troncation ou agrégation lors de l'extraction de la mémoire et des mises à jour de résumé contextuel. Le contenu du message stocké reste inchangé. Lorsqu'elle est omise, la valeur par défaut est15_000tokens. - message_shortening_input_token_limit
int– Taille maximale, en jetons, de l'extrait de message envoyé au LLM lors du raccourcissement des copies de message d'invite surdimensionnées. Lorsqu'elle est omise, la valeur par défaut est30_000tokens. - memory_extraction_config
MemoryExtractionConfig: configuration facultative de l'extraction de mémoire par thread. Les champs omis héritent du composant de mémoire de l'agent. La configuration résolue est stockée avec le thread afin que les chargements ultérieurs préservent le comportement de création. - context_card_token_limit
int– Budget maximal de jetons d'entrée pour l'invite LLM utilisée pour créer la liste récapitulative et thématique incluse dans la carte de contexte. Lorsqu'elle est omise, la valeur par défaut est100_000. - context_card_type_search_concurrency
int– Nombre maximal de recherches d'enregistrements de type mémoire à exécuter simultanément lors de la création d'une carte de contexte avecmin_relevant_results_by_type. Lorsqu'elle est omise, la valeur par défaut est5. -
extract_memories
bool–Remplacement par thread facultatif pour l'extraction automatique de la mémoire. Lorsque
True, ce thread requiert un LLM afin que l'extraction automatique puisse être exécutée. Définissez la valeur surFalsepour désactiver l'extraction automatique pour ce thread et autoriser l'opération sans LLM. Lorsqu'il est omis, le paramètreextract_memoriesde niveau client est utilisé.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_window
int:Nombre de messages récents à inclure lors de l'extraction de mémoire. Définissez la valeur sur
-1pour effectuer une extraction par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés. Lorsqu'elle est omise, la valeur par défaut est-1.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
context_summary_update_frequency
int–Fréquence des actualisations de résumé contextuel. Définissez la valeur sur
-1pour effectuer une mise à jour récapitulative par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés. Lorsqu'elle est omise, la valeur par défaut est-1.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_frequency
int:Fréquence des mises à jour d'extraction de mémoire. Définissez la valeur sur
-1pour effectuer une extraction par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés. Lorsqu'elle est omise, la valeur par défaut est-1.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_token_limit
int–Taille maximale, en jetons, des invites LLM utilisées pour l'extraction de mémoire et l'exécution des mises à jour récapitulatives. Lorsqu'elle est omise, la valeur par défaut est
100_000.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_custom_instructions
str–Instructions personnalisées facultatives ajoutées à l'invite du système d'extraction de mémoire pour ce thread. Lorsqu'elle est fournie, la valeur résolue est conservée avec la configuration d'exécution de thread.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Remplacement facultatif par thread pour les métadonnées copiées à partir de messages source dans des mémoires extraites automatiquement.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
enable_context_summary
bool–Indique si un récapitulatif de contexte en cours d'exécution doit être conservé pour ce thread.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. - **kwargs (Tout) : options de thread supplémentaires propres à l'implémentation.
- thread_id
- Renvoie : instance
OracleThread. - Type de retour : OracleThread
- Elèves : ValueError – Si aucun LLM n'est disponible pour l'extraction automatique de la mémoire et que le thread et le client n'ont pas été configurés avec
memory_extraction_config=MemoryExtractionConfig(extract_memories=False).
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c1", user_id="u1")
thread.thread_id
'c1'
méthode delete_agent
Supprimer un enregistrement de profil d'agent par identifiant.
- Paramètres:
- agent_id
str: identificateur d'agent dont le profil doit être enlevé. - cascade
bool: lorsqueTrue(par défaut), supprimez également les enregistrements ciblés sur cet agent. Cela inclut la suppression des threads propriétaires eux-mêmes, les messages et les enregistrements de type mémoire supprimés avec ces threads, ainsi que tous les enregistrements de portée agent directs restants tels que les messages, les mémoires, les directives, les faits ou les préférences. Ce nettoyage ciblé s'exécute quand la ligne agent-profile correspondante est déjà absente. Définissez la valeur surFalsepour enlever uniquement l'enregistrement de profil.
- agent_id
- Retours : nombre de lignes de profil d'agent supprimées (
0ou1). Il peut toujours s'agir de0lorsque des lignes de portée ont été enlevées lors du nettoyage en cascade. - Type de retour : int
- Elèves : TimeoutError – Signalé lorsque l'extraction en arrière-plan acceptée précédemment pour des threads propriétaires déjà connus ne se termine pas avant le délai d'attente de suppression interne.
Remarques
Les suppressions en cascade sont planifiées et exécutées dans le magasin de sauvegarde, de sorte que la suppression de profil et toutes les suppressions enfant ciblées se produisent en une seule opération. Avant l'exécution de la suppression en cascade, cette méthode attend une extraction en arrière-plan antérieure déjà acceptée pour les threads propriétaires connus à ce moment via ce composant de mémoire d'agent. Il n'attend pas le travail accepté après ce début d'attente ou le travail démarré par un autre composant ou processus de mémoire d'agent. L'utilisation simultanée de portée acteur pendant la suppression n'est pas prise en charge.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent("a-delete", "Support assistant")
'a-delete'
client.delete_agent("a-delete")
1
méthode delete_memory
Supprimer un enregistrement de type mémoire (par exemple, une mémoire, un fait, une préférence ou une consigne) par identifiant.
- Paramètres : memory_id
str– Identificateur de mémoire. L'identificateur peut faire référence à un enregistrementmemory,guideline,factoupreferencestocké. - Renvoie : nombre de lignes de type mémoire supprimées (
0ou1). - Type de retour : int
Exemples
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("Temporary memory", memory_id="mem-delete")
client.delete_memory(memory_id)
1
method delete_memory_async (async)
Supprimer de manière asynchrone un enregistrement de type mémoire (par exemple, une mémoire, un fait, une préférence ou une consigne) par identifiant.
- Paramètres : memory_id
str– Identificateur de l'enregistrement de type mémoire à supprimer. - Retours : nombre d'enregistrements de type mémoire supprimés.
- Type de retour : int
méthode delete_thread
Supprimer tous les enregistrements associés à un identificateur de thread.
- Paramètres : thread_id
str– Identificateur de thread à supprimer. - Renvoie : nombre de threads de conversation supprimés (
0ou1). - Type de retour : int
- Elèves : TimeoutError – Signalé lorsque l'extraction en arrière-plan acceptée précédemment pour ce thread ne se termine pas avant le délai d'attente de suppression interne.
Remarques
Utilisez cette opération lorsque vous avez besoin d'une suppression complète de la conservation d'un thread. Le magasin de sauvegarde supprime le thread ainsi que les messages associés de portée thread, les mémoires durables et les données d'extraction gérées. Cela diffère de OracleThread.delete_message(), qui supprime uniquement l'enregistrement de message brut et ne se répercute pas sur les mémoires dérivées créées à partir de ce message. Avant de supprimer le thread, cette méthode attend une extraction en arrière-plan antérieure déjà acceptée pour ce thread via ce composant de mémoire d'agent. Il n'attend pas le travail en arrière-plan accepté après ce début d'attente ou le travail démarré par un autre composant ou processus de mémoire d'agent. L'utilisation simultanée du même thread pendant la suppression n'est pas prise en charge.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c-delete")
client.delete_thread(thread.thread_id)
1
méthode delete_user
Supprimer un enregistrement de profil utilisateur par identifiant.
- Paramètres:
- user_id
str: identificateur utilisateur dont le profil doit être supprimé. - cascade
bool– LorsqueTrue(par défaut), supprimez également les enregistrements ciblés pour cet utilisateur. Cela inclut la suppression des threads propriétaires eux-mêmes, les messages et les enregistrements de type mémoire supprimés avec ces threads, ainsi que tous les enregistrements de portée utilisateur directs restants tels que les messages, les mémoires, les directives, les faits ou les préférences. Ce nettoyage ciblé s'exécute toujours lorsque la ligne de profil utilisateur correspondante est déjà absente. Définissez la valeur surFalsepour enlever uniquement l'enregistrement de profil.
- user_id
- Retours : nombre de lignes de profil utilisateur supprimées (
0ou1). Il peut toujours s'agir de0lorsque des lignes de portée ont été enlevées lors du nettoyage en cascade. - Type de retour : int
- Elèves : TimeoutError – Signalé lorsque l'extraction en arrière-plan acceptée précédemment pour des threads propriétaires déjà connus ne se termine pas avant le délai d'attente de suppression interne.
Remarques
Les suppressions en cascade sont planifiées et exécutées dans le magasin de sauvegarde, de sorte que la suppression de profil et toutes les suppressions enfant ciblées se produisent en une seule opération. Avant l'exécution de la suppression en cascade, cette méthode attend une extraction en arrière-plan antérieure déjà acceptée pour les threads propriétaires connus à ce moment via ce composant de mémoire d'agent. Il n'attend pas le travail accepté après ce début d'attente ou le travail démarré par un autre composant ou processus de mémoire d'agent. L'utilisation simultanée de portée acteur pendant la suppression n'est pas prise en charge.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user("u-delete", "Prefers concise answers.")
'u-delete'
client.delete_user("u-delete")
1
méthode get_thread
Récupérer un thread précédemment créé.
- Paramètres:
- thread_id
str– Identificateur utilisé lors de la création du thread. - LLM
ILlm– Remplacement facultatif du LLM pour le thread rouvert. Lorsqu'il est omis, le LLM de niveau client configuré au moment de la construction est utilisé. - max_message_token_length
int: remplacement facultatif de la taille maximale des messages d'invite avant troncation ou agrégation lors de l'extraction de la mémoire et des mises à jour de résumé contextuel. Le contenu du message stocké reste inchangé. - message_shortening_input_token_limit
int: remplacement facultatif de la taille maximale, en jetons, de l'extrait de message envoyé au LLM lors du raccourcissement des copies de message d'invite surdimensionnées. - memory_extraction_config
MemoryExtractionConfig: configuration d'extraction groupée facultative pour l'instanceOracleThreadrenvoyée. Les champs omis héritent du composant de mémoire d'agent et de configuration de thread stocké. Le remplacement s'applique uniquement à l'instanceOracleThreadrenvoyée et n'est pas réécrit dans la configuration de thread de conversation stockée. - context_card_token_limit
int: remplacement facultatif pour l'instanceOracleThreadrenvoyée. Il définit le budget de jeton d'entrée de l'invite LLM utilisée pour créer la liste récapitulative et thématique incluse dans la carte de contexte. - context_card_type_search_concurrency
int: remplacement facultatif pour l'instanceOracleThreadrenvoyée. Il définit le nombre de recherches d'enregistrements de type mémoire à exécuter simultanément lors de la création d'une carte de contexte avecmin_relevant_results_by_type. -
extract_memories
bool–Remplacement facultatif pour l'extraction automatique de la mémoire sur le thread rouvert. Lorsqu'il est omis, le paramètre
extract_memoriesde niveau client est utilisé.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_window
int:Remplacement facultatif du nombre de messages récents utilisés lors de l'extraction de mémoire.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
context_summary_update_frequency
int–Remplacement facultatif de la fréquence d'actualisation du résumé contextuel.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_frequency
int:Remplacement facultatif de la fréquence des mises à jour d'extraction de mémoire.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_token_limit
int–Remplacement facultatif de la taille maximale, dans les jetons, des invites LLM utilisées pour l'extraction de mémoire et l'exécution des mises à jour récapitulatives.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_custom_instructions
str | None–Remplacement facultatif pour les instructions d'extraction de mémoire personnalisées. La transmission de
Noneefface les instructions personnalisées de niveau thread pour l'instanceOracleThreadrenvoyée sans mettre à jour la configuration de thread de conversation stockée ; une valeur par défaut de niveau client s'applique toujours lorsqu'elle est configurée.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Remplacement facultatif des métadonnées copiées à partir de messages source dans des mémoires extraites automatiquement. Le remplacement s'applique uniquement à l'instance
OracleThreadrenvoyée.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
enable_context_summary
bool–Remplacement facultatif pour indiquer si le thread rouvert doit conserver un récapitulatif du contexte en cours d'exécution.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config.
- thread_id
- Renvoie : instance
OracleThreadreconstruite à partir des métadonnées de stockage. - Type de retour : OracleThread
- Elèves :
- KeyError – Si l'ID de thread est inconnu de cette instance client.
- ValueError – Si aucun LLM n'est disponible pour l'extraction automatique de la mémoire et que le client n'a pas été configuré avec
memory_extraction_config=MemoryExtractionConfig(extract_memories=False).
Remarques
Les remplacements explicites par appel sont prioritaires. Lorsque des remplacements d'exécution sont omis, les threads rouverts utilisent la configuration d'exécution persistante lorsqu'elle est disponible avant de revenir aux valeurs par défaut du kit SDK.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
created = client.create_thread(thread_id="c1", user_id="u1")
loaded = client.get_thread("c1")
loaded.user_id
'u1'
méthode search
Rechercher de manière synchrone les enregistrements pertinents pour une requête.
- Paramètres:
- query
str: chaîne de requête en langage naturel. - user_id
str | None– Filtre d'identificateur utilisateur. Les recherches de client OracleAgentMemory nécessitent une portée utilisateur explicite, sauf siscopeen fournit une. Transmettez un élémentuser_idconcret pour cibler cet utilisateur, ou transmettezNonepour cibler uniquement les enregistrements utilisateur non ciblés. - agent_id
str | None: filtre d'identificateur d'agent facultatif. Ignoré lorsquescopeest fourni. - thread_id
str | None: filtre d'identificateur de thread facultatif. Ignoré lorsquescopeest fourni. - exact_user_match
bool– Indique si la correspondance d'utilisateurs doit être stricte. Les recherches de client OracleAgentMemory nécessitent une correspondance d'utilisateur exacte et rejettentFalse. Ignoré lorsquescopeest fourni. - exact_agent_match
bool: indique si la correspondance d'agent doit être stricte. Ignoré lorsquescopeest fourni. - exact_thread_match
bool: indique si la mise en correspondance des threads doit être stricte. Ignoré lorsquescopeest fourni. - max_results
int: nombre maximal de résultats à renvoyer facultatif. Lorsqu'elle est fournie, elle doit être au moins égale à1. L'omission de cet argument utilise la valeur par défaut10. Limite supérieure : l'appel peut renvoyer moins de résultatsmax_resultslorsque les filtres sont trop restrictifs, lorsqu'il existe moins d'enregistrements correspondants non expirés ou en raison d'un comportement de recherche propre à l'implémentation. - record_types
list[str]– Liste facultative des types d'enregistrement à inclure, tels que"memory"ou"message". -
metadata_filter
dict[str, Any] | None–Mappage de filtre de métadonnées facultatif utilisé comme filtre supplémentaire après le filtrage de portée et de type d'enregistrement. Les entrées dans
metadata_filtersont combinées avec la sémantique AND. Les entrées dont la valeur n'est pas un dictionnaire opérateur de niveau champ utilisent une sémantique de correspondance exacte : la clé demandée doit exister dans les métadonnées d'enregistrement stockées. Les dictionnaires imbriqués correspondent de manière récursive aux objets de métadonnées imbriqués. Les valeurs scalaires et de liste doivent correspondre exactement ; l'ordre et la longueur de la liste doivent également correspondre. Omettez cet argument ou transmettezNonepour effectuer une recherche sans filtrage des métadonnées. Par exemple,metadata_filter={"source": "profile_import"}pour un champ scalaire,metadata_filter={"prefs": {"category": "travel"}}pour un champ imbriqué etmetadata_filter={"tags": ["survey", "travel"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }Pour tester l'appartenance à un tableau, utilisez un dictionnaire d'opérateurs de niveau champ.
"$array_contains"correspond à une valeur ou à toutes les valeurs d'une liste."$array_contains_any"correspond à au moins une valeur d'une liste."$not"annule une autre expression de niveau champ au même champ, y compris un dictionnaire d'opérateurs ou une valeur de correspondance exacte brute. Les expressions négatives correspondent lorsque l'expression positive échoue, y compris les champs manquants ; l'appartenance au tableau négatif correspond également aux champs non-tableau :metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope: portée de recherche prédéfinie facultative. Indiquezscopeou l'identificateur explicite et les arguments de correspondance exacte, et non les deux. Les recherches de client OracleAgentMemory nécessitent que la portée résolue inclue un élémentuser_idexplicite avecexact_user_match=True. Utilisezuser_id=Nonepour cibler uniquement les enregistrements utilisateur non ciblés.
- query
- Retours : résultats de recherche classés par ordre décroissant de pertinence. La liste peut contenir moins de
max_resultsentrées. - Type de retour : list[SearchResult]
- Elèves : ValueError – Si
scopeest associé à des arguments d'identificateur explicite ou de correspondance exacte, simax_resultsest inférieur à1, simetadata_filtern'est ni un dictionnaire niNone, ou si l'implémentation rejette la portée de recherche du client résolu. Les recherches de client OracleAgentMemory rejettent la portée utilisateur omise et rejettentexact_user_match=False.
Remarques
Les valeurs de portée None explicites suivent toujours les règles de correspondance exacte résolues : exact_*_match=False laisse cette dimension sans contrainte, tandis que exact_*_match=True correspond uniquement aux enregistrements sans portée sur cette dimension.
method search_async (async)
Rechercher de manière asynchrone les enregistrements pertinents pour une requête.
- Paramètres:
- query
str: chaîne de requête en langage naturel. - user_id
str | None– Filtre d'identificateur utilisateur. Les recherches de client OracleAgentMemory nécessitent une portée utilisateur explicite, sauf siscopeen fournit une. Transmettez un élémentuser_idconcret pour cibler cet utilisateur, ou transmettezNonepour cibler uniquement les enregistrements utilisateur non ciblés. - agent_id
str | None: filtre d'identificateur d'agent facultatif. Ignoré lorsquescopeest fourni. - thread_id
str | None: filtre d'identificateur de thread facultatif. Ignoré lorsquescopeest fourni. - exact_user_match
bool– Indique si la correspondance d'utilisateurs doit être stricte. Les recherches de client OracleAgentMemory nécessitent une correspondance d'utilisateur exacte et rejettentFalse. Ignoré lorsquescopeest fourni. - exact_agent_match
bool: indique si la correspondance d'agent doit être stricte. Ignoré lorsquescopeest fourni. - exact_thread_match
bool: indique si la mise en correspondance des threads doit être stricte. Ignoré lorsquescopeest fourni. - max_results
int: nombre maximal de résultats à renvoyer facultatif. Lorsqu'elle est fournie, elle doit être au moins égale à1. L'omission de cet argument utilise la valeur par défaut10. - record_types
list[str]– Liste facultative des types d'enregistrement à inclure, tels que"memory"ou"message". -
metadata_filter
dict[str, Any] | None–Mappage de filtre de métadonnées facultatif utilisé comme filtre supplémentaire après le filtrage de portée et de type d'enregistrement. Les entrées dans
metadata_filtersont combinées avec la sémantique AND. Les entrées dont la valeur n'est pas un dictionnaire opérateur de niveau champ utilisent une sémantique de correspondance exacte : la clé demandée doit exister dans les métadonnées d'enregistrement stockées. Les dictionnaires imbriqués correspondent de manière récursive aux objets de métadonnées imbriqués. Les valeurs scalaires et de liste doivent correspondre exactement ; l'ordre et la longueur de la liste doivent également correspondre. Omettez cet argument ou transmettezNonepour effectuer une recherche sans filtrage des métadonnées. Par exemple,metadata_filter={"source": "profile_import"}pour un champ scalaire,metadata_filter={"prefs": {"category": "travel"}}pour un champ imbriqué etmetadata_filter={"tags": ["survey", "travel"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }Pour tester l'appartenance à un tableau, utilisez un dictionnaire d'opérateurs de niveau champ.
"$array_contains"correspond à une valeur ou à toutes les valeurs d'une liste."$array_contains_any"correspond à au moins une valeur d'une liste."$not"annule une autre expression de niveau champ au même champ, y compris un dictionnaire d'opérateurs ou une valeur de correspondance exacte brute. Les expressions négatives correspondent lorsque l'expression positive échoue, y compris les champs manquants ; l'appartenance au tableau négatif correspond également aux champs non-tableau :metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope: portée de recherche prédéfinie facultative. Indiquezscopeou l'identificateur explicite et les arguments de correspondance exacte, et non les deux. Les recherches de client OracleAgentMemory nécessitent que la portée résolue inclue un élémentuser_idexplicite avecexact_user_match=True. Utilisezuser_id=Nonepour cibler uniquement les enregistrements utilisateur non ciblés.
- query
- Retours : résultats de recherche classés par ordre décroissant de pertinence.
- Type de retour : list[SearchResult]
- Elèves : ValueError – Si
scopeest associé à des arguments d'identificateur explicite ou de correspondance exacte, simax_resultsest inférieur à1, simetadata_filtern'est ni un dictionnaire niNone, ou si l'implémentation rejette la portée de recherche du client résolu. Les recherches de client OracleAgentMemory rejettent la portée utilisateur omise et rejettentexact_user_match=False.
Remarques
Les valeurs de portée None explicites suivent toujours les règles de correspondance exacte résolues : exact_*_match=False laisse cette dimension sans contrainte, tandis que exact_*_match=True correspond uniquement aux enregistrements sans portée sur cette dimension.
méthode update_memory
Mettre à jour un enregistrement stocké de type mémoire par identifiant.
- Paramètres:
- memory_id
str– Identificateur de l'enregistrement de type mémoire à mettre à jour. - content
str– Contenu de remplacement facultatif. Indiquez une chaîne pour remplacer le contenu stocké. Lorsqu'il est omis, le contenu stocké est conservé. La transmission deNonen'est pas prise en charge ; omettezcontentpour conserver la valeur en cours ou utilisezdelete_memory()pour enlever l'enregistrement. - metadata
dict[str, Any] | None– Mappage de métadonnées de remplacement facultatif. Lorsqu'elles sont omises, les métadonnées stockées sont conservées. Lorsqu'elle est fournie, elle remplace l'objet de métadonnées stocké ; cette API ne fusionne pas les métadonnées en profondeur. - timestamp
str | None: nouvel horodatage facultatif pour cette mémoire. Il représente le moment où la mémoire a été créée. Lorsqu'il est omis, l'horodatage stocké est conservé. TransmettezNonepour effacer l'horodatage enregistré et utiliser l'heure de création de l'enregistrement dans le magasin. Lorsquettl_anchorest défini surTimeToLiveAnchor.TIMESTAMP, les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - ttl_days
int | None: actualisation facultative de l'expiration en jours. Omettez cet argument pour laisser l'expiration en cours inchangée, sauf sittl_anchorest fourni. TransmettezNonepour utiliserMemoryRetentionConfig.max_ttl_dayslorsque la configuration de conservation en définit une ou pour effacer l'expiration lorsqu'elle ne le fait pas. Les valeurs au-dessus deMemoryRetentionConfig.max_ttl_dayssont bloquées à ce maximum avec un avertissement. Les mémoires expirées ne sont pas disponibles pour cette API client et ne peuvent pas être actualisées. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative pour une actualisation d'expiration. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création de la mémoire ouTimeToLiveAnchor.TIMESTAMPpour le remplacementtimestampfourni dans la même mise à jour, ou l'horodatage d'événement stocké lorsquetimestampest omis. Si vous indiquezttl_anchorsansttl_days, la durée de vie par défaut du schéma est utilisée. Lorsquettl_anchorest omis lors d'une actualisation, le client utiliseTimeToLiveAnchor.CREATED_AT. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - **kwargs (Any) : les arguments de mot-clé inattendus sont rejetés.
- memory_id
- Retours : Identificateur de l'enregistrement de type mémoire mis à jour.
- Type de retour : str
Remarques
Les champs omis sont préservés de l'enregistrement stocké. La portée stockée reste inchangée. Le remplacement de métadonnées est un remplacement d'objet entier, et non une fusion JSON récursive.
method update_memory_async (async)
Mettre à jour de manière asynchrone un enregistrement de type mémoire stocké par identifiant.
- Paramètres:
- memory_id
str– Identificateur de l'enregistrement de type mémoire à mettre à jour. - content
str– Contenu de remplacement facultatif. Indiquez une chaîne pour remplacer le contenu stocké. Lorsqu'il est omis, le contenu stocké est conservé. La transmission deNonen'est pas prise en charge ; omettezcontentpour conserver la valeur en cours ou utilisezdelete_memory()pour enlever l'enregistrement. - metadata
dict[str, Any] | None– Mappage de métadonnées de remplacement facultatif. Lorsqu'elles sont omises, les métadonnées stockées sont conservées. Lorsqu'elle est fournie, elle remplace l'objet de métadonnées stocké ; cette API ne fusionne pas les métadonnées en profondeur. - timestamp
str | None: nouvel horodatage facultatif pour cette mémoire. Il représente le moment où la mémoire a été créée. Lorsqu'il est omis, l'horodatage stocké est conservé. TransmettezNonepour effacer l'horodatage enregistré et utiliser l'heure de création de l'enregistrement dans le magasin. - ttl_days
int | None: actualisation facultative de l'expiration en jours. Omettez cet argument avecttl_anchorpour laisser l'expiration en cours inchangée. TransmettezNonepour effacer l'expiration. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative pour une actualisation d'expiration. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création de la mémoire ouTimeToLiveAnchor.TIMESTAMPpour le remplacementtimestampfourni dans la même mise à jour, ou l'horodatage d'événement stocké lorsquetimestampest omis. Si vous indiquezttl_anchorsansttl_days, la durée de vie par défaut du schéma est utilisée. Lorsquettl_anchorest omis lors d'une actualisation, les magasins utilisentTimeToLiveAnchor.CREATED_AT. - **kwargs (Any) : les arguments de mot-clé inattendus sont rejetés.
- memory_id
- Retours : Identificateur de l'enregistrement de type mémoire mis à jour.
- Type de retour : str
Remarques
Les champs omis restent inchangés. Ces mises à jour de portée ne sont pas prises en charge par cette API. Le remplacement de métadonnées est un remplacement d'objet entier, et non une fusion JSON récursive.
méthode update_thread
Conserver les métadonnées de thread et les mises à jour de la configuration d'exécution durable.
- Paramètres:
- thread_id
str– Identificateur du thread à mettre à jour. - metadata
dict[str, Any] | None: mise à jour facultative des métadonnées pour le thread de conversation. Lorsqu'elles sont omises, les métadonnées stockées restent inchangées. La transmission deNoneefface explicitement les métadonnées stockées. Lorsqu'un mapping est fourni, il remplace l'objet de métadonnées stocké. - LLM
ILlm: remplacement facultatif de LLM pour l'instanceOracleThreadrenvoyée. Cette opération n'est pas persistante, mais elle participe aux mêmes règles de validation queget_threadetcreate_thread. -
extract_memories
bool–Remplacement durable facultatif pour l'extraction automatique de la mémoire.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. - max_message_token_length
int: remplacement durable facultatif pour la taille maximale de message d'invite utilisée lors de l'extraction et de l'agrégation. - message_shortening_input_token_limit
int: remplacement durable facultatif pour la taille d'extrait maximale envoyée au LLM lors du raccourcissement des messages surdimensionnés. -
memory_extraction_window
int:Remplacement durable facultatif pour la taille de la fenêtre d'extraction.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
context_summary_update_frequency
int–Remplacement durable facultatif pour le nombre de messages ajoutés déclenchant une actualisation de la synthèse contextuelle.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_frequency
int:Remplacement durable facultatif pour le nombre de messages ajoutés déclenchant l'extraction automatique de la mémoire.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_token_limit
int–Remplacement durable facultatif pour les budgets d'invite d'extraction et de synthèse.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. - context_card_token_limit
int: remplacement durable facultatif pour le budget de jeton d'entrée de l'invite LLM utilisée pour créer la liste récapitulative et thématique incluse dans la carte de contexte. -
enable_context_summary
bool–Remplacement durable facultatif pour savoir si l'exécution des récapitulatifs de contexte reste activée.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_custom_instructions
str | None–Instructions personnalisées durables facultatives ajoutées à l'invite du système d'extraction de mémoire. La transmission de
Noneefface toutes les instructions personnalisées stockées au niveau du thread ; une valeur par défaut au niveau du client s'applique toujours lorsqu'elle est configurée.Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–Remplacement durable facultatif pour les métadonnées copiées à partir de messages source dans des mémoires extraites automatiquement.
Info : Obsolète depuis la version 26.6.0 : Ce paramètre est obsolète depuis la version 26.6.0 et sera supprimé depuis la version 27.1. Utilisez plutôt
memory_extraction_config. - memory_extraction_config
MemoryExtractionConfig: mise à jour facultative de la configuration d'extraction durable groupée. Les champs fournis sont écrits dans la configuration de thread stockée et utilisés par les instancesOracleThreadchargées ultérieurement et les travaux d'extraction en arrière-plan ultérieurs. - **kwargs (N'importe lequel) : options supplémentaires propres à l'implémentation.
OracleAgentMemoryrejette actuellement les arguments de mot-clé inconnus.
- thread_id
- Renvoie : instance
OracleThreadmise à jour reflétant les métadonnées persistantes et la configuration d'exécution. - Type de retour : OracleThread
- Elèves :
- KeyError – Si l'ID de thread est inconnu de cette instance client.
- ValueError – Si aucun LLM n'est disponible pour l'extraction automatique de la mémoire après la résolution de la configuration d'exécution effective.
Remarques
La configuration d'exécution est résolue à partir du thread de conversation stocké plus les remplacements explicites transmis à cet appel, correspondant à la sémantique get_thread avant de conserver le résultat. Les mises à jour de métadonnées et de configuration d'exécution omises sont résolues à partir des données stockées, et non à partir d'une instance OracleThread précédemment chargée. Seules les mises à jour de métadonnées fournies explicitement ou les remplacements de configuration d'exécution durable sont réécrits. Le remplacement de métadonnées est un remplacement d'objet entier, et non une fusion JSON récursive. La propriété des threads n'est pas mutable via cette API. Par conséquent, user_id et agent_id restent inchangés. L'état d'exécution mutable, tel que les compteurs d'extraction, n'est pas modifié.
Exemples
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
updated = client.update_thread(
"c1",
metadata={"flags": {"vip": True}},
message_shortening_input_token_limit=12_000,
)
updated.message_shortening_input_token_limit
12000
méthode wait_for_memory_extraction
Attendez que l'extraction de mémoire en arrière-plan démarre plus tôt par ce client.
Cette méthode attend que l'extraction en arrière-plan ait déjà démarré via cette instance OracleAgentMemory, sur tous les threads appartenant à ce composant de mémoire d'agent. Il n'attend pas que l'extraction démarre après ce début d'attente, que l'extraction démarre par un autre composant de mémoire d'agent ou que l'extraction s'exécute dans un autre processus. Les échecs d'extraction sont comptabilisés comme terminés pour cette attente.
- Paramètres : délai d'attente
float | None: nombre maximal facultatif de secondes à attendre. La valeur par défaut est300. TransmettezNonepour attendre que le composant de mémoire de cet agent n'ait pas d'extraction en attente. - Elèves : TimeoutError – Levée lorsque le délai expire avant la fin de l'extraction en arrière-plan précédente.
- Type de retour : Aucun
Exemples
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.wait_for_memory_extraction(timeout=10)
method wait_for_memory_extraction_async (async)
Attendez asynchrone l'extraction de mémoire en arrière-plan précédente.
Cette méthode suit le même comportement que wait_for_memory_extraction().
- Paramètres : délai d'attente
float | None: nombre maximal facultatif de secondes à attendre. La valeur par défaut est300. TransmettezNonepour attendre indéfiniment. - Elèves : TimeoutError – Levée lorsque le délai expire avant la fin de l'extraction en arrière-plan précédente.
- Type de retour : Aucun
Exemples
await client.wait_for_memory_extraction_async(timeout=10)
Extraction de mémoire
classe oracleagentmemory.core.MemoryExtractionConfig
Bases : object
Paramètres groupés pour l'extraction automatique de la mémoire.
Transmettez cet objet à OracleAgentMemory, create_thread, get_thread ou update_thread pour configurer l'extraction automatique. Les champs omis héritent du paramètre plus large suivant. Par exemple, un thread créé sans memory_extraction_frequency utilise la valeur par défaut du composant de mémoire d'agent et la valeur par défaut du composant revient à la valeur par défaut du kit SDK.
- Paramètres:
- memory_extraction_window
int– Fenêtre de message récent utilisée pour les invites d'extraction.-1signifie que l'invite d'extraction utilise uniquement les messages nouvellement ajoutés. Omettez ce champ pour hériter de la valeur. - context_summary_update_frequency
int– Nombre de messages ajoutés entre les actualisations de résumé contextuel en cours d'exécution. Les valeurs inférieures à0sont actualisées après chaque ajout. Omettez ce champ pour hériter de la valeur. - memory_extraction_frequency
int: nombre de messages ajoutés entre les exécutions d'extraction de mémoire. Les valeurs sous l'extraction0après chaque ajout. Omettez ce champ pour hériter de la valeur. - memory_extraction_token_limit
int– Budget de jeton d'entrée pour les invites d'extraction et de résumé. Les valeurs inférieures à1désactivent la limite de budget d'invite. Omettez ce champ pour hériter de la valeur. - extract_memories
bool– Indique si l'extraction automatique de la mémoire est activée. Définissez la valeur surFalsepour désactiver l'extraction automatique et autoriser l'opération sans LLM d'extraction. Omettez ce champ pour hériter de la valeur. - enable_context_summary
bool: indique si les invites d'extraction gèrent et utilisent un récapitulatif de contexte en cours d'exécution. Omettez ce champ pour hériter de la valeur. - memory_extraction_custom_instructions
str | None– Instructions facultatives de l'appelant ajoutées à l'invite du système d'extraction. TransmettezNonesurupdate_threadpour effacer les instructions de niveau thread stockées. Omettez ce champ pour hériter de la valeur. - memory_extraction_inherit_message_metadata
bool | collections.abc.Sequence[str]: contrôle les métadonnées copiées à partir des messages source vers les mémoires extraites.Truecopie toutes les métadonnées de message source,Falsen'en copie aucune et une séquence copie uniquement les clés de métadonnées de niveau supérieur correspondantes. Omettez ce champ pour hériter de la valeur. - extraction_mode
oracleagentmemory.core.extractors.memoryextractionconfig.MemoryExtractionMode:MemoryExtractionMode.INLINEexécute l'extraction automatique avant que la méthode d'écriture ne soit renvoyée.MemoryExtractionMode.BACKGROUNDrenvoie une fois que l'écriture brute a réussi et que le travail d'extraction dû est tenté en arrière-plan. En mode arrière-plan, les mémoires dérivées peuvent apparaître plus tard, être temporairement obsolètes ou ne jamais être écrites si le travail en arrière-plan ne peut pas se terminer. Par exemple,update_message()peut être renvoyé avant qu'une lecture ultérieure de la mémoire reflète le contenu du message mis à jour. Omettez ce champ pour hériter de la valeur. Lorsqu'aucune valeur plus large n'est configurée, le mode effectif estINLINE. - background_extraction_queue_full_behavior
oracleagentmemory.core.extractors.memoryextractionconfig.BackgroundExtractionQueueFullBehavior: en mode arrière-plan, contrôle ce qui se passe lorsque l'extraction automatique ne peut pas mettre la file d'attente immédiatement.DROPconsigne un avertissement et continue sans attendre.WAIT_THEN_DROPattend la capacité de la file d'attente jusqu'au délai d'expiration configuré, puis consigne un avertissement et continue.WAIT_THEN_RAISEattend la capacité de la file d'attente jusqu'au délai d'attente configuré, puis génèreTimeoutErrorune fois l'écriture brute réussie. Omettez ce champ pour hériter de la valeur. Lorsqu'aucune valeur plus large n'est configurée, la valeur par défaut effective estDROP. - background_extraction_queue_put_timeout_seconds
float: en mode arrière-plan, le nombre maximal de secondes d'extraction automatique attend la capacité de la file d'attente lorsquebackground_extraction_queue_full_behaviorestWAIT_THEN_DROPouWAIT_THEN_RAISE. Omettez ce champ pour hériter de la valeur. Lorsqu'aucune valeur plus large n'est configurée, la valeur par défaut effective est de300.0secondes.
- memory_extraction_window
Exemples
from oracleagentmemory.core import MemoryExtractionConfig, MemoryExtractionMode
config = MemoryExtractionConfig(
extract_memories=True,
extraction_mode=MemoryExtractionMode.BACKGROUND,
)
classe oracleagentmemory.core.MemoryExtractionMode
Bases : str, Enum
Contrôle l'exécution du travail d'extraction automatique de la mémoire.
INLINE exécute l'extraction automatique avant le retour de la méthode d'écriture. BACKGROUND renvoie une fois que l'écriture brute a réussi et que le travail d'extraction dû est tenté en arrière-plan. L'extraction de fond est le meilleur effort : les souvenirs dérivés peuvent apparaître plus tard, ou ne peuvent jamais être écrits si le travail de fond ne peut pas se terminer.
ARRIÈRE-PLAN = 'ARRIÈRE-PLAN'
Retournez après la persistance des messages bruts et exécutez l'extraction au mieux dans le travail en arrière-plan.
EN LIGNE = 'INLINE'
Exécutez l'extraction avant le retour de la méthode d'écriture.
classe oracleagentmemory.core.BackgroundExtractionQueueFullBehavior
Bases : str, Enum
Contrôle ce qui se passe lorsque l'extraction en arrière-plan ne peut pas mettre la file d'attente dans le temps.
SUPPRIMER = 'DROP'
Enregistrez un avertissement et continuez immédiatement lorsque la capacité de la file d'attente n'est pas disponible.
ATTENDRE_THEN_DROP = 'ATTENDRE_THEN_DROP'
Attendez la capacité de la file d'attente jusqu'au délai d'attente configuré, puis consignez un avertissement et continuez.
WAIT_THEN_RAISE = 'WAIT_THEN_RAISE'
Attendez la capacité de la file d'attente jusqu'au délai d'attente configuré, puis soulevez TimeoutError.