> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # AI SDK 如果你已經直接使用 [Vercel AI SDK](https://sdk.vercel.ai),並希望加入 [processors](https://mastra.zisheng.pro/zh-HK/docs/agents/processors) 或[記憶體](https://mastra.zisheng.pro/zh-HK/docs/memory/memory-processors)等 Mastra 功能,而毋須轉用完整的 Mastra Agent API,[`withMastra()`](https://mastra.zisheng.pro/zh-HK/reference/ai-sdk/with-mastra) 可讓你用這些功能封裝任何 AI SDK 模型。當你想保留現有的 AI SDK 程式碼,同時加入輸入/輸出處理、對話持久化或內容篩選時,這個方法十分實用。 > **提示:** 如要同時使用 Mastra 及 AI SDK UI(例如 `useChat()`),請參閱 [AI SDK UI 指南](https://mastra.zisheng.pro/zh-HK/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 ``` ## 範例 ### 配合 Processors 使用 Processors 可讓你在訊息傳送至模型前(`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?', }) ``` ### 配合記憶體使用 記憶體會在呼叫 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?', }) ``` ### 配合 Processors 及記憶體使用 你可以同時使用 processors 及記憶體。輸入 processors 會在記憶體載入歷史訊息後執行,而輸出 processors 則會在記憶體儲存回應前執行。 ```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-HK/reference/ai-sdk/with-mastra):`withMastra()` 的 API 參考 - [Processors](https://mastra.zisheng.pro/zh-HK/docs/agents/processors):了解輸入及輸出 processors - [記憶體](https://mastra.zisheng.pro/zh-HK/docs/memory/overview):Mastra 記憶體系統概覽 - [AI SDK UI](https://mastra.zisheng.pro/zh-HK/guides/build-your-ui/ai-sdk-ui):配合 Mastra agents、workflows 及網絡使用 AI SDK UI hooks