Aller au contenu principal

AI SDK

Si vous utilisez déjà directement le Vercel AI SDK et souhaitez ajouter des fonctionnalités Mastra telles que les processors ou la mémoire, sans adopter l’API complète des agents Mastra, withMastra() vous permet d’encapsuler n’importe quel modèle AI SDK avec ces fonctionnalités. Cette approche est utile si vous souhaitez conserver votre code AI SDK existant tout en ajoutant le traitement des entrées et sorties, la persistance des conversations ou le filtrage de contenu.

astuce

Si vous souhaitez utiliser Mastra avec AI SDK UI (par exemple useChat()), consultez le guide AI SDK UI.

Installation
Lien direct vers Installation

Installez @mastra/ai-sdk pour commencer à utiliser la fonction withMastra().

npm install @mastra/ai-sdk@latest

Exemples
Lien direct vers Exemples

Avec des processors
Lien direct vers Avec des processors

Les processors permettent de transformer les messages avant leur envoi au modèle (processInput) et après la réception des réponses (processOutputResult). Cet exemple crée un processor de journalisation qui enregistre le nombre de messages à chaque étape, puis encapsule un modèle OpenAI avec celui-ci.

src/example.ts
import { openai } from '@ai-sdk/openai'
import { generateText } from 'ai'
import { withMastra } from '@mastra/ai-sdk'
import type { Processor } from '@mastra/core/processors'

const loggingProcessor: Processor<'logger'> = {
id: 'logger',
async processInput({ messages }) {
console.log('Input:', messages.length, 'messages')
return messages
},
async processOutputResult({ messages }) {
console.log('Output:', messages.length, 'messages')
return messages
},
}

const model = withMastra(openai('gpt-5.4'), {
inputProcessors: [loggingProcessor],
outputProcessors: [loggingProcessor],
})

const { text } = await generateText({
model,
prompt: 'What is 2 + 2?',
})

Avec la mémoire
Lien direct vers Avec la mémoire

La mémoire charge automatiquement les messages précédents depuis le stockage avant l’appel au LLM, puis enregistre les nouveaux messages. Cet exemple configure un backend de stockage libSQL pour conserver l’historique de conversation et charge les 10 derniers messages comme contexte.

src/memory-example.ts
import { openai } from '@ai-sdk/openai'
import { generateText } from 'ai'
import { withMastra } from '@mastra/ai-sdk'
import { LibSQLStore } from '@mastra/libsql'

const storage = new LibSQLStore({
id: 'my-app',
url: 'file:./data.db',
})
await storage.init()

const memoryStorage = await storage.getStore('memory')

const model = withMastra(openai('gpt-5.4'), {
memory: {
storage: memoryStorage!,
threadId: 'user-thread-123',
resourceId: 'user-123',
lastMessages: 10,
},
})

const { text } = await generateText({
model,
prompt: 'What did we talk about earlier?',
})

Avec des processors et la mémoire
Lien direct vers Avec des processors et la mémoire

Vous pouvez combiner les processors et la mémoire. Les processors d’entrée s’exécutent après le chargement des messages historiques par la mémoire, et les processors de sortie avant l’enregistrement de la réponse par la mémoire.

src/combined-example.ts
import { openai } from '@ai-sdk/openai'
import { generateText } from 'ai'
import { withMastra } from '@mastra/ai-sdk'
import { LibSQLStore } from '@mastra/libsql'

const storage = new LibSQLStore({ id: 'my-app', url: 'file:./data.db' })
await storage.init()

const memoryStorage = await storage.getStore('memory')

const model = withMastra(openai('gpt-5.4'), {
inputProcessors: [myGuardProcessor],
outputProcessors: [myLoggingProcessor],
memory: {
storage: memoryStorage!,
threadId: 'thread-123',
resourceId: 'user-123',
lastMessages: 10,
},
})

const { text } = await generateText({
model,
prompt: 'Hello!',
})
  • withMastra() : Référence de l’API withMastra()
  • Processors : Découvrez les processors d’entrée et de sortie
  • Mémoire : Présentation du système de mémoire de Mastra
  • AI SDK UI : Utiliser les hooks AI SDK UI avec les agents, Workflows et réseaux Mastra