> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Memory.summarizeThread() La méthode `.summarizeThread()` résume en une seule fois la conversation d’un fil. Elle charge les messages du fil depuis le stockage et les synthétise à l’aide du même mécanisme Observer que celui d’[Observational Memory](https://mastra.zisheng.pro/fr/reference/memory/observational-memory), mais sous la forme d’un appel autonome, sans qu’Observational Memory soit associé à un Agent. Les messages sont chargés page par page, en commençant par les plus récents, dans les limites définies par `lastMessages` et `maxInputTokens`. Ainsi, le résumé d’un long fil ne nécessite pas de lire tout son historique depuis le stockage. Aucune donnée n’est réécrite dans la mémoire. Le résumé et les valeurs extraites vous sont renvoyés, ainsi qu’au hook `onExtracted` de chaque extracteur. Vous décidez donc où les stocker, par exemple dans votre propre base de données. Utilisez cette méthode à la fin d’une session lorsque vous souhaitez obtenir un résumé ou une extraction structurée de l’ensemble de la conversation, par exemple au terme d’un appel vocal. Pour des messages dont vous disposez déjà, sans avoir à les charger depuis un fil, utilisez plutôt la fonction autonome [`summarizeConversation()`](https://mastra.zisheng.pro/fr/reference/memory/summarizeConversation). Elle accepte les mêmes options, avec `messages` à la place de `threadId`. ## Exemple d’utilisation ```typescript const result = await memory.summarizeThread({ model: 'openai/gpt-5-mini', threadId: 'thread-123', instructions: 'Summarize this voicemail call for the business owner.', }) ``` ## Paramètres **threadId** (`string`): Identifiant unique du fil à résumer. **model** (`string | LanguageModel | DynamicModel`): Modèle qui effectue le résumé, par exemple une chaîne de routeur comme '\_\_GATEWAY\_OPENAI\_MODEL\_MINI\_\_'. **resourceId** (`string`): ID de la ressource propriétaire du fil. Si cet ID est fourni, il permet de valider la propriété du fil. Il est également transmis aux contextes des extracteurs. **lastMessages** (`number`): Résume uniquement les N derniers messages du fil. Par défaut, l’ensemble du fil est chargé, dans la limite de maxInputTokens. **maxInputTokens** (`number`): Arrête de charger les anciens messages dès que les messages collectés dépassent ce nombre estimé de tokens. Le message le plus récent est toujours inclus. (Default: `1000000`) **instructions** (`string`): Instructions supplémentaires ajoutées au prompt système du modèle de résumé, par exemple les éléments à privilégier ou le destinataire du résumé. **extract** (`Extractor[]`): Extracteurs à exécuter sur la conversation. Les extracteurs dotés d’un schéma Zod sont exécutés lors d’un appel ultérieur avec sortie structurée ; les extracteurs sans schéma sont exécutés directement. Le hook onExtracted de chaque extracteur est déclenché avec la valeur extraite. **requestContext** (`RequestContext`): Contexte de requête transmis au modèle de résumé et aux hooks des extracteurs. **abortSignal** (`AbortSignal`): Signal permettant d’annuler l’appel de résumé. ## Valeur renvoyée **summary** (`string`): Observations synthétisées à partir de la conversation, présentées sous forme de liste à puces dense. **extracted** (`Record`): Valeurs produites par les extracteurs de extract, indexées par le slug de l’extracteur. **extractionFailures** (`{ slug: string; error: string }[]`): Extracteurs qui n’ont pas réussi à produire une valeur valide, accompagnés de la raison. Présent uniquement lorsqu’au moins un extracteur a échoué. **usage** (`{ inputTokens?: number; outputTokens?: number; totalTokens?: number }`): Utilisation des tokens par l’appel de résumé. ## Exemple d’utilisation avancée L’exemple suivant résume un appel vocal terminé et stocke un enregistrement structuré dans la propre base de données de l’application : ```typescript import { Extractor } from '@mastra/memory' import { z } from 'zod' import { memory } from './mastra/memory' import { callRecords } from './db' const callSummary = new Extractor({ name: 'call-summary', instructions: 'Return a concise summary of the call.', schema: z.object({ summary: z.string(), sentiment: z.enum(['positive', 'neutral', 'negative']), requestedServices: z.array(z.string()), }), metadataKeyPath: false, // don't persist into memory metadata — the hook owns storage onExtracted: async ({ current, threadId, resourceId }) => { await callRecords.upsert({ callId: threadId, callerId: resourceId, record: current }) }, }) export async function onCallEnd(threadId: string, resourceId: string) { await memory.summarizeThread({ model: 'openai/gpt-5-mini', threadId, resourceId, instructions: 'Summarize this voicemail call for the business owner.', extract: [callSummary], }) } ``` ### Voir aussi - [summarizeConversation()](https://mastra.zisheng.pro/fr/reference/memory/summarizeConversation) - [Référence de la classe Memory](https://mastra.zisheng.pro/fr/reference/memory/memory-class) - [Observational Memory](https://mastra.zisheng.pro/fr/reference/memory/observational-memory) - [.recall()](https://mastra.zisheng.pro/fr/reference/memory/recall)