> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # AI SDK 如果你已经在直接使用 [Vercel AI SDK](https://sdk.vercel.ai),并希望在不切换到完整 Mastra Agent API 的情况下添加 [processors](https://mastra.zisheng.pro/docs/agents/processors) 或 [memory](https://mastra.zisheng.pro/docs/memory/memory-processors) 等 Mastra 能力,[`withMastra()`](https://mastra.zisheng.pro/reference/ai-sdk/with-mastra) 可以为任意 AI SDK 模型封装这些功能。当你希望保留现有 AI SDK 代码,同时添加输入/输出处理、对话持久化或内容过滤时,这会很有用。 > **提示:** 如果你想将 Mastra 与 AI SDK UI(例如 `useChat()`)配合使用,请参阅 [AI SDK UI 指南](https://mastra.zisheng.pro/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?', }) ``` ### 与 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?', }) ``` ### 同时使用 Processors 和 Memory 你可以组合使用 processors 和 memory。输入 processors 会在 memory 加载历史消息后运行,输出 processors 则在 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/reference/ai-sdk/with-mastra):`withMastra()` 的 API 参考 - [Processors](https://mastra.zisheng.pro/docs/agents/processors):了解输入和输出 processors - [Memory](https://mastra.zisheng.pro/docs/memory/overview):Mastra memory 系统概览 - [AI SDK UI](https://mastra.zisheng.pro/guides/build-your-ui/ai-sdk-ui):将 AI SDK UI hooks 与 Mastra Agent、Workflow 和 networks 配合使用