AI SDK
如果你已经在直接使用 Vercel AI SDK,并希望在不切换到完整 Mastra Agent API 的情况下添加 processors 或 memory 等 Mastra 能力,withMastra() 可以为任意 AI SDK 模型封装这些功能。当你希望保留现有 AI SDK 代码,同时添加输入/输出处理、对话持久化或内容过滤时,这会很有用。
提示
如果你想将 Mastra 与 AI SDK UI(例如 useChat())配合使用,请参阅 AI SDK UI 指南。
安装安装的直接链接
安装 @mastra/ai-sdk,即可开始使用 withMastra() 函数。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/ai-sdk@latest
pnpm add @mastra/ai-sdk@latest
yarn add @mastra/ai-sdk@latest
bun add @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 配合使用