> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # AI SDK 如果你已直接使用 [Vercel AI SDK](https://sdk.vercel.ai),並想加入 [processor](https://mastra.zisheng.pro/zh-TW/docs/agents/processors) 或 [memory](https://mastra.zisheng.pro/zh-TW/docs/memory/memory-processors) 等 Mastra 功能,但不想改用完整的 Mastra Agent API,可透過 [`withMastra()`](https://mastra.zisheng.pro/zh-TW/reference/ai-sdk/with-mastra) 為任何 AI SDK 模型包裝這些功能。當你想保留現有的 AI SDK 程式碼,同時加入輸入/輸出處理、對話持久化或內容篩選時,這項功能十分實用。 > **提示:** 若要搭配 AI SDK UI(例如 `useChat()`)使用 Mastra,請參閱 [AI SDK UI 指南](https://mastra.zisheng.pro/zh-TW/guides/build-your-ui/ai-sdk-ui)。 ## 安裝 安裝 `@mastra/ai-sdk`,即可開始使用 `withMastra()` 函式。 **npm**: ```bash npm install @mastra/ai-sdk@latest ``` **pnpm**: ```bash pnpm add @mastra/ai-sdk@latest ``` **Yarn**: ```bash yarn add @mastra/ai-sdk@latest ``` **Bun**: ```bash bun add @mastra/ai-sdk@latest ``` ## 範例 ### 搭配 processor Processor 可讓你在訊息傳送至模型前(`processInput`)及收到回應後(`processOutputResult`)轉換訊息。此範例會建立記錄用的 processor,在各階段記錄訊息數量,再用它包裝 OpenAI 模型。 ```typescript 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 會在呼叫 LLM 前自動從儲存空間載入先前訊息,並在呼叫後儲存新訊息。此範例設定 libSQL 儲存後端來持久保存對話記錄,並載入最近 10 則訊息作為上下文。 ```typescript 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 儲存回應前執行。 ```typescript 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()`](https://mastra.zisheng.pro/zh-TW/reference/ai-sdk/with-mastra):`withMastra()` 的 API 參考 - [Processor](https://mastra.zisheng.pro/zh-TW/docs/agents/processors):瞭解輸入與輸出 processor - [Memory](https://mastra.zisheng.pro/zh-TW/docs/memory/overview):Mastra memory 系統概覽 - [AI SDK UI](https://mastra.zisheng.pro/zh-TW/guides/build-your-ui/ai-sdk-ui):搭配 Mastra Agent、Workflow 與 network 使用 AI SDK UI hook