ResponseCache
ResponseCache est un Processor d'entrée qui met en cache les réponses du LLM à la limite requête/réponse au sein de la boucle agentique. Il se raccorde à processLLMRequest pour rechercher une entrée dans le cache et court-circuite l'exécution en cas de correspondance. Il utilise processLLMResponse pour enregistrer la réponse terminée.
La clé de cache est dérivée du LanguageModelV2Prompt résolu que Mastra s'apprête à envoyer au modèle (c'est-à-dire après le chargement de la mémoire et la transformation du prompt par les Processors d'entrée précédents). Deux utilisateurs dont les contextes de mémoire diffèrent produisent donc des clés de cache différentes. Chaque étape d'une boucle agentique de Tools est mise en cache indépendamment.
Il n'existe aucune option de mise en cache des réponses au niveau de l'Agent. Enregistrez explicitement ResponseCache dans inputProcessors. Les remplacements propres à chaque appel transitent par RequestContext au moyen de ResponseCache.context() et de ResponseCache.applyContext().
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { Agent } from '@mastra/core/agent'
import { InMemoryServerCache } from '@mastra/core/cache'
import { ResponseCache } from '@mastra/core/processors'
const cache = new InMemoryServerCache()
const agent = new Agent({
id: 'search-agent',
name: 'Search Agent',
instructions: 'You answer questions concisely.',
model: 'openai/gpt-5',
inputProcessors: [new ResponseCache({ cache, ttl: 600 })],
})
// First call hits the LLM and writes to the cache.
await agent.generate('What is the capital of France?')
// Second identical call replays the cached response.
await agent.generate('What is the capital of France?')
// Force a fresh call but still update the cache.
await agent.generate('What is the capital of France?', {
requestContext: ResponseCache.context({ bust: true }),
})
Consultez la page Mise en cache des réponses pour découvrir les concepts, les règles de portée et les modèles de déploiement recommandés.
Paramètres du constructeurLien direct vers Paramètres du constructeur
cache:
MastraServerCache : InMemoryServerCache pour le développement local, RedisCache de @mastra/redis pour la production ou votre propre sous-classe pour un système personnalisé.ttl?:
scope?:
null désactive la portée. Lorsque cette option est omise, le Processor utilise par défaut l'identifiant de ressource résolu à partir du contexte de requête (MASTRA_RESOURCE_ID_KEY) afin d'isoler automatiquement chaque utilisateur.key?:
{ agentId, scope, model, prompt, stepNumber } et renvoie une clé. Si la fonction lève une erreur, le Processor utilise par défaut le hachage déterministe afin que l'appel bénéficie tout de même de la mise en cache.bust?:
agentId?:
'mastra-response-cache'. Définissez cette option sur l'identifiant de l'Agent propriétaire lorsque vous souhaitez limiter la portée des entrées de cache à chaque Agent.Fonctions utilitaires statiquesLien direct vers Fonctions utilitaires statiques
ResponseCache expose deux fonctions utilitaires statiques permettant de définir les remplacements propres à chaque appel dans un RequestContext. Ces fonctions préservent le caractère privé de la clé de contexte sous-jacente, qui constitue un détail d'implémentation : privilégiez-les plutôt que de lire ou d'écrire directement la clé brute.
ResponseCache.context(options)Lien direct vers responsecachecontextoptions
Construit un nouveau RequestContext préchargé avec les remplacements du cache de réponses propres à l'appel.
await agent.stream('hello', {
requestContext: ResponseCache.context({ key: 'custom', bust: true }),
})
ResponseCache.applyContext(requestContext, options)Lien direct vers responsecacheapplycontextrequestcontext-options
Fusionne les remplacements du cache de réponses propres à l'appel dans un RequestContext existant. Renvoie le même contexte afin de permettre le chaînage.
const ctx = new RequestContext()
ctx.set('caller-meta', { userId: 'u-123' })
ResponseCache.applyContext(ctx, { bust: true })
await agent.stream('hello', { requestContext: ctx })
ResponseCacheContextOptionsLien direct vers ResponseCacheContextOptions
Structure transmise à ResponseCache.context() / ResponseCache.applyContext().
key?:
scope?:
null désactive la portée.bust?:
cache, ttl et agentId ne peuvent volontairement pas être remplacés à chaque appel : ils relèvent de l'instance et ne doivent pas varier selon la requête.
ResponseCacheKeyInputsLien direct vers ResponseCacheKeyInputs
Argument transmis à une fonction key (dans le constructeur ou à chaque appel). Par défaut, tous les champs contribuent au hachage déterministe.
agentId:
scope?:
null lorsque la portée est désactivée.model:
prompt:
stepNumber:
Exports utilitairesLien direct vers Exports utilitaires
buildResponseCacheKey(inputs): hachage déterministe utilisé par défaut. Réexportez-le pour remplacer certains champs tout en conservant le reste de la structure de clé standard.DEFAULT_RESPONSE_CACHE_TTL_SECONDS: valeur par défaut dettl(300).RESPONSE_CACHE_CONTEXT_KEY: cléRequestContextdans laquelle les fonctions utilitaires statiques écrivent. Exposée pour les cas avancés (par exemple, la suppression du remplacement au milieu du pipeline). Privilégiez les fonctions utilitaires.