> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Memory.recall() La méthode `Memory.recall()` récupère les messages d'un thread précis et prend en charge la pagination, les options de filtrage et la recherche sémantique. ## Exemple d'utilisation ```typescript const { messages } = await memory.recall({ threadId: 'thread-123', perPage: 20, }) ``` ## Paramètres **threadId** (`string`): Identifiant unique du thread depuis lequel récupérer les messages **resourceId** (`string`): Identifiant facultatif de la ressource propriétaire du thread. Lorsqu'il est fourni, valide la propriété du thread **vectorSearchString** (`string`): Chaîne de recherche permettant de trouver des messages sémantiquement similaires. Nécessite l'activation du rappel sémantique dans threadConfig. **perPage** (`number | false`): Nombre de messages à récupérer par page. Définissez cette valeur sur false pour récupérer tous les messages sans pagination. Si elle n'est pas fournie, utilise par défaut threadConfig.lastMessages. **page** (`number`): Numéro de page indexé à partir de zéro pour la pagination. Utilisé avec perPage pour récupérer les messages par lots. **include** (`{ id: string; threadId?: string; withPreviousMessages?: number; withNextMessages?: number }[]`): Tableau des identifiants de messages précis à inclure avec des messages de contexte facultatifs. Chaque élément possède un id (obligatoire), un threadId facultatif (utilise par défaut le threadId principal), withPreviousMessages (nombre de messages précédents, 2 par défaut pour la recherche vectorielle, sinon 0) et withNextMessages (nombre de messages suivants, 2 par défaut pour la recherche vectorielle, sinon 0). **filter** (`{ dateRange?: { start?: Date; end?: Date; startExclusive?: boolean; endExclusive?: boolean }; metadata?: Record }`): Options de filtrage pour la récupération des messages. dateRange filtre les messages selon leur date de création. metadata filtre les métadonnées superficielles des messages selon des paires clé-valeur scalaires exactes avec une sémantique AND. Les valeurs des métadonnées peuvent être des chaînes, des nombres finis, des booléens ou null. **orderBy** (`{ field: 'createdAt'; direction: 'ASC' | 'DESC' }`): Ordre de tri des messages récupérés. Par défaut, la date de création est triée par ordre décroissant. **threadConfig** (`MemoryConfig`): Options de configuration de la récupération des messages et de la recherche sémantique **threadConfig.lastMessages** (`number | false`): Nombre de messages les plus récents à récupérer. Définissez cette valeur sur false pour désactiver la fonctionnalité. Lorsque perPage n'est pas explicitement fourni, cette valeur est utilisée par défaut. **threadConfig.semanticRecall** (`boolean | { topK: number; messageRange: number | { before: number; after: number }; scope?: 'thread' | 'resource' }`): Active la recherche sémantique dans l'historique des messages. Peut être un booléen ou un objet contenant des options de configuration. Lorsque cette fonctionnalité est activée, le stockage vectoriel et le modèle d'embedding doivent être configurés. **threadConfig.workingMemory** (`WorkingMemory`): Configuration de la fonctionnalité de mémoire de travail. Peut être { enabled: boolean; template?: string; schema?: ZodObject\ | JSONSchema7; scope?: 'thread' | 'resource' } ou { enabled: boolean } pour la désactiver. **threadConfig.threads** (`{ generateTitle?: boolean | { model: DynamicArgument; instructions?: DynamicArgument } }`): Paramètres associés à la création des threads de mémoire. generateTitle contrôle la génération automatique du titre du thread à partir de la transcription de la conversation. Peut être un booléen ou un objet contenant un modèle et des instructions personnalisés. ## Filtrage des métadonnées Utilisez `filter.metadata` pour rechercher des métadonnées scalaires superficielles stockées dans les messages : ```typescript const { messages } = await memory.recall({ threadId: 'thread-123', filter: { metadata: { category: 'billing', escalated: true, priority: 2, archivedAt: null, }, }, }) ``` Toutes les entrées de métadonnées sont combinées avec une sémantique AND. Un message doit correspondre à chaque clé et à chaque valeur avec une égalité stricte des types. `null` correspond aux métadonnées explicitement définies sur `null`. Il ne correspond pas à une clé absente. Les filtres de métadonnées prennent uniquement en charge les valeurs scalaires superficielles : `string`, `number` fini, `boolean` et `null`. Les objets imbriqués, les tableaux, `NaN` et les valeurs infinies ne sont pas pris en charge. Les clés de métadonnées doivent commencer par une lettre ou un trait de soulignement, et contenir uniquement des caractères alphanumériques ou des traits de soulignement. Elles sont limitées à 128 caractères. Les clés de prototype réservées telles que `__proto__`, `constructor` et `prototype` ne sont pas autorisées. Les performances dépendent du backend de stockage. Les filtres de métadonnées arbitraires peuvent nécessiter l'analyse des messages candidats ; limitez donc la requête au moyen de `threadId`, `resourceId` ou `dateRange` lorsque cela est possible. ## Valeur renvoyée **messages** (`MastraDBMessage[]`): Tableau des messages récupérés au format de la base de données ## Exemple d'utilisation avancée ```typescript import { mastra } from './mastra' const agent = mastra.getAgent('agent') const memory = await agent.getMemory() // Retrieve messages with pagination const { messages } = await memory!.recall({ threadId: 'thread-123', perPage: 50, vectorSearchString: 'What messages are there?', include: [ { id: 'msg-123', }, { id: 'msg-456', withPreviousMessages: 3, withNextMessages: 1, }, ], threadConfig: { semanticRecall: true, }, }) console.log(messages) // MastraDBMessage[] // Fetch all messages without pagination const allMessages = await memory!.recall({ threadId: 'thread-123', perPage: false, // Fetch all }) // Convert to AI SDK format if needed import { toAISdkV5Messages } from '@mastra/ai-sdk/ui' const uiMessages = toAISdkV5Messages(messages) ``` ### Voir aussi - [Référence de la classe Memory](https://mastra.zisheng.pro/fr/reference/memory/memory-class) - [Bien démarrer avec Memory](https://mastra.zisheng.pro/fr/docs/memory/overview) - [Rappel sémantique](https://mastra.zisheng.pro/fr/docs/memory/semantic-recall) - [createThread](https://mastra.zisheng.pro/fr/reference/memory/createThread)