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
- 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?',
})
配合記憶體使用配合記憶體使用 的直接連結
記憶體會在呼叫 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