> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # 在 React + Vite 项目中集成 Mastra 本指南将介绍如何使用 Mastra 构建一个可调用 Tool 的 AI Agent,然后直接从 Mastra 的独立服务器调用该 Agent,将其连接到 React。 你将使用 [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) 和 [AI Elements](https://ai-sdk.dev/elements) 创建美观的交互式聊天体验。 ## 开始之前 - 你需要受支持的[模型 Provider](https://mastra.zisheng.pro/models)所提供的 API 密钥。如果没有偏好,请使用 [OpenAI](https://mastra.zisheng.pro/models/providers/openai)。 - 安装 Node.js `v22.13.0` 或更高版本 ## 创建新的 React + Vite 应用(可选) 如果已有使用 Tailwind 的 React + Vite 应用,请跳到下一步。 ### 搭建项目 运行以下命令以[创建新的 React + Vite 应用](https://vite.dev/guide/#scaffolding-your-first-vite-project): **npm**: ```bash npm create vite@latest mastra-react -- --template react-ts ``` **pnpm**: ```bash pnpm create vite mastra-react --template react-ts ``` **Yarn**: ```bash yarn create vite mastra-react --template react-ts ``` **Bun**: ```bash bunx create-vite mastra-react --template react-ts ``` 这会创建名为 `mastra-react` 的项目,你也可以将其替换为任意名称。 进入项目目录: ```bash cd mastra-react ``` ### Tailwind 接下来安装 Tailwind: **npm**: ```bash npm install tailwindcss @tailwindcss/vite ``` **pnpm**: ```bash pnpm add tailwindcss @tailwindcss/vite ``` **Yarn**: ```bash yarn add tailwindcss @tailwindcss/vite ``` **Bun**: ```bash bun add tailwindcss @tailwindcss/vite ``` 配置 Vite 插件: ```typescript import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import path from 'path' import tailwindcss from '@tailwindcss/vite' export default defineConfig({ plugins: [react(), tailwindcss()], resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, }) ``` 将 `src/index.css` 的全部内容替换为以下代码: ```css @import 'tailwindcss'; ``` 将以下 `compilerOptions` 添加到 `tsconfig.json`: ```jsonc { // ... "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"], }, }, } ``` 编辑 `tsconfig.app.json` 以解析路径: ```jsonc { "compilerOptions": { // ... "baseUrl": ".", "paths": { "@/*": ["./src/*"], }, // ... }, } ``` ## 初始化 Mastra 运行 [`mastra init`](https://mastra.zisheng.pro/reference/cli/mastra)。出现提示时,选择 Provider(例如 OpenAI)并输入密钥: **npm**: ```bash npx mastra@latest init ``` **pnpm**: ```bash pnpm dlx mastra@latest init ``` **Yarn**: ```bash yarn dlx mastra@latest init ``` **Bun**: ```bash bun x mastra@latest init ``` 这会创建一个 `src/mastra` 文件夹,其中包含示例天气 Agent 和以下文件: - `index.ts` - Mastra 配置,包括 memory - `tools/weather-tool.ts` - 获取指定位置天气的 Tool - `agents/weather-agent.ts`- 使用该 Tool 的天气 Agent 及其提示词 接下来,你会从聊天 UI 调用 `weather-agent.ts`。 ## 安装 AI SDK UI 和 AI Elements 安装 AI SDK UI 和 Mastra adapter: **npm**: ```bash npm install @mastra/ai-sdk@latest @ai-sdk/react ai ``` **pnpm**: ```bash pnpm add @mastra/ai-sdk@latest @ai-sdk/react ai ``` **Yarn**: ```bash yarn add @mastra/ai-sdk@latest @ai-sdk/react ai ``` **Bun**: ```bash bun add @mastra/ai-sdk@latest @ai-sdk/react ai ``` 接下来初始化 AI Elements。出现提示时请选择默认选项: **npm**: ```bash npx ai-elements@latest ``` **pnpm**: ```bash pnpm dlx ai-elements@latest ``` **Yarn**: ```bash yarn dlx ai-elements@latest ``` **Bun**: ```bash bun x ai-elements@latest ``` 这会将完整的 AI Elements UI 组件库下载到 `@/components/ai-elements` 文件夹。 ## 创建聊天路由 打开 `src/mastra/index.ts`,在配置中添加 [⁠chatRoute()](https://mastra.zisheng.pro/reference/ai-sdk/chat-route)。这会创建一个 React 前端可调用的 API 路由,用于返回兼容 AI SDK 的聊天响应;下一步会将它与 ⁠useChat() 配合使用。 ```ts import { Mastra } from '@mastra/core/mastra' // Existing imports... import { chatRoute } from '@mastra/ai-sdk' export const mastra = new Mastra({ // Existing config... server: { apiRoutes: [ chatRoute({ path: '/chat/:agentId', }), ], }, }) ``` ## 添加聊天 UI 替换 `src/App.tsx` 文件以创建聊天界面: ```tsx import * as React from 'react' import { DefaultChatTransport, type ToolUIPart } from 'ai' import { useChat } from '@ai-sdk/react' import { PromptInput, PromptInputBody, PromptInputTextarea, } from '@/components/ai-elements/prompt-input' import { Conversation, ConversationContent, ConversationScrollButton, } from '@/components/ai-elements/conversation' import { Message, MessageContent, MessageResponse } from '@/components/ai-elements/message' import { Tool, ToolHeader, ToolContent, ToolInput, ToolOutput } from '@/components/ai-elements/tool' export default function App() { const [input, setInput] = React.useState('') const { messages, sendMessage, status } = useChat({ transport: new DefaultChatTransport({ api: 'http://localhost:4111/chat/weather-agent', }), }) const handleSubmit = async () => { if (!input.trim()) return sendMessage({ text: input }) setInput('') } return (
{messages.map(message => (
{message.parts?.map((part, i) => { if (part.type === 'text') { return ( {part.text} ) } if (part.type?.startsWith('tool-')) { return ( ) } return null })}
))}
setInput(e.target.value)} className="md:leading-10" value={input} placeholder="Ask about the weather..." disabled={status !== 'ready'} />
) } ``` 此组件将 [`useChat()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) 连接到 `chat/weather-agent` 端点,把提示词发送到该端点,并分块流式返回响应。 它使用 [``](https://ai-sdk.dev/elements/components/message#messageresponse-) 组件渲染响应文本,并使用 [``](https://ai-sdk.dev/elements/components/tool) 组件显示所有 Tool 调用。 ## 测试 Agent 要通过聊天界面测试 Agent,请同时运行 Mastra 服务器和 Vite 开发服务器。 1. 启动 Mastra 开发服务器: **npm**: ```bash npx mastra dev ``` **pnpm**: ```bash pnpm dlx mastra dev ``` **Yarn**: ```bash yarn dlx mastra dev ``` **Bun**: ```bash bun x mastra dev ``` 2. 在另一个终端窗口中启动 Vite 开发服务器: **npm**: ```bash npm run dev ``` **pnpm**: ```bash pnpm run dev ``` **Yarn**: ```bash yarn dev ``` **Bun**: ```bash bun run dev ``` 3. 打开应用: 4. 尝试询问天气。如果 API 密钥配置正确,你会收到响应 ## 后续步骤 恭喜你使用 React 构建了 Mastra Agent!🎉 接下来,你可以使用自己的 Tool 和逻辑扩展项目: - 进一步了解 [Agent](https://mastra.zisheng.pro/docs/agents/overview) - 为 Agent 添加自己的 [Tool](https://mastra.zisheng.pro/docs/agents/using-tools) - 为 Agent 添加类似人类的 [memory](https://mastra.zisheng.pro/docs/memory/overview) 准备就绪后,可进一步了解 Mastra 与 AI SDK UI 和 React 的集成方式,以及如何将 Agent 部署到任意位置: - 将 Mastra 与 [AI SDK UI](https://mastra.zisheng.pro/guides/build-your-ui/ai-sdk-ui) 集成 - 将 Agent [部署到任意位置](https://mastra.zisheng.pro/docs/deployment/overview)