Threads
Cette page présente le gestionnaire de threads Oracle concret ainsi que le type d'aide aux messages destiné aux développeurs.
Thread Oracle
classe oracleagentmemory.core.OracleThread
Bases : IThread
Thread soutenu par un magasin Oracle.
Cette implémentation intègre et stocke à la fois les messages de thread et les mémoires ajoutées manuellement, puis prend en charge la recherche de similarité sur tous les enregistrements stockés.
Notes
- Les messages sont stockés en tant qu'enregistrements individuels (un enregistrement par message).
- La recherche peut être limitée au thread en cours ou autorisée à renvoyer des résultats à partir de n'importe quel thread (contrôlé par le client).
Créez une instance OracleThread.
- Paramètres:
- store
OracleMemoryStore: back-end de banque partagée utilisé pour rendre persistants les enregistrements imbriqués. - thread_id
str: identificateur de thread. S'il n'est pas fourni, un UUID est généré. - user_id
str: identificateur utilisateur associé au thread. S'il est omis dans une banque d'exécutionSchemaPolicy.NO_CHECKde base de données, le nom utilisateur du contexte de sécurité de l'utilisateur final actif est utilisé. Sinon, un UUID est généré. - agent_id
str: identificateur d'agent associé au thread. En cas d'omission, un UUID est généré. - metadata
dict[str, Any] | None: métadonnées de type JSON facultatives associées au thread. - persist_messages_in_config
bool: indique si_to_configdoit inclure des instantanés de messages bruts récents. Définissez automatiquement la valeur surFalsepour les threads utilisant la banque de base de données afin d'éviter d'exporter le contenu de la table de messages via la configuration des threads. - LLM
ILlm | None: adaptateur LLM facultatif utilisé pour l'extraction de mémoire et les mises à jour de récapitulatif de contexte. Lorsqu'il est fourni,add_messagesextrait les mémoires pertinentes de chaque message ajouté et les stocke en tant qu'enregistrements de mémoire saisis ("memory","guideline","fact"ou"preference"). - memory_extraction_config
MemoryExtractionConfig: configuration facultative de l'extraction de mémoire au niveau des threads. Utilisez-le pour contrôler les paramètres d'extraction automatique tels que le mode d'extraction, le comportement récapitulatif, les limites d'extraction et si l'extraction automatique est activée. Transmettez soit cette configuration groupée, soit les paramètres d'extraction en ligne obsolètes, pas les deux. Lorsqu'elle est omise,OracleThread()autonome utilise les valeurs par défaut du kit SDK pour les champs d'extraction et garde les récapitulatifs de contexte activés. Un contexte d'image omis estDISABLED. - image_input_limit_config
ImageInputLimitConfig: limites facultatives de demande d'image brute et LLM pour ce thread autonome. Les champs omis utilisent les valeurs par défaut du kit SDK. La validation ne peut pas être désactivée. -
memory_extraction_window
int:Nombre de messages les plus récents (y compris le message nouvellement ajouté) à fournir en tant que contexte au LLM lors de l'extraction. Définissez la valeur sur
-1pour extraire une seule fois par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés. La valeur par défaut est-1.Obsolète
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–Nombre de messages après le dernier récapitulatif valide avant son actualisation automatique. Lorsque l'extraction de mémoire est activée, la vérification est effectuée après chaque extraction due, de sorte que l'actualisation peut avoir lieu ultérieurement. Les valeurs inférieures ou égales à
0sont actualisées à chaque vérification. La valeur par défaut est-1.Obsolète
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:Nombre de messages après lesquels l'extraction de mémoire est déclenchée. Définissez la valeur sur
-1pour extraire une seule fois par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés.Obsolète
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. Les invites plus longues sont tronquées. Si la valeur est négative ou égale à 0, la troncature d'invite est désactivée.
Obsolète
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– 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. La valeur par défaut est100_000; les valeurs inférieures ou égales à 0 désactivent la troncation des invites. - 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. La valeur par défaut est5. - max_message_token_length
int– Taille maximale, en jetons, de la copie d'invite de chaque message utilisé lors de l'extraction de mémoire et des mises à jour de résumé contextuel soutenues par le LLM. Le contenu du message stocké reste inchangé. Si la valeur est négative ou égale à 0, aucun raccourcissement d'invite n'est effectué. Si un LLM est fourni, les copies d'invite surdimensionnées sont résumées au lieu d'être tronquées. - message_shortening_input_token_limit
int– Taille maximale, en jetons, de l'extrait de message envoyé au LLM lors du raccourcissement des copies d'invite surdimensionnées. La valeur par défaut est30_000tokens. Si la valeur est négative ou égale à 0, aucune limite sortante n'est appliquée pendant le raccourcissement basé sur le LLM. -
enable_context_summary
bool–Indique s'il faut conserver un résumé compact du thread. Lorsqu'elle est activée et qu'une valeur
llmest fournie, OAM l'actualise en fonction decontext_summary_update_frequencyet utilise un récapitulatif avant les messages cible en tant que contexte d'extraction. La valeur par défaut estTruepourOracleThread()autonome.Obsolète
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 facultatives ajoutées à l'invite du système d'extraction automatique de mémoire pour ce thread.
Obsolète
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]–Indique si les mémoires extraites automatiquement héritent des métadonnées des messages source. Transmettez
Truepour hériter de toutes les métadonnées de message, d'une séquence non-chaîne de clés de métadonnées de message de niveau supérieur pour hériter uniquement de ces clés ou deFalsepour désactiver l'héritage. La valeur par défaut estTrue. Si une passe d'extraction utilise plusieurs messages source, les métadonnées sélectionnées doivent correspondre entre ces messages.Obsolète
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. - search_config
MemorySearchConfig– Configuration de recherche facultative pour ce thread. Lorsqu'elles sont omises, les recherches utilisent une configuration de recherche top-k fixe. - client
OracleAgentMemory | None
- store
Exemples
from oracleagentmemory.core import MemoryExtractionConfig, OracleAgentMemory
client = OracleAgentMemory(connection=db_pool, embedder=embedder)
thread = client.create_thread(
thread_id="c4",
llm=llm,
memory_extraction_config=MemoryExtractionConfig(enable_context_summary=True),
)
len(thread.add_messages([{"role": "user", "content": "I love pizza."}]))
1
méthode add_image
Conserver une image associée à ce thread.
description est stocké en tant que texte recherchable de l'image. Lorsqu'il est omis ou None, un LLM attaché génère une légende. Les valeurs de portée omises héritent des identificateurs d'utilisateur, d'agent et de thread correspondants de ce thread.
- Paramètres:
- image
bytes: octets d'image bruts à conserver. - description
str | None– Description ou légende facultative. Omettez-le pour générer une légende. - mime_type
ImageMimeType: type MIME facultatif utilisé pour la persistance d'image et la génération de légendes. Lorsqu'il est omis, le kit SDK détecte et valide le type à partir des octets d'image. Les types détectés pris en charge sont PNG, JPEG et WEBP. - image_id
str: identificateur facultatif. Un est généré lorsqu'il est omis. - user_id
str | None: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - agent_id
str | None: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - thread_id
str: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - metadata
dict[str, Any] | None: métadonnées facultatives stockées avec l'image. - timestamp
str | None: horodatage d'événement facultatif à enregistrer pour cette image. Omettez cet argument ou transmettezNonepour stocker un horodatage d'événementNULL. Lorsque l'image est lue, son heure de création est renvoyée en tant qu'horodatage effectif. - ttl_days
int | None: paramètres d'expiration facultatifs. - ttl_anchor
TimeToLiveAnchor: paramètres d'expiration facultatifs. - store_kwargs
Any: options supplémentaires propres à l'emplacement de stockage.
- image
- Renvoie : identificateur d'image persistante.
- Type de retour : str
method add_image_async (async)
Conserver une image associée à ce thread de manière asynchrone.
description est stocké en tant que texte recherchable de l'image. Lorsqu'il est omis ou None, un LLM attaché génère une légende. Les valeurs de portée omises héritent des identificateurs d'utilisateur, d'agent et de thread correspondants de ce thread.
- Paramètres:
- image
bytes: octets d'image bruts à conserver. - description
str | None– Description ou légende facultative. Omettez-le pour générer une légende. - mime_type
ImageMimeType: type MIME facultatif utilisé pour la persistance d'image et la génération de légendes. Lorsqu'il est omis, le kit SDK détecte et valide le type à partir des octets d'image. Les types détectés pris en charge sont PNG, JPEG et WEBP. - image_id
str: identificateur facultatif. Un est généré lorsqu'il est omis. - user_id
str | None: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - agent_id
str | None: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - thread_id
str: assertions de portée facultatives. Les valeurs omises héritent de la portée de ce thread ; les valeurs fournies doivent correspondre exactement. - metadata
dict[str, Any] | None: métadonnées facultatives stockées avec l'image. - timestamp
str | None: horodatage d'événement facultatif à enregistrer pour cette image. Omettez cet argument ou transmettezNonepour stocker un horodatage d'événementNULL. Lorsque l'image est lue, son heure de création est renvoyée en tant qu'horodatage effectif. - ttl_days
int | None: paramètres d'expiration facultatifs. - ttl_anchor
TimeToLiveAnchor: paramètres d'expiration facultatifs. - store_kwargs
Any: options supplémentaires propres à l'emplacement de stockage.
- image
- Renvoie : identificateur d'image persistante.
- Type de retour : str
méthode add_memory
Ajoutez une entrée de mémoire manuelle et indexez-la.
- 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: remplacement facultatif de l'identificateur utilisateur. - agent_id
str: remplacement facultatif de l'identificateur d'agent. - thread_id
str: remplacement facultatif de l'identificateur de thread. - 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 d'événement facultatif à enregistrer pour cette mémoire. Omettez cet argument ou transmettezNonepour stocker un horodatage d'événementNULL. Lorsque l'enregistrement est lu, son heure de création est renvoyée en tant qu'horodatage effectif. Lorsquettl_anchorest défini surTimeToLiveAnchor.TIMESTAMP, indiquez une valeur d'horodatage ISO-8601 concrète. 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. L'expiration ancrée dans l'horodatage nécessite un horodatage ISO-8601 concret pour cette mémoire. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - status
RecordStatus– Statut initial du cycle de vie. Omettez-le pour stockerRecordStatus.VALID. - autonomous_linking
bool: permet de déterminer si des liens doivent être créés à partir de cette nouvelle mémoire vers des mémoires stockées pertinentes à l'aide du LLM du thread. Omis l'active lorsqu'un LLM existe. TransmettezFalsepour ignorer. L'échec laisse la mémoire stockée. - memory_id_to_link
str: ensemble, créez un lien dirigé de la nouvelle mémoire vers cette mémoire existante appartenant au thread. Les portées utilisateur, agent et thread omises héritent de cette cible. Omettez les deux pour ne pas créer de lien explicite. - link_type
Literal['supersedes', 'contradicts', 'refines', 'supports', 'duplicates'] | ~oracleagentmemory._notset._NotSetMarker: ensemble, créez un lien dirigé de la nouvelle mémoire vers cette mémoire existante appartenant au thread. Les portées utilisateur, agent et thread omises héritent de cette cible. Omettez les deux pour ne pas créer de lien explicite. - link_id
str: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - link_timestamp
str | None: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - link_metadata
dict[str, Any] | None: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - **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
thread.add_memory("Remember this preference", memory_id="mem-thread-docs")
'mem-thread-docs'
method add_memory_async (async)
Ajoutez une entrée de mémoire manuelle et indexez-la de manière asynchrone.
- 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: remplacement facultatif de l'identificateur utilisateur. - agent_id
str: remplacement facultatif de l'identificateur d'agent. - thread_id
str: remplacement facultatif de l'identificateur de thread. - 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 d'événement facultatif à enregistrer pour cette mémoire. Omettez cet argument ou transmettezNonepour stocker un horodatage d'événementNULL. Lorsque l'enregistrement est lu, son heure de création est renvoyée en tant qu'horodatage effectif. Lorsquettl_anchorest défini surTimeToLiveAnchor.TIMESTAMP, indiquez une valeur d'horodatage ISO-8601 concrète. 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. L'expiration ancrée dans l'horodatage nécessite un horodatage ISO-8601 concret pour cette mémoire. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - status
RecordStatus– Statut initial du cycle de vie. Omettez-le pour stockerRecordStatus.VALID. - autonomous_linking
bool: permet de déterminer si des liens doivent être créés à partir de cette nouvelle mémoire vers des mémoires stockées pertinentes à l'aide du LLM du thread. Omis l'active lorsqu'un LLM existe. TransmettezFalsepour ignorer. L'échec laisse la mémoire stockée. - memory_id_to_link
str: ensemble, créez un lien dirigé de la nouvelle mémoire vers cette mémoire existante appartenant au thread. Les portées utilisateur, agent et thread omises héritent de cette cible. Omettez les deux pour ne pas créer de lien explicite. - link_type
Literal['supersedes', 'contradicts', 'refines', 'supports', 'duplicates'] | ~oracleagentmemory._notset._NotSetMarker: ensemble, créez un lien dirigé de la nouvelle mémoire vers cette mémoire existante appartenant au thread. Les portées utilisateur, agent et thread omises héritent de cette cible. Omettez les deux pour ne pas créer de lien explicite. - link_id
str: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - link_timestamp
str | None: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - link_metadata
dict[str, Any] | None: identificateur, horodatage et métadonnées facultatifs pour le lien explicite. - **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
import asyncio
asyncio.run(thread.add_memory_async(
"Remember this preference", memory_id="mem-thread-docs-async"
))
'mem-thread-docs-async'
méthode add_messages
Ajoutez des messages au thread et indexez-les.
En mode d'extraction en arrière-plan, cette méthode est renvoyée après l'insertion des messages bruts et la tentative d'extraction en arrière-plan en arrière-plan.
Les messages bruts sont stockés avant l'extraction automatique dans les deux modes. En cas d'échec de l'extraction ultérieure ou du stockage en mémoire dérivée, les messages bruts restent stockés alors que des mémoires dérivées ou des mises à jour récapitulatives peuvent être manquantes.
- Paramètres:
- messages
Sequence[Message | ThreadMessageTypedDictT | Mapping[str, str | Sequence[Mapping[str, Any]] | Mapping[str, Any] | None]]– Liste des messages à ajouter. Les messages peuvent être des objetsMessageou des dictionnaires avecroleetcontent(et facultatifsid). - metadata
dict[str, Any] | None | list[dict[str, Any] | None]: métadonnées partagées ou par message facultatives à conserver. Lorsqu'elle est omise, les métadonnées intégrées dans chaque message sont utilisées. - ttl_days
int | None | list[int | None]: durée de vie facultative en jours pour les messages ajoutés. 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 un ou pour créer des messages n'expirant pas lorsqu'elle ne l'est pas. Les valeurs au-dessus deMemoryRetentionConfig.max_ttl_dayssont bloquées à ce maximum avec un avertissement. Les valeurs scalaires s'appliquent au lot complet. - ttl_anchor
TimeToLiveAnchor | list[TimeToLiveAnchor]: ancre de durée de vie facultative. UtilisezTimeToLiveAnchor.CREATED_ATpour la création de la base de données ouTimeToLiveAnchor.TIMESTAMPpour chaque horodatage de message. L'expiration ancrée dans l'horodatage nécessite un horodatage ISO-8601 concret pour chaque message affecté. Lorsqu'il est omis, les messages expirent par rapport àTimeToLiveAnchor.CREATED_AT. 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.
- messages
- Retours : Identifiants des enregistrements de message insérés. En mode d'extraction en arrière-plan, le travail d'extraction automatique peut toujours être en cours lorsque ces identifiants sont renvoyés.
- Type de retour : list[str]
Notes
Dans MemoryExtractionMode.BACKGROUND, les messages bruts sont conservés avant que les mémoires extraites ne soient stockées. Si l'extraction en arrière-plan n'est pas en file d'attente, ou si une attente de capacité de file d'attente configurée atteint son délai d'attente, les messages bruts insérés restent stockés et l'appel continue sans mémoires extraites ou soulève TimeoutError, selon background_extraction_queue_full_behavior.
Exemples
len(thread.add_messages([{"role": "user", "content": "Thread message from docs"}]))
1
method add_messages_async (async)
Ajoutez des messages de manière asynchrone au thread et indexez-les.
En mode d'extraction en arrière-plan, cette méthode est renvoyée après l'insertion des messages bruts et la tentative d'extraction en arrière-plan en arrière-plan.
Les messages bruts sont stockés avant l'extraction automatique dans les deux modes. En cas d'échec de l'extraction ultérieure ou du stockage en mémoire dérivée, les messages bruts restent stockés alors que des mémoires dérivées ou des mises à jour récapitulatives peuvent être manquantes.
Dans MemoryExtractionMode.BACKGROUND, les messages bruts sont conservés avant que les mémoires extraites ne soient stockées. Si l'extraction en arrière-plan n'est pas en file d'attente, ou si une attente de capacité de file d'attente configurée atteint son délai d'attente, les messages bruts insérés restent stockés et l'appel continue sans mémoires extraites ou soulève TimeoutError, selon background_extraction_queue_full_behavior.
- Paramètres:
- messages
Sequence[Message | ThreadMessageTypedDictT | Mapping[str, str | Sequence[Mapping[str, Any]] | Mapping[str, Any] | None]] - métadonnées
dict[str, Any] | None | list[dict[str, Any] | None] - ttl_days
int | None | list[int | None] - ttl_anchor
TimeToLiveAnchor | list[TimeToLiveAnchor] - store_kwargs
Any
- messages
- Type de retour : list[str]
méthode delete_image
Supprimez une image appartenant à ce thread.
- Paramètres : image_id
str– Identificateur de l'image à supprimer. - Renvoie :
1lorsqu'il est supprimé, sinon0lorsque l'image n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : ValueError – Si l'image est jointe à un message. Supprimez ou mettez à jour le message parent.
method delete_image_async (async)
Supprimez une image appartenant à ce thread de manière asynchrone.
- Paramètres : image_id
str– Identificateur de l'image à supprimer. - Renvoie :
1lorsqu'il est supprimé, sinon0lorsque l'image n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : ValueError – Si l'image est jointe à un message. Supprimez ou mettez à jour le message parent.
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) de ce thread exact par identifiant.
- Paramètres : memory_id
str– Identificateur de mémoire. Seuls les enregistrements de type mémoire (memory,guideline,fact,preference) dont le fichierthread_idstocké correspond exactement à ce thread sont supprimés. - Retours : Nombre d'enregistrements supprimés (0 ou 1). Renvoie
0lorsque l'identificateur n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : TimeoutError – Opération déclenchée sans supprimer l'enregistrement lorsque l'extraction en arrière-plan acceptée précédemment pour ce thread ne se termine pas dans les 300 secondes.
Notes
Avant de supprimer l'enregistrement, cette méthode attend une extraction en arrière-plan antérieure acceptée pour ce thread via le composant de mémoire de l'agent attaché. Il n'attend pas que le travail soit accepté après le début de l'attente ou que le travail soit démarré par un autre composant ou processus.
Exemples
thread.delete_memory("456")
0
method delete_memory_async (async)
Supprimer un enregistrement de type mémoire (par exemple, une mémoire, un fait, une préférence ou une consigne) de ce thread exact par identifiant de manière asynchrone.
- Paramètres : memory_id
str– Identificateur de mémoire. Seuls les enregistrements de type mémoire (memory,guideline,fact,preference) dont le fichierthread_idstocké correspond exactement à ce thread sont supprimés. - Retours : Nombre d'enregistrements supprimés (0 ou 1). Renvoie
0lorsque l'identificateur n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : TimeoutError – Opération déclenchée sans supprimer l'enregistrement lorsque l'extraction en arrière-plan acceptée précédemment pour ce thread ne se termine pas dans les 300 secondes.
Notes
Cette méthode suit le comportement d'attente et de simultanéité d'extraction en arrière-plan documenté par delete_memory().
Exemples
import asyncio
asyncio.run(thread.delete_memory_async("456"))
0
méthode delete_message
Supprimer un enregistrement de message de ce thread exact par identifiant.
- Paramètres : message_id
str– Identifiant du message. Seuls les messages dont le fichierthread_idstocké correspond exactement à ce thread sont supprimés. - Retours : Nombre d'enregistrements de message supprimés (0 ou 1). Renvoie
0lorsque l'identificateur n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : TimeoutError – Le message a été généré sans suppression lorsque l'extraction en arrière-plan acceptée précédemment pour ce thread ne se termine pas dans les 300 secondes.
Notes
Avant de supprimer le message, cette méthode attend une extraction en arrière-plan antérieure acceptée pour ce thread via le composant de mémoire de l'agent attaché. Il n'attend pas que le travail soit accepté après le début de l'attente ou que le travail soit démarré par un autre composant ou processus.
La suppression d'un message supprime uniquement l'enregistrement de message brut. Les mémoires dérivées ne sont pas supprimées car nous ne suivons pas encore les mémoires extraites provenant de quel message, de sorte qu'elles peuvent rester consultables ou encore affecter la sortie de la carte de contexte. Utilisez OracleAgentMemory.delete_thread() pour supprimer le thread ainsi que les messages et les mémoires associés.
Exemples
thread.delete_message("123")
0
method delete_message_async (async)
Supprimer un enregistrement de message de ce thread exact par identifiant de manière asynchrone.
- Paramètres : message_id
str– Identifiant du message. Seuls les messages dont le fichierthread_idstocké correspond exactement à ce thread sont supprimés. - Retours : Nombre d'enregistrements de message supprimés (0 ou 1). Renvoie
0lorsque l'identificateur n'existe pas ou appartient à un autre thread. - Type de retour : int
- Elèves : TimeoutError – Le message a été généré sans suppression lorsque l'extraction en arrière-plan acceptée précédemment pour ce thread ne se termine pas dans les 300 secondes.
Notes
Cette méthode suit le comportement d'attente et de simultanéité d'extraction en arrière-plan documenté par delete_message().
La suppression d'un message supprime uniquement l'enregistrement de message brut. Les mémoires dérivées ne sont pas supprimées car nous ne suivons pas encore les mémoires extraites provenant de quel message, de sorte qu'elles peuvent rester consultables ou encore affecter la sortie de la carte de contexte. Utilisez OracleAgentMemory.delete_thread() pour supprimer le thread ainsi que les messages et les mémoires associés.
Exemples
import asyncio
asyncio.run(thread.delete_message_async("123"))
0
méthode delete_record_link
Supprimez une relation détenue par un thread par ID ou complétez le tuple d'adresse.
Les sélecteurs d'adresse doivent utiliser l'orientation source-cible stockée.
- Paramètres:
- source_record_id
str: identificateur source d'un sélecteur de tuple d'adresse. - source_record_type
str– Type d'enregistrement source logique pour un sélecteur de tuple d'adresse. - target_record_id
str: identificateur de cible d'un sélecteur de tuple d'adresse. - target_record_type
str– Type d'enregistrement cible logique pour un sélecteur de tuple d'adresse. - relation_type
str– Libellé source-cible d'un sélecteur d'adresse. - relation_id
str: identificateur de relation à sélectionner directement. Fournissez cet argument uniquement.
- source_record_id
- Retours : nombre de relations supprimées, soit
0, soit1. - Type de retour : int
Exemples
thread.delete_record_link(relation_id="relation-id")
1
method delete_record_link_async (async)
Supprimez de manière asynchrone une relation appartenant à ce thread.
- Paramètres:
- source_record_id
str - type_enregistrement_source
str - target_record_id
str - type_enregistrement_cible
str - type_relation
str - relation_id
str
- source_record_id
- Type de retour : int
méthode get_context_card
Renvoie un objet context-card pour le thread.
Préférez get_context_card_async lorsqu'une implémentation soutenue par un LLM peut effectuer des E/S réseau distantes.
- Paramètres:
- fallback_message_count
int– Nombre de messages récents à utiliser lors de la dérivation du texte récapitulatif de restauration pour l'extraction et le rendu. Lorsqu'elle est omise, elle est résolue en5. -
max_relevant_results
int–Nombre maximum d'enregistrements pertinents (de type mémoire, par exemple, faits/préférences, ainsi que messages) à inclure dans la section
<relevant_information>de la carte de contexte.- Si cette valeur et
min_relevant_results_by_typesont omis,max_relevant_resultsest résolu en5. - Si
min_relevant_results_by_typeest fourni,max_relevant_resultsest résolu enmax(max_relevant_results, sum(min_relevant_results_by_type.values())).
- Si cette valeur et
- token_budget
int | None: limite stricte facultative pour le nombre estimé de jetons des résultats pertinents formatés dans la carte de contexte. Lorsqu'elle est omise, la configuration de la recherche de thread est utilisée. Les valeurs positives conservent les résultats complets dans l'ordre de classement tandis que leur estimation cumulée correspond au budget. Si le premier résultat ne convient pas, aucun résultat pertinent n'est inclus. Les valeurs non positives désactivent le plafond. - soft_token_budget
int | None: cible facultative pour le nombre estimé de jetons des résultats pertinents formatés. Lorsqu'elle est omise, la configuration de la recherche de thread est utilisée. Le résultat complet qui atteint ou dépasse cette cible est conservé. Les valeurs non positives désactivent cette cible. Définisseztoken_budgetsur une valeur supérieure lorsque la sortie doit également avoir une limite absolue. - max_recent_messages
int– Nombre maximal de messages de conversation récents à inclure dans la section<recent_messages>de la carte de contexte. Lorsqu'elle est omise,max_recent_messagesest résolu en0. -
sauf_last_messages
int–Nombre de messages de fin à exclure de la recherche d'informations pertinentes et récapitulatives générée incluse dans la carte de contexte. Cela évite que les messages fournis séparément dans les invites LLM ne soient dupliqués dans la carte de contexte. Utilisez l'un des modèles suivants :
-
- Queue brute externe (recommandée pour la mise en cache des invites) :
get_context_card(except_last_messages=N, max_recent_messages=0)L'invite contient la carte de contexte suivie des derniers messages brutsN.
-
- Carte de contexte autonome :
get_context_card(except_last_messages=N, max_recent_messages=N)La carte de contexte contient les derniers messagesN.
Lorsque la valeur est différente de zéro,
max_recent_messagesdoit être0ou avoir la même valeur. -
- min_relevant_results_by_type
Mapping[Literal['message', 'memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Minimums par type facultatifs pour les enregistrements pertinents inclus dans la carte de contexte. Les types demandés sont recherchés en premier et les emplacementsmax_relevant_resultsrestants sont remplis à partir de tous les types d'enregistrements de type mémoire pris en charge. Les clés prises en charge sont"memory","fact","guideline","preference"et"message". Les résultats des messages sont limités au thread en cours. -
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 lors de la recherche d'enregistrements de type mémoire à inclure dans la carte de contexte. 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": "chat"}pour un champ scalaire,metadata_filter={"travel": {"need": "transit"}}pour un champ imbriqué etmetadata_filter={"tags": ["trip", "urgent"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }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": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - include_invalid_results
bool– Indique si les enregistrements pertinents dont le statut de cycle de vie n'est pas valide sont inclus dans la carte de contexte. Omettez cet argument ou transmettezTruepour l'inclure. TransmettezFalsepour les exclure. - **kwargs (N'importe lequel) – Réservé aux futures options de carte contextuelle. Les arguments de mot-clé inattendus déclenchent
TypeError.
- fallback_message_count
- Renvoie : objet de carte de contexte contenant un récapitulatif de contexte de thread basé sur les messages les plus récents. Utilisez
OracleContextCard.contentpour accéder au texte de type XML affiché. - Type de retour : OracleContextCard
Notes
Cela utilise la portée de recherche par défaut du thread avec exact_thread_match=False, de sorte que les mémoires pertinentes d'autres threads pour le même utilisateur/agent peuvent être incluses.
Exemples
thread.add_memory("User likes pizza", memory_id="mem-context-docs")
'mem-context-docs'
len(thread.add_messages([{"role": "user", "content": "Tell me about pizza"}]))
1
"User likes pizza" in thread.get_context_card().content
True
card = thread.get_context_card(
max_relevant_results=4,
min_relevant_results_by_type={"memory": 1},
)
len(card.relevant_results or []) <= 4
True
method get_context_card_async (async)
Renvoie de manière asynchrone un objet context-card pour le thread.
- Paramètres:
- fallback_message_count
int– Nombre de messages récents à utiliser lors de la dérivation du texte récapitulatif de restauration pour l'extraction et le rendu. Lorsqu'elle est omise, elle est résolue en5. -
max_relevant_results
int–Nombre maximum d'enregistrements pertinents (de type mémoire, par exemple, faits/préférences, ainsi que messages) à inclure dans la section
<relevant_information>de la carte de contexte.- Si cette valeur et
min_relevant_results_by_typesont omis,max_relevant_resultsest résolu en5. - Si
min_relevant_results_by_typeest fourni,max_relevant_resultsest résolu enmax(max_relevant_results, sum(min_relevant_results_by_type.values())).
- Si cette valeur et
- token_budget
int | None: limite stricte facultative pour le nombre estimé de jetons des résultats pertinents formatés dans la carte de contexte. Lorsqu'elle est omise, la configuration de la recherche de thread est utilisée. Les valeurs positives conservent les résultats complets dans l'ordre de classement tandis que leur estimation cumulée correspond au budget. Si le premier résultat ne convient pas, aucun résultat pertinent n'est inclus. Les valeurs non positives désactivent le plafond. - soft_token_budget
int | None: cible facultative pour le nombre estimé de jetons des résultats pertinents formatés. Lorsqu'elle est omise, la configuration de la recherche de thread est utilisée. Le résultat complet qui atteint ou dépasse cette cible est conservé. Les valeurs non positives désactivent cette cible. Définisseztoken_budgetsur une valeur supérieure lorsque la sortie doit également avoir une limite absolue. - max_recent_messages
int– Nombre maximal de messages de conversation récents à inclure dans la section<recent_messages>de la carte de contexte. Lorsqu'elle est omise,max_recent_messagesest résolu en0. -
sauf_last_messages
int–Nombre de messages de fin à exclure de la recherche d'informations pertinentes et récapitulatives générée incluse dans la carte de contexte. Cela évite que les messages fournis séparément dans les invites LLM ne soient dupliqués dans la carte de contexte. Utilisez l'un des modèles suivants :
-
- Queue brute externe (recommandée pour la mise en cache des invites) :
get_context_card(except_last_messages=N, max_recent_messages=0)L'invite contient la carte de contexte suivie des derniers messages brutsN.
-
- Carte de contexte autonome :
get_context_card(except_last_messages=N, max_recent_messages=N)La carte de contexte contient les derniers messagesN.
Lorsque la valeur est différente de zéro,
max_recent_messagesdoit être0ou avoir la même valeur. -
- min_relevant_results_by_type
Mapping[Literal['message', 'memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Minimums par type facultatifs pour les enregistrements pertinents inclus dans la carte de contexte. Les types demandés sont recherchés en premier et les emplacementsmax_relevant_resultsrestants sont remplis à partir de tous les types d'enregistrements de type mémoire pris en charge. Les clés prises en charge sont"memory","fact","guideline","preference"et"message". Les résultats des messages sont limités au thread en cours. -
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 lors de la recherche d'enregistrements de type mémoire à inclure dans la carte de contexte. 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": "chat"}pour un champ scalaire,metadata_filter={"travel": {"need": "transit"}}pour un champ imbriqué etmetadata_filter={"tags": ["trip", "urgent"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }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": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - include_invalid_results
bool– Indique si les enregistrements pertinents dont le statut de cycle de vie n'est pas valide sont inclus dans la carte de contexte. Omettez cet argument ou transmettezTruepour l'inclure. TransmettezFalsepour les exclure. - **kwargs (N'importe lequel) – Réservé aux futures options de carte contextuelle. Les arguments de mot-clé inattendus déclenchent
TypeError.
- fallback_message_count
- Renvoie : objet de carte de contexte pour le thread.
- Type de retour : OracleContextCard
Exemples
import asyncio
card = asyncio.run(thread.get_context_card_async(
min_relevant_results_by_type={"preference": 1, "guideline": 1},
))
len(card.relevant_results or []) <= 5
True
méthode get_message
Renvoyer un message appartenant à ce thread.
Les parties d'image sont renvoyées avec leurs identificateurs et descriptions par défaut. Transmettez included_image_ids pour charger les octets des parties d'image sélectionnées. Les identificateurs non liés sont ignorés.
- Paramètres:
- message_id
str– Identificateur du message à extraire. Le message doit appartenir à ce sujet de discussion. - included_image_ids
list[str]: liste facultative des identificateurs d'image attachés dont les octets doivent être chargés. Omettez cet argument ou transmettezNonepour renvoyer des métadonnées d'image sans charger d'octets.
- message_id
- Renvoie : message demandé, y compris les parties d'image jointes.
- Type de retour : Message
- Elèves : KeyError - Indique si le message n'existe pas ou appartient à un autre thread.
method get_message_async (async)
Renvoyer un message appartenant au thread de manière asynchrone.
included_image_ids sélectionne éventuellement les parties d'image attachées dont les octets doivent être chargés ; omis ou None renvoie uniquement les métadonnées d'image.
- Paramètres:
- message_id
str– Identificateur du message à extraire. Le message doit appartenir à ce sujet de discussion. - included_image_ids
list[str]: liste facultative des identificateurs d'image attachés à hydrater.
- message_id
- Renvoie : message demandé, y compris les parties d'image jointes.
- Type de retour : Message
- Elèves : KeyError - Indique si le message n'existe pas ou appartient à un autre thread.
méthode get_messages
Renvoyer les messages stockés pour ce sujet de discussion.
- Paramètres:
- start
int | None: index de démarrage (basé sur 0). Lorsqu'elle est omise avecend, la fenêtre limitée la plus récente est renvoyée. - end
int | None: index de fin (exclusif). Lorsqu'elle est omise, une fenêtre délimitée des messages les plus récents est renvoyée. TransmettezNoneou-1pour demander explicitement tous les messages à partir destart. - include_image_bytes
bool: indique si les octets doivent être chargés pour les parties d'image attachées aux messages renvoyés. Omettez cet argument ou transmettezFalsepour renvoyer des métadonnées d'image sans charger les valeurs BLOB.
- start
- Retours : messages dans l'ordre chronologique.
- Type de retour : list[Message]
Exemples
len(thread.add_messages([{"role": "user", "content": "Stored message example"}]))
1
messages = thread.get_messages()
messages[-1].content
'Stored message example'
method get_messages_async (async)
Obtenez les messages non traités à partir du thread, tels qu'ils ont été ajoutés avec add_messages de manière asynchrone.
- Paramètres:
- start
int | None: index de démarrage (basé sur 0). Lorsqu'elle est omise avecend, la fenêtre limitée la plus récente est renvoyée. - end
int | None: index de fin (exclusif). Lorsqu'elle est omise, une fenêtre délimitée des messages les plus récents est renvoyée. TransmettezNoneou-1pour demander explicitement tous les messages à partir destart. - include_image_bytes
bool: indique si les octets doivent être chargés pour les parties d'image attachées aux messages renvoyés. Omettez cet argument ou transmettezFalsepour renvoyer des métadonnées d'image sans charger les valeurs BLOB.
- start
- Retours : messages dans l'ordre chronologique.
- Type de retour : list[Message]
Exemples
import asyncio
message_ids = asyncio.run(thread.add_messages_async(
[{"role": "user", "content": "Stored message example"}]
))
len(message_ids)
1
messages = asyncio.run(thread.get_messages_async())
messages[-1].content
'Stored message example'
méthode get_summary
Renvoie un récapitulatif du sujet de discussion.
Une demande de thread complet réutilise ou actualise le récapitulatif durable. Une demande avec except_last récapitule ce préfixe sans modifier le récapitulatif complet durable.
Préférez get_summary_async lorsqu'une implémentation soutenue par un LLM peut effectuer des E/S réseau distantes.
- Paramètres:
- sauf_last
int– Nombre de messages les plus récents à exclure du récapitulatif. - token_budget
int– Budget de jeton logiciel. Lorsqu'elle est omise, une valeur par défaut limitée est appliquée. Les valeurs positives ne sont tronquées que lorsque la synthèse formatée dépasse le budget. Les valeurs non positives désactivent la troncation basée sur le budget ; les basculements de transcription restent limités à 4 000 caractères. - **kwargs (N'importe lequel) – Réservé aux options de récapitulatif futures. Les arguments de mot-clé inattendus déclenchent
TypeError.
- sauf_last
- Renvoie : objet récapitulatif contenant le texte récapitulatif du thread synthétisé.
- Type de retour : OracleSummary
Exemples
len(thread.add_messages([{"role": "assistant", "content": "Summary source message"}]))
1
summary = thread.get_summary()
bool(summary.content)
True
method get_summary_async (async)
Renvoie de manière asynchrone un récapitulatif du thread.
Une demande de thread complet réutilise ou actualise le récapitulatif durable. Une demande avec except_last récapitule ce préfixe sans modifier le récapitulatif complet durable.
- Paramètres:
- sauf_last
int– Nombre de messages les plus récents à exclure du récapitulatif. - token_budget
int– Budget de jeton logiciel. Lorsqu'elle est omise, une valeur par défaut limitée est appliquée. Les valeurs positives ne sont tronquées que lorsque la synthèse formatée dépasse le budget. Les valeurs non positives désactivent la troncation basée sur le budget ; les basculements de transcription restent limités à 4 000 caractères. - **kwargs (N'importe lequel) – Réservé aux options de récapitulatif futures. Les arguments de mot-clé inattendus déclenchent
TypeError.
- sauf_last
- Renvoie : objet récapitulatif contenant le texte récapitulatif du thread synthétisé.
- Type de retour : OracleSummary
méthode link_records
Créez une relation dirigée entre deux enregistrements appartenant à ce thread.
Actuellement, les deux adresses doivent être des enregistrements de type mémoire : "memory", "fact", "guideline" ou "preference". Les types de relation intégrés sont "supersedes" ("is_superseded_by"), "contradicts", "refines" ("is_refined_by"), "supports" ("is_supported_by") et "duplicates". "contradicts" et "duplicates" utilisent le même libellé à l'envers.
Les deux adresses doivent appartenir à ce thread exact. Une seule orientation peut être stockée pour une paire d'adresses. opposite_relation_type nomme la relation lors de l'acheminement de la cible vers la source. Par exemple, new "supersedes" old devient old "is_superseded_by" new dans cette direction.
- Paramètres:
- source_record_id
str– Identificateur de l'enregistrement source détenu par le thread. - source_record_type
str– Type logique de l'enregistrement source. - target_record_id
str– Identificateur de l'enregistrement cible détenu par le thread. - target_record_type
str– Type logique de l'enregistrement cible. - relation_type
str: libellé de relation source-cible. - opposite_relation_type
str: étiquette de contrepassation facultative. Pour un type de relation de mémoire intégré, l'omission utilise son étiquette inverse prédéfinie ; pour un type de relation personnalisé, l'omission utilise la même étiquette dans les deux sens. - relation_id
str: identificateur de relation stable facultatif. Omettez-le pour en générer un. - timestamp
str | None: horodatage facultatif stocké sur la relation. - metadata
dict[str, Any] | None– Métadonnées de relation facultatives.
- source_record_id
- Retours : Identificateur de la relation créée.
- Type de retour : str
Exemples
thread.link_records(
"fact-1", "fact", "memory-1", "memory", "supports"
)
'relation-id'
method link_records_async (async)
Créez de manière asynchrone une relation entre les enregistrements appartenant à ce thread.
Actuellement, les deux adresses doivent être des enregistrements de type mémoire : "memory", "fact", "guideline" ou "preference". Les types de relation intégrés sont "supersedes" ("is_superseded_by"), "contradicts", "refines" ("is_refined_by"), "supports" ("is_supported_by") et "duplicates". "contradicts" et "duplicates" utilisent le même libellé à l'envers.
- Paramètres:
- source_record_id
str - type_enregistrement_source
str - target_record_id
str - type_enregistrement_cible
str - type_relation
str - opposite_relation_type
str - relation_id
str - horodatage
str | None - métadonnées
dict[str, Any] | None
- source_record_id
- Type de retour : str
méthode list_images
Répertorier les enregistrements d'image détenus par ce thread.
Les enregistrements renvoyés contiennent des métadonnées d'image par défaut. Les octets bruts sont chargés uniquement lorsque include_bytes=True et image_id sont fournis.
- Paramètres:
- image_id
str: identificateur facultatif utilisé pour filtrer les images. Lorsqu'il est omis, aucun filtre d'identifiant n'est appliqué. - metadata_filter
dict[str, Any] | None– Filtre facultatif appliqué aux métadonnées d'image. - include_bytes
bool– Indique s'il faut charger les octets bruts. Cela nécessite une valeurimage_id. - limit
int | None– Nombre maximum d'enregistrements facultatif. TransmettezNonepour désactiver la limite par défaut de la banque.
- image_id
- Retours : images correspondantes dans l'ordre du magasin.
- Type de retour : list[ImageRecord]
method list_images_async (async)
Répertorier les enregistrements d'image appartenant à ce thread de manière asynchrone.
Les enregistrements renvoyés contiennent des métadonnées d'image par défaut. Les octets bruts sont chargés uniquement lorsque include_bytes=True et image_id sont fournis. La portée de ce thread est appliquée automatiquement.
- Paramètres:
- image_id
str: identificateur facultatif utilisé pour filtrer les images. Lorsqu'il est omis, aucun filtre d'identifiant n'est appliqué. - metadata_filter
dict[str, Any] | None– Filtre facultatif appliqué aux métadonnées d'image. - include_bytes
bool– Indique s'il faut charger les octets bruts. Cela nécessite une valeurimage_id. - limit
int | None– Nombre maximum d'enregistrements facultatif. TransmettezNonepour désactiver la limite par défaut de la banque.
- image_id
- Retours : images correspondantes dans l'ordre du magasin.
- Type de retour : list[ImageRecord]
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: remplacement facultatif de la portée de l'utilisateur. Les valeurs omises héritent de la portée utilisateur par défaut du thread. - agent_id
str | None: remplacement facultatif de la portée de l'agent. Les valeurs omises héritent de la portée de l'agent par défaut du thread. - thread_id
str | None: remplacement facultatif de la portée du thread. Les valeurs omises héritent de l'identificateur de thread actuel du thread. - exact_user_match
bool– Indique si la correspondance d'utilisateurs doit être stricte. - exact_agent_match
bool: indique si la correspondance d'agent doit être stricte. - exact_thread_match
bool: indique si la mise en correspondance des threads doit être stricte. - 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. L'appel peut renvoyer moins demax_resultslorsqu'il existe moins d'enregistrements correspondants non expirés. - token_budget
int: limite stricte facultative pour le nombre estimé de jetons des résultats formatés finaux. Lorsqu'elle est omise, la configuration de la recherche résolue est utilisée. Les valeurs positives conservent les résultats complets dans l'ordre de classement tandis que leur estimation cumulée correspond au budget. Si le premier résultat ne convient pas, aucun résultat n'est renvoyé. Les valeurs non positives désactivent cette limite de sortie. - soft_token_budget
int: cible facultative pour le nombre estimé de jetons des résultats formatés finaux. Lorsqu'elle est omise, la configuration de la recherche résolue est utilisée. Le résultat complet qui atteint ou dépasse cette cible est conservé. Les valeurs non positives désactivent cette cible. Définisseztoken_budgetsur une valeur supérieure lorsque la sortie doit également avoir une limite absolue. - record_types
list[str]– Liste facultative des types d'enregistrement à inclure, tels que"memory","message"ou"image". -
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": "chat"}pour un champ scalaire,metadata_filter={"travel": {"need": "transit"}}pour un champ imbriqué etmetadata_filter={"tags": ["trip", "urgent"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }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": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - include_invalid_results
bool: indique si les résultats incluent des enregistrements dont le statut n'est pas valide. Omettez cet argument ou transmettezTruepour l'inclure. TransmettezFalsepour les exclure. - num_hops
int– Nombre d'arêtes de liaison mémoire à suivre à partir de chaque résultat de mémoire directe. Les valeurs de0à5sont prises en charge ; omettez uniquement pour obtenir des résultats directs. Les résultats directs des messages, des images et des profils sont conservés, mais ne sont pas développés dans les graphiques. - max_linked_results
int: nombre maximal de mémoires liées sur tous les sauts attachés à chaque résultat direct. Omettre pour la valeur par défaut de100; transmettre0pour ne renvoyer aucun contexte lié. - scope
SearchScope: portée de recherche prédéfinie facultative. Indiquezscopeou l'identificateur explicite et les arguments de correspondance exacte, et non les deux.
- 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, ou simetadata_filtern'est ni un dictionnaire niNone.
Notes
Les champs de portée omis héritent de la portée de recherche par défaut de ce thread : correspondance exacte entre l'utilisateur et l'agent, plus les valeurs user_id, agent_id et thread_id en cours de ce thread. La recherche de thread par défaut laisse intentionnellement exact_thread_match=False, de sorte qu'elle peut renvoyer les enregistrements pertinents d'autres threads pour le même utilisateur/agent. Transmettez exact_thread_match=True pour limiter les résultats au thread en cours. 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 valeurs None stockées.
Les valeurs max_results explicites doivent être au moins 1. Si vous omettez l'argument, la valeur par défaut de 10 est utilisée. Limite supérieure : l'appel peut renvoyer moins de résultats max_results lorsque les filtres sont trop restrictifs, lorsqu'il existe moins d'enregistrements correspondants ou en raison d'un comportement de recherche propre à l'implémentation.
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: remplacement facultatif de la portée de l'utilisateur. Les valeurs omises héritent de la portée utilisateur par défaut du thread. - agent_id
str | None: remplacement facultatif de la portée de l'agent. Les valeurs omises héritent de la portée de l'agent par défaut du thread. - thread_id
str | None: remplacement facultatif de la portée du thread. Les valeurs omises héritent de l'identificateur de thread actuel du thread. - exact_user_match
bool– Indique si la correspondance d'utilisateurs doit être stricte. - exact_agent_match
bool: indique si la correspondance d'agent doit être stricte. - exact_thread_match
bool: indique si la mise en correspondance des threads doit être stricte. - 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. - token_budget
int: limite stricte facultative pour le nombre estimé de jetons des résultats formatés finaux. Lorsqu'elle est omise, la configuration de la recherche résolue est utilisée. Les valeurs positives conservent les résultats complets dans l'ordre de classement tandis que leur estimation cumulée correspond au budget. Si le premier résultat ne convient pas, aucun résultat n'est renvoyé. Les valeurs non positives désactivent cette limite de sortie. - soft_token_budget
int: cible facultative pour le nombre estimé de jetons des résultats formatés finaux. Lorsqu'elle est omise, la configuration de la recherche résolue est utilisée. Le résultat complet qui atteint ou dépasse cette cible est conservé. Les valeurs non positives désactivent cette cible. Définisseztoken_budgetsur une valeur supérieure lorsque la sortie doit également avoir une limite absolue. - record_types
list[str]– Liste facultative des types d'enregistrement à inclure, tels que"memory","message"ou"image". -
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": "chat"}pour un champ scalaire,metadata_filter={"travel": {"need": "transit"}}pour un champ imbriqué etmetadata_filter={"tags": ["trip", "urgent"]}pour une correspondance de liste exacte. Combinez les conditions pour les exiger toutes :metadata_filter={ "source": "chat", "travel": {"need": "transit"}, "tags": ["trip", "urgent"], }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": "chat", "tags": { "$array_contains": "trip", "$not": {"$array_contains": "archived"}, }, } - include_invalid_results
bool: indique si les résultats incluent des enregistrements dont le statut n'est pas valide. Omettez cet argument ou transmettezTruepour l'inclure. TransmettezFalsepour les exclure. - num_hops
int– Nombre d'arêtes de liaison mémoire à suivre à partir de chaque résultat de mémoire directe. Les valeurs de0à5sont prises en charge ; omettez uniquement pour obtenir des résultats directs. Les résultats directs des messages, des images et des profils sont conservés, mais ne sont pas développés dans les graphiques. - max_linked_results
int: nombre maximal de mémoires liées sur tous les sauts attachés à chaque résultat direct. Omettre pour la valeur par défaut de100; transmettre0pour ne renvoyer aucun contexte lié. - scope
SearchScope: portée de recherche prédéfinie facultative. Indiquezscopeou l'identificateur explicite et les arguments de correspondance exacte, et non les deux.
- 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, ou simetadata_filtern'est ni un dictionnaire niNone.
Notes
Les champs de portée omis héritent de la portée de recherche par défaut de ce thread : correspondance exacte entre l'utilisateur et l'agent, plus les valeurs user_id, agent_id et thread_id en cours de ce thread. La recherche de thread par défaut laisse intentionnellement exact_thread_match=False, de sorte qu'elle peut renvoyer les enregistrements pertinents d'autres threads pour le même utilisateur/agent. Transmettez exact_thread_match=True pour limiter les résultats au thread en cours. 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 valeurs None stockées.
Les valeurs max_results explicites doivent être au moins 1. Si vous omettez l'argument, la valeur par défaut de 10 est utilisée. Limite supérieure : l'appel peut renvoyer moins de résultats max_results lorsque les filtres sont trop restrictifs, lorsqu'il existe moins d'enregistrements correspondants ou en raison d'un comportement de recherche propre à l'implémentation.
méthode update_image
Mettez à jour une image appartenant à ce thread.
Omettez image pour conserver les octets existants. Si image est fourni, mime_type doit l'être. Omettez description pour conserver la description existante. Transmettez None pour générer une nouvelle description avec le LLM configuré ; une description non NULL la remplace directement. L'expiration d'une image jointe à un message doit être modifiée via update_message().
- Renvoie : identificateur d'image mis à jour.
- Type de retour : str
- Elèves : ValueError – Si des paramètres d'expiration sont fournis pour une image jointe à un message.
- Paramètres:
- image_id
str - image
bytes - description
str | None - mime_type
ImageMimeType - métadonnées
dict[str, Any] | None - horodatage
str | None - ttl_days
int | None - ttl_anchor
TimeToLiveAnchor - kwargs
Any
- image_id
method update_image_async (async)
Mettez à jour une image appartenant à ce thread de manière asynchrone.
Omettez image pour conserver les octets existants. Si image est fourni, mime_type doit l'être. Omettez description pour conserver la description existante. Transmettez None pour générer une nouvelle description avec le LLM configuré ; une description non NULL la remplace directement. Les paramètres de métadonnées, d'horodatage et d'expiration sont mis à jour lorsqu'ils sont fournis. L'expiration d'une image jointe à un message doit être modifiée via update_message_async().
- Renvoie : identificateur d'image mis à jour.
- Type de retour : str
- Elèves : ValueError – Si des paramètres d'expiration sont fournis pour une image jointe à un message.
- Paramètres:
- image_id
str - image
bytes - description
str | None - mime_type
ImageMimeType - métadonnées
dict[str, Any] | None - horodatage
str | None - ttl_days
int | None - ttl_anchor
TimeToLiveAnchor - kwargs
Any
- image_id
méthode update_memory
Mettre à jour un enregistrement de type mémoire appartenant à ce thread exact.
- Paramètres:
- memory_id
str: identificateur de mémoire. Seuls les enregistrements de type mémoire (memory,guideline,fact,preference) dont le fichierthread_idstocké correspond exactement à ce thread sont mis à 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é. 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_anchorestTimeToLiveAnchor.TIMESTAMP, les horodatages de remplacement doivent être des chaînes ISO-8601. 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 de thread 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 thread utiliseTimeToLiveAnchor.CREATED_AT. Les actualisations ancrées dans l'horodatage nécessitent un horodatage ISO-8601 de remplacement dans le même appel ou un horodatage d'événement stocké existant dans ce format. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - status
RecordStatus: statut de cycle de vie de remplacement facultatif pour cet enregistrement de type mémoire. Omettez-le pour conserver le statut actuel. - **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
method update_memory_async (async)
Mettre à jour de manière asynchrone un enregistrement de type mémoire appartenant à ce thread exact.
- Paramètres:
- memory_id
str: identificateur de mémoire. Seuls les enregistrements de type mémoire (memory,guideline,fact,preference) dont le fichierthread_idstocké correspond exactement à ce thread sont mis à 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é. 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_anchorestTimeToLiveAnchor.TIMESTAMP, les horodatages de remplacement doivent être des chaînes ISO-8601. 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 de thread 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 thread utiliseTimeToLiveAnchor.CREATED_AT. Les actualisations ancrées dans l'horodatage nécessitent un horodatage ISO-8601 de remplacement dans le même appel ou un horodatage d'événement stocké existant dans ce format. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - status
RecordStatus: statut de cycle de vie de remplacement facultatif pour cet enregistrement de type mémoire. Omettez-le pour conserver le statut actuel. - **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
Exemples
import asyncio
memory_id = asyncio.run(thread.add_memory_async("Original memory"))
(
asyncio.run(thread.update_memory_async(
memory_id, content="Updated memory"
))
== memory_id
)
True
méthode update_message
Mettre à jour un enregistrement de message brut appartenant à ce thread exact.
- Paramètres:
- message_id
str– Identifiant du message. Seuls les messages dont le fichierthread_idstocké correspond exactement à ce thread sont mis à jour. - content
str | list[Mapping[str, Any]]: contenu de message de remplacement facultatif. Indiquez une chaîne pour remplacer le contenu stocké ou une séquence ordonnée de parties de contenu de texte et d'image. Lorsqu'il est omis, le contenu stocké est conservé. Utilisez une chaîne vide pour la remplacer par du texte vide. - 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. - 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 messages expirés ne sont pas disponibles pour cette API de thread et ne peuvent pas être actualisés. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative pour une actualisation d'expiration. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création du message ouTimeToLiveAnchor.TIMESTAMPpour l'horodatage d'événement stocké. 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 thread utiliseTimeToLiveAnchor.CREATED_AT. Les actualisations ancrées dans l'horodatage nécessitent un horodatage de message ISO-8601 stocké existant. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - **kwargs (Any) : les arguments de mot-clé inattendus sont rejetés.
- message_id
- Retours : Identifiant de l'enregistrement de message mis à jour.
- Type de retour : str
Notes
Les champs omis sont préservés de l'enregistrement stocké. Le rôle stocké et l'horodatage restent inchangés. La modification du contenu met à jour l'historique des messages bruts et, lorsque l'extraction automatique est activée, le kit SDK peut extraire de nouveau les mémoires du message modifié et de l'historique précédent. En mode INLINE, cette extraction se termine avant que cette méthode ne soit renvoyée. En mode BACKGROUND, cette méthode renvoie une fois la mise à jour du message brut réussie et l'extraction en arrière-plan tentée. Ce travail de suivi n'affecte pas la fréquence d'extraction normale utilisée par les appels add_messages() ultérieurs. Les mémoires extraites existantes restent en place tandis que les mémoires nouvellement extraites du contenu modifié peuvent être ajoutées. Etant donné que la mise à jour du message brut et toute écriture de mémoire extraite ultérieure ne se produisent pas de manière atomique, les mémoires extraites peuvent toujours refléter le contenu du message précédent si le travail en arrière-plan ne fait pas l'objet d'une file d'attente, si une attente de capacité de file d'attente configurée atteint son délai d'attente ou si le travail d'extraction ultérieur échoue. Notez également que les mémoires extraites existantes conservent leur expiration initiale lorsque la durée de vie d'un message source change.
Exemples
message_id = thread.add_messages([{"role": "user", "content": "Draft message"}])[0]
thread.update_message(message_id, content="Edited message") == message_id
True
method update_message_async (async)
Mettre à jour un enregistrement de message brut appartenant à ce thread exact de manière asynchrone.
- Paramètres:
- message_id
str– Identifiant du message. Seuls les messages dont le fichierthread_idstocké correspond exactement à ce thread sont mis à jour. - content
str | list[Mapping[str, Any]]: contenu de message de remplacement facultatif. Indiquez une chaîne pour remplacer le contenu stocké ou une séquence ordonnée de parties de contenu de texte et d'image. Lorsqu'il est omis, le contenu stocké est conservé. Utilisez une chaîne vide pour la remplacer par du texte vide. - 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. - 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 messages expirés ne sont pas disponibles pour cette API de thread et ne peuvent pas être actualisés. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative pour une actualisation d'expiration. UtilisezTimeToLiveAnchor.CREATED_ATpour l'heure de création du message ouTimeToLiveAnchor.TIMESTAMPpour l'horodatage d'événement stocké. Si vous indiquezttl_anchorsansttl_days, la durée de vie par défaut du schéma est utilisée. Les actualisations ancrées dans l'horodatage nécessitent un horodatage de message ISO-8601 stocké existant. Les horodatages ISO-8601 sans fuseau horaire sont traités comme UTC. - **kwargs (Any) : les arguments de mot-clé inattendus sont rejetés.
- message_id
- Retours : Identifiant de l'enregistrement de message mis à jour.
- Type de retour : str
Notes
Les champs omis sont préservés de l'enregistrement stocké. Le rôle stocké et l'horodatage restent inchangés. La modification du contenu met à jour l'historique des messages bruts et, lorsque l'extraction automatique est activée, le kit SDK peut extraire de nouveau les mémoires du message modifié et de l'historique précédent. En mode INLINE, cette extraction se termine avant que cette méthode ne soit renvoyée. En mode BACKGROUND, cette méthode renvoie une fois la mise à jour du message brut réussie et l'extraction en arrière-plan tentée. Ce travail de suivi n'affecte pas la fréquence d'extraction normale utilisée par les appels add_messages() ultérieurs. Les mémoires extraites existantes restent en place tandis que les mémoires nouvellement extraites du contenu modifié peuvent être ajoutées. Etant donné que la mise à jour du message brut et toute écriture de mémoire extraite ultérieure ne se produisent pas de manière atomique, les mémoires extraites peuvent toujours refléter le contenu du message précédent si le travail en arrière-plan ne fait pas l'objet d'une file d'attente, si une attente de capacité de file d'attente configurée atteint son délai d'attente ou si le travail d'extraction ultérieur échoue. Notez également que les mémoires extraites existantes conservent leur expiration initiale lorsque la durée de vie d'un message source change.
Exemples
import asyncio
message_ids = asyncio.run(thread.add_messages_async(
[{"role": "user", "content": "Draft message"}]
))
(
asyncio.run(thread.update_message_async(
message_ids[0], content="Edited message"
))
== message_ids[0]
)
True
méthode update_record_link
Mettez à jour une relation dont les adresses appartiennent à ce thread.
Les valeurs omises sont conservées. Lorsque relation_type passe à un type de relation de mémoire intégré, son libellé inverse fixe remplace opposite_relation_type.
- Paramètres:
- relation_id
str– Identificateur de la relation détenue par le thread. - relation_type
str: étiquette de remplacement facultative source-cible. - opposite_relation_type
str: étiquette de contrepassation de remplacement facultative. Omettez-le pour conserver l'étiquette stockée. - timestamp
str | None: horodatage de remplacement facultatif. TransmettezNonepour effacer le contenu. - metadata
dict[str, Any] | None: métadonnées de remplacement facultatives. Il remplace l'objet stocké.
- relation_id
- Retours : Nombre de relations mises à jour,
0ou1. - Type de retour : int
Exemples
thread.update_record_link("relation-id", relation_type="supports")
1
method update_record_link_async (async)
Mettez à jour de manière asynchrone une relation dont les adresses appartiennent à ce thread.
- Paramètres:
- relation_id
str - type_relation
str - opposite_relation_type
str - horodatage
str | None - métadonnées
dict[str, Any] | None
- relation_id
- Type de retour : int
méthode wait_for_memory_extraction
Attendez l'extraction de mémoire en arrière-plan précédente pour ce thread.
Cette méthode attend l'extraction en arrière-plan démarrée par les appels add_messages(), add_messages_async(), update_message() ou update_message_async() précédents sur ce thread via le même composant de mémoire d'agent. Si l'un de ces appels est déjà terminé, cette méthode inclut l'extraction qu'il commence avant d'attendre.
La méthode 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 la fin de l'extraction en attente de ce thread. - 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
thread.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
import asyncio
asyncio.run(thread.wait_for_memory_extraction_async(timeout=10))
Remarque : delete_message() supprime uniquement la ligne de message brut. Les mémoires dérivées peuvent toujours être consultables ou apparaître dans des cartes de contexte. Utilisez OracleAgentMemory.delete_thread() pour supprimer le thread ainsi que les messages et les mémoires associés. La suppression de messages et de mémoire via un descripteur de thread attend une extraction en arrière-plan antérieure déjà acceptée par le client attaché pour ce thread. Il ne s'agit pas d'une barrière de simultanéité globale pour les autres instances client, processus ou travaux acceptés après le début de l'attente.
Messages et contenu des messages
classe oracleagentmemory.apis.message.Message
Bases : object
Message en mémoire partagé par les threads et les adaptateurs LLM.
- Paramètres:
- role
str: rôle de message. Les noms de rôle personnalisés sont autorisés pour les messages de thread. - content
str | collections.abc.Sequence[oracleagentmemory.apis.message.MessageContent]– Texte du message ou séquence ordonnée de parties TextContent et ImageContent. Une séquence de contenu ne doit pas être vide et est stockée en tant que tuple immuable. - timestamp
str | None: horodatage facultatif associé au message. - metadata
dict[str, Any] | None– Métadonnées facultatives compatibles avec JSON associées au message. - id
str | None: identificateur de message stable facultatif. Les magasins en génèrent un lorsque le message est ajouté sans identificateur.
- role
classe oracleagentmemory.apis.message.MessageContent
Bases : ABC
Classe de base pour le contenu de message structuré.
- Paramètres:
- id
str– Identificateur stable de cette partie de contenu. Généré automatiquement lorsqu'il est omis. - timestamp
str | None: horodatage facultatif associé à cette partie de contenu.
- id
classe oracleagentmemory.apis.message.TextContent
Bases : MessageContent
Partie de texte d'un message multimodal.
- Paramètres:
- text
str– Texte transporté par cette partie de contenu. - id
str: identificateur stable hérité de MessageContent. Généré automatiquement lorsqu'il est omis. - timestamp
str | None: horodatage facultatif hérité de MessageContent.
- text
classe oracleagentmemory.apis.message.ImageContent
Bases : MessageContent
Partie d'une image dans un message multimodal.
- Paramètres:
- bytes
bytes | None: données d'image disponibles.Noneest autorisé lorsqu'un message contient des métadonnées d'image sans charger les octets d'image. - mime_type
oracleagentmemory.apis.message.ImageMimeType– Type MIME de l'image. - description
str | None– Texte facultatif décrivant l'image. LorsqueNone, les API d'image et de message de haut niveau peuvent générer une description à l'aide de leur LLM configuré. - id
str: identificateur stable hérité de MessageContent. Généré automatiquement lorsqu'il est omis. - timestamp
str | None: horodatage facultatif hérité de MessageContent.
- bytes
classe oracleagentmemory.apis.message.ImageMimeType
Bases : str, Enum
Types MIME pris en charge pour le contenu d'image.
Les formats PNG et WebP animés ne sont pas pris en charge.
JPEG = 'image/JPEG'
PNG = 'image/PNG'
WEBP = 'image/WEBP'
Fiches contextuelles
classe oracleagentmemory.apis.contextcard.ContextCard
Bases : ABC
Objet de carte de contexte abstrait renvoyé par les API de thread.
property content (résumé)
- Type de retour : str
- Description : renvoie le texte de la carte contextuelle affichée.
classe oracleagentmemory.core.contextcard.OracleContextCard
Bases : ContextCard
Carte de contexte renvoyée par un thread Oracle.
- Paramètres:
- summary
str– Texte récapitulatif intégré à la carte. - sujets
Sequence[str] | None: rubriques d'extraction facultatives associées au thread. - relevant_results
Sequence[SearchResult] | None: enregistrements durables extraits facultatifs inclus dans la carte. - recent_messages
Sequence[Message] | None: messages bruts récents facultatifs affichés dans la carte. - message_format
str– Modèle interne utilisé lors du rendu derecent_messages.
- summary
propriété content
- Type de retour : str
-
Description : renvoie le texte de la carte contextuelle affichée.
- Renvoie : texte de carte de contexte rendu de type XML adapté à l'assemblage d'invite.
- Type de retour : str
Exemples
card = OracleContextCard(summary="ctx")
"<summary>" in card.content and "ctx" in card.content
True
propriété formatted_content
- Type de retour : str
-
Description : renvoie le texte de carte de contexte affiché utilisé dans les flux de création d'invite.
- Renvoie : texte de carte de contexte rendu de type XML.
- Type de retour : str
Exemples
OracleContextCard(summary="").formatted_content
''
card = OracleContextCard(summary="ctx", topics=["travel"])
"<topics>" in card.formatted_content
True
Récapitulatifs
classe oracleagentmemory.apis.summary.Summary
Bases : ABC
Objet récapitulatif de thread abstrait renvoyé par les API de thread.
property content (résumé)
- Type de retour : str
- Description : renvoie le texte récapitulatif synthétisé.
classe oracleagentmemory.core.summary.OracleSummary
Bases : Summary
Récapitulatif renvoyé par un thread Oracle.
- Paramètres : content
str– Texte récapitulatif synthétisé à partir de la transcription du thread.
Exemples
summary = OracleSummary(content="Plan the Rome itinerary.")
summary.content
'Plan the Rome itinerary.'
str(summary)
'Plan the Rome itinerary.'
propriété content
- Type de retour : str
-
Description : renvoie le texte récapitulatif synthétisé.
- Retours : Texte de synthèse pour le thread.
- Type de retour : str
Exemples
OracleSummary(content="Keep the tea preference in mind.").content
'Keep the tea preference in mind.'
propriété formatted_content
- Type de retour : str
-
Description : renvoie le texte récapitulatif affiché utilisé dans les flux de création d'invite.
- Retours : Texte récapitulatif affiché.
- Type de retour : str
Exemples
OracleSummary(content="Thread recap").formatted_content
'Thread recap'