跳至主要內容

AI SDK

如果你已經直接使用 Vercel AI SDK,並希望加入 processors記憶體等 Mastra 功能,而毋須轉用完整的 Mastra Agent API,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?',
})

配合記憶體使用
配合記憶體使用 的直接連結

記憶體會在呼叫 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 及記憶體使用
配合 Processors 及記憶體使用 的直接連結

你可以同時使用 processors 及記憶體。輸入 processors 會在記憶體載入歷史訊息後執行,而輸出 processors 則會在記憶體儲存回應前執行。

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
  • 記憶體:Mastra 記憶體系統概覽
  • AI SDK UI:配合 Mastra agents、workflows 及網絡使用 AI SDK UI hooks