跳到主要内容

AI SDK

如果你已经在直接使用 Vercel AI SDK,并希望在不切换到完整 Mastra Agent API 的情况下添加 processorsmemory 等 Mastra 能力,withMastra() 可以为任意 AI SDK 模型封装这些功能。当你希望保留现有 AI SDK 代码,同时添加输入/输出处理、对话持久化或内容过滤时,这会很有用。

提示

如果你想将 Mastra 与 AI SDK UI(例如 useChat())配合使用,请参阅 AI SDK UI 指南

安装
安装的直接链接

安装 @mastra/ai-sdk,即可开始使用 withMastra() 函数。

npm install @mastra/ai-sdk@latest

示例
示例的直接链接

与 Processors 配合使用
与 Processors 配合使用的直接链接

Processors 可在消息发送给模型之前(processInput)以及收到响应之后(processOutputResult)转换消息。此示例创建一个日志 processor,在每个阶段记录消息数量,然后用它封装 OpenAI 模型。

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?',
})

与 Memory 配合使用
与 Memory 配合使用的直接链接

Memory 会在调用 LLM 前自动从存储中加载之前的消息,并在调用后保存新消息。此示例配置 libSQL 存储后端以持久化对话历史,并加载最近 10 条消息作为上下文。

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?',
})

同时使用 Processors 和 Memory
同时使用 Processors 和 Memory的直接链接

你可以组合使用 processors 和 memory。输入 processors 会在 memory 加载历史消息后运行,输出 processors 则在 memory 保存响应前运行。

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()withMastra() 的 API 参考
  • Processors:了解输入和输出 processors
  • Memory:Mastra memory 系统概览
  • AI SDK UI:将 AI SDK UI hooks 与 Mastra Agent、Workflow 和 networks 配合使用