본문으로 건너뛰기

AI SDK

이미 사용하고 계시다면Vercel AI SDK직접적으로 다음과 같은 Mastra 기능을 추가하고 싶습니다.프로세서또는Memory전체 Mastra Agent API로 전환하지 않고도withMastra()이러한 기능으로 모든 AI SDK Model을 래핑할 수 있습니다. 이는 기존 AI SDK 코드를 유지하면서 입력/출력 처리, 대화 지속성 또는 콘텐츠 필터링을 추가하려는 경우에 유용합니다.

AI SDK UI와 함께 Mastra를 사용하려는 경우(예: useChat()), AI SDK UI 가이드를 참조하세요.

설치
설치에 대한 직접 링크

withMastra() 함수를 사용하려면 먼저 @mastra/ai-sdk를 설치하세요.

npm install @mastra/ai-sdk@latest

예에 대한 직접 링크

프로세서 포함
프로세서 포함에 대한 직접 링크

프로세서를 사용하면 메시지가 Model로 전송되기 전(processInput)과 응답을 받은 후(processOutputResult)에 메시지를 변환할 수 있습니다. 이 예제에서는 각 단계의 메시지 수를 기록하는 로깅 프로세서를 만든 다음, 이를 OpenAI Model에 래핑합니다.

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 호출 전에 저장소에서 이전 메시지를 자동으로 로드하고 이후에 새 메시지를 저장합니다. 이 예에서는 대화 기록을 유지하고 컨텍스트에 대한 마지막 10개 메시지를 로드하도록 libSQL 스토리지 백엔드를 구성합니다.

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?',
})

프로세서 및 Memory 포함
프로세서 및 Memory 포함에 대한 직접 링크

프로세서와 Memory를 함께 결합할 수 있습니다. 입력 프로세서는 Memory가 기록 메시지를 로드한 후에 실행되고, 출력 프로세서는 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(): API 참조withMastra()
  • 프로세서: 입력 및 출력 프로세서에 대해 알아봅니다.
  • Memory: 마스트라의 Memory 시스템 개요
  • AI SDK UI: Mastra Agent, Workflow 및 네트워크와 함께 AI SDK UI 후크 사용