AI SDK
如果你已直接使用 Vercel AI SDK,並想加入 processor 或 memory 等 Mastra 功能,但不想改用完整的 Mastra Agent API,可透過 withMastra() 為任何 AI SDK 模型包裝這些功能。當你想保留現有的 AI SDK 程式碼,同時加入輸入/輸出處理、對話持久化或內容篩選時,這項功能十分實用。
提示
若要搭配 AI SDK UI(例如 useChat())使用 Mastra,請參閱 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
範例「範例」的直接連結
搭配 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