summarizeConversation()
La fonction autonome summarizeConversation() résume une conversation en une seule fois. Elle synthétise les messages transmis à l’aide du même mécanisme Observer que celui d’Observational Memory, sans qu’Observational Memory soit associé à un Agent et sans lire ni écrire de données dans 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 fonction lorsque vous disposez déjà des messages et souhaitez contrôler explicitement les éléments à résumer. Pour un fil stocké et identifié par un ID, utilisez Memory.summarizeThread(), qui charge les messages pour vous.
Exemple d’utilisationLien direct vers Exemple d’utilisation
import { summarizeConversation } from '@mastra/memory'
const result = await summarizeConversation({
model: 'openai/gpt-5-mini',
messages,
instructions: 'Summarize this voicemail call for the business owner.',
})
ParamètresLien direct vers Paramètres
model:
messages:
instructions?:
extract?:
onExtracted de chaque extracteur est déclenché avec la valeur extraite.threadId?:
threadId trouvé dans messages. Transmis aux contextes des extracteurs.resourceId?:
resourceId trouvé dans messages. Transmise aux contextes des extracteurs.memory?:
Memory.summarizeThread().mastra?:
Memory.summarizeThread().requestContext?:
abortSignal?:
Valeur renvoyéeLien direct vers Valeur renvoyée
summary:
extracted:
extract, indexées par le slug de l’extracteur.extractionFailures:
usage:
Exemple d’utilisation avancéeLien direct vers Exemple d’utilisation avancée
L’exemple suivant résume une session vocale en cours à partir de messages que l’application détient déjà, puis extrait un enregistrement structuré :
import { summarizeConversation, Extractor } from '@mastra/memory'
import type { MastraDBMessage } from '@mastra/core/agent'
import { z } from 'zod'
import { sessionRecords } from './db'
const sessionSummary = new Extractor({
name: 'session-summary',
instructions: 'Return a concise summary of the session.',
schema: z.object({
summary: z.string(),
sentiment: z.enum(['positive', 'neutral', 'negative']),
followUps: z.array(z.string()),
}),
metadataKeyPath: false, // don't persist into memory metadata — the hook owns storage
onExtracted: async ({ current, threadId }) => {
await sessionRecords.upsert({ sessionId: threadId, record: current })
},
})
export async function onSessionEnd(messages: MastraDBMessage[]) {
const { summary, extracted, extractionFailures } = await summarizeConversation({
model: 'openai/gpt-5-mini',
messages,
instructions: 'Summarize this support session for the account manager.',
extract: [sessionSummary],
})
if (extractionFailures?.length) {
console.warn('Some extractors failed', extractionFailures)
}
return { summary, extracted }
}