跳至主要內容

AI SDK

如果你已直接使用 Vercel AI SDK,並想加入 processormemory 等 Mastra 功能,但不想改用完整的 Mastra Agent API,可透過 withMastra() 為任何 AI SDK 模型包裝這些功能。當你想保留現有的 AI SDK 程式碼,同時加入輸入/輸出處理、對話持久化或內容篩選時,這項功能十分實用。

提示

若要搭配 AI SDK UI(例如 useChat())使用 Mastra,請參閱 AI SDK UI 指南

安裝
「安裝」的直接連結

安裝 @mastra/ai-sdk,即可開始使用 withMastra() 函式。

npm install @mastra/ai-sdk@latest

範例
「範例」的直接連結

搭配 processor
「搭配 processor」的直接連結

Processor 可讓你在訊息傳送至模型前(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?',
})

搭配 processor 與 memory
「搭配 processor 與 memory」的直接連結

你可以組合使用 processor 與 memory。輸入 processor 會在 memory 載入歷史訊息後執行,而輸出 processor 會在 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 參考
  • Processor:瞭解輸入與輸出 processor
  • Memory:Mastra memory 系統概覽
  • AI SDK UI:搭配 Mastra Agent、Workflow 與 network 使用 AI SDK UI hook