AI SDK
Vercel AI SDK を直接使用していて、Mastra の完全な Agent API に切り替えることなく Processor や Memory などの機能を追加したい場合は、withMastra() を使って任意の AI SDK モデルをこれらの機能でラップできます。既存の AI SDK コードを維持したまま、入出力処理、会話の永続化、コンテンツフィルタリングを追加する場合に便利です。
ヒント
Mastra を AI SDK UI(useChat() など)と組み合わせて使用する場合は、AI SDK UI ガイドを参照してください。
インストールインストールへの直接リンク
withMastra() 関数を使用するには、@mastra/ai-sdk をインストールします。
- 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 と出力 Processor について
- Memory:Mastra の Memory システムの概要
- AI SDK UI:Mastra の Agent、Workflow、Network で AI SDK UI フックを使用する方法