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.
Remarques
- 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. En cas d'omission, 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. -
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.Abandonnées
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 lesquels la synthèse du contexte d'extraction doit être mise à jour. Définissez la valeur sur
-1pour ne résumer qu'une seule fois par appeladd_messagesà l'aide du lot complet de messages nouvellement ajoutés. 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: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.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. Les invites plus longues sont tronquées. Si la valeur est négative ou égale à 0, la troncature d'invite est désactivé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. - 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écapitulatif d'exécution compact du thread. Lorsque cette option est activée et qu'une valeur
llmest fournie, le récapitulatif est mis à jour en fonction decontext_summary_update_frequency. Le résumé courant est fourni comme contexte lors de l'extraction de mémoires. La valeur par défaut estTruepourOracleThread()autonome.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 facultatives ajoutées à l'invite du système d'extraction automatique de mémoire 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. -
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.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. - client
OracleAgentMemory | None
- store
Exemples
from oracleagentmemory.core import OracleAgentMemory
import oracledb
db_pool = oracledb.SessionPool(
user="YOUR DB USER",
password="YOUR DB PASSWORD",
dsn="YOUR DB CONNECT STRING",
)
client = OracleAgentMemory(connection=db_pool, embedder=embedder)
thread = client.create_thread(
thread_id="c1",
llm=llm,
memory_extraction_config=MemoryExtractionConfig(enable_context_summary=True),
)
len(thread.add_messages([{"role": "user", "content": "I love pizza."}]))
1
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 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, 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. - **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 mémoire de manière asynchrone.
- Paramètres:
- content
str: contenu de mémoire à stocker. - 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 la portée de l'utilisateur. - agent_id
str: remplacement facultatif de la portée de l'agent. - thread_id
str: remplacement facultatif de la portée du thread. - memory_id
str: identificateur de mémoire fourni par l'appelant facultatif. Lorsqu'il est omis, les magasins génèrent un ID. - 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. - 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 ou transmettezNonepour une mémoire qui n'expire pas. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative. UtilisezTimeToLiveAnchor.CREATED_ATouTimeToLiveAnchor.TIMESTAMP. - **store_kwargs (N'importe lequel) – Options d'écriture propres à l'implémentation transmises à la banque de sauvegarde.
- content
- Type de retour : str
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.
- Paramètres:
- messages
list[Message | MessageT]– 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]
Remarques
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.
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
list[Message | MessageT] - 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_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
Exemples
thread.delete_memory("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
Remarques
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
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 maximal d'enregistrements durables extraits à inclure. Lorsqu'elle est omise, elle est résolue en5, sauf simin_relevant_results_by_typeest fourni. Dans ce cas, elle est résolue en5et en somme des minimums par type demandés. - max_recent_messages
int– Nombre maximal de messages bruts de fin à intégrer mot pour mot. Lorsqu'elle est omise, elle est résolue en5. - min_relevant_results_by_type
Mapping[Literal['memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Minimums par type facultatifs pour les enregistrements de type mémoire 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"et"preference". - **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
Remarques
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 maximal d'enregistrements durables extraits à inclure. Lorsqu'elle est omise, elle est résolue en5, sauf simin_relevant_results_by_typeest fourni. Dans ce cas, elle est résolue en5et en somme des minimums par type demandés. - max_recent_messages
int– Nombre maximal de messages bruts de fin à intégrer mot pour mot. Lorsqu'elle est omise, elle est résolue en5. - min_relevant_results_by_type
Mapping[Literal['memory', 'guideline', 'fact', 'preference'], int] | None | ~oracleagentmemory._notset._NotSetMarker– Minimums par type facultatifs pour les enregistrements de type mémoire 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"et"preference". - **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
card = await thread.get_context_card_async(
min_relevant_results_by_type={"preference": 1, "guideline": 1},
)
len(card.relevant_results or []) <= 5
True
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.
- 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)
Renvoyer les messages de thread bruts de manière asynchrone.
- Paramètres:
- start
int | None: index de démarrage facultatif. - end
int | None: index de fin facultatif.
- start
- Renvoie : objets de message brut.
- Type de retour : list[Message]
méthode get_summary
Renvoyer un résumé au mieux du thread.
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 le récapitulatif formaté dépasse le budget estimé par_estimate_tokens(). Le texte renvoyé est alors limité àint(token_budget * 3.5)caractères. Les valeurs non positives désactivent la limite de sortie. - **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 au mieux du thread.
- 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 le récapitulatif formaté dépasse le budget estimé par_estimate_tokens(). Le texte renvoyé est alors limité àint(token_budget * 3.5)caractères. Les valeurs non positives désactivent la limite de sortie. - **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 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. - 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": "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"}, }, } - 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.
Remarques
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. - 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": "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"}, }, } - 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.
Remarques
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_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é. 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_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. - **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 un enregistrement de type mémoire de manière asynchrone.
- 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 conserver l'horodatage d'expiration en cours. TransmettezNonepour effacer l'expiration. - ttl_anchor
TimeToLiveAnchor: ancre de durée de vie facultative pour une actualisation d'expiration. Si vous indiquezttl_anchorsansttl_days, la durée de vie par défaut du schéma est utilisée. - **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
from functools import partial
from oracleagentmemory._async_helpers import run_async_in_sync
memory_id = thread.add_memory("Original memory")
run_async_in_sync(
partial(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: contenu de message 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. - 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
Remarques
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: contenu de message 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. - 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
Remarques
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]
run_async_in_sync(
partial(thread.update_message_async, message_id, content="Edited message")
) == message_id
True
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
await 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 thread au niveau du client attend une extraction en arrière-plan précédemment acceptée déjà connue pour ce thread, mais il ne s'agit pas d'une barrière de simultanéité globale pour les autres opérations sur le même thread alors que la suppression est en cours.
Messages
classe oracleagentmemory.apis.thread.Message
Bases : object
- Paramètres:
- rôle
str - contenu
str - horodatage
str | None - métadonnées
dict[str, Any] | None - id
str | None
- rôle
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'