> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # 在你的 Nuxt 專案中整合 Mastra 本指南將帶你使用 Mastra 建立可呼叫 Tool 的 AI Agent,接著直接從伺服器路由匯入並呼叫 Agent,將它連接至 Nuxt。 你將使用 [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) 搭配 Vue,建立美觀且可互動的聊天體驗。 ## 開始之前 - 你需要受支援[模型 Provider](https://mastra.zisheng.pro/zh-TW/models) 的 API 金鑰。如果沒有偏好,請使用 [OpenAI](https://mastra.zisheng.pro/zh-TW/models/providers/openai)。 - 安裝 Node.js `v22.13.0` 或更新版本 ## 建立新的 Nuxt 應用程式(選用) 如果你已經有 Nuxt 應用程式,請跳到下一個步驟。 執行下列指令以[建立新的 Nuxt 應用程式](https://nuxt.com/docs/getting-started/installation): **npm**: ```bash npm create nuxt@latest mastra-nuxt -- --template minimal --packageManager npm --gitInit --modules ``` **pnpm**: ```bash pnpm create nuxt mastra-nuxt --template minimal --packageManager npm --gitInit --modules ``` **Yarn**: ```bash yarn create nuxt mastra-nuxt --template minimal --packageManager npm --gitInit --modules ``` **Bun**: ```bash bunx create-nuxt mastra-nuxt --template minimal --packageManager npm --gitInit --modules ``` 這會建立名為 `mastra-nuxt` 的專案,但你可以替換成任何想要的名稱。 ## 初始化 Mastra 進入 Nuxt 專案: ```bash cd mastra-nuxt ``` 執行 [`mastra init`](https://mastra.zisheng.pro/zh-TW/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 ``` 這會建立 `mastra` 資料夾,其中包含範例天氣 Agent 和下列檔案: - `index.ts` - Mastra 設定,包含記憶功能 - `tools/weather-tool.ts` - 擷取指定位置天氣資訊的 Tool - `agents/weather-agent.ts`- 使用該 Tool 的天氣 Agent,並包含提示詞 在接下來的步驟中,你會從 Nuxt 伺服器路由呼叫 `weather-agent.ts`。 ## 安裝 AI SDK UI 安裝 AI SDK UI 與 Mastra adapter: **npm**: ```bash npm install @mastra/ai-sdk@latest @ai-sdk/vue ai ``` **pnpm**: ```bash pnpm add @mastra/ai-sdk@latest @ai-sdk/vue ai ``` **Yarn**: ```bash yarn add @mastra/ai-sdk@latest @ai-sdk/vue ai ``` **Bun**: ```bash bun add @mastra/ai-sdk@latest @ai-sdk/vue ai ``` ## 建立聊天路由 建立 `server/api/chat.ts`: ```ts import { handleChatStream } from '@mastra/ai-sdk' import { toAISdkV5Messages } from '@mastra/ai-sdk/ui' import { createUIMessageStreamResponse } from 'ai' import { mastra } from '../../src/mastra' const THREAD_ID = 'example-user-id' const RESOURCE_ID = 'weather-chat' export default defineEventHandler(async event => { const method = event.method if (method === 'POST') { const params = await readBody(event) const stream = await handleChatStream({ mastra, agentId: 'weather-agent', params: { ...params, memory: { ...params.memory, thread: THREAD_ID, resource: RESOURCE_ID, }, }, }) return createUIMessageStreamResponse({ stream }) } if (method === 'GET') { const memory = await mastra.getAgentById('weather-agent').getMemory() let response = null try { response = await memory?.recall({ threadId: THREAD_ID, resourceId: RESOURCE_ID, }) } catch { console.log('No previous messages found.') } const uiMessages = toAISdkV5Messages(response?.messages || []) return uiMessages } }) ``` `POST` handler 會接收提示詞,並以 AI SDK 格式串流回傳 Agent 的回應;`GET` handler 則從記憶中擷取訊息記錄,讓使用者端重新載入時能還原 UI 狀態。 ## 加入聊天 UI 將 `app/app.vue` 的內容替換為下列程式碼: ```html {{ part.text }} {{ (part as ToolUIPart).type?.split('-').slice(1).join('-') }} - {{ STATE_TO_LABEL_MAP[(part as ToolUIPart).state ?? 'output-available'] }} Parameters {{ JSON.stringify((part as ToolUIPart).input, null, 2) }} {{ (part as ToolUIPart).errorText ? 'Error' : 'Result' }} {{ JSON.stringify((part as ToolUIPart).output, null, 2) }} {{ (part as ToolUIPart).errorText }} Send ``` 此元件會將 [`Chat()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) 連接至 `/api/chat` 端點,將提示詞傳送至該端點,並以分段串流方式回傳回應。 它會使用自訂訊息樣式算繪回應文字,並在可收合的 details 元素中顯示所有 Tool 呼叫。 ## 測試你的 Agent 1. 使用 `npm run dev` 執行 Nuxt 應用程式 2. 在 開啟聊天介面 3. 試著詢問天氣。如果 API 金鑰設定正確,你會收到回應 ## 後續步驟 恭喜你使用 Nuxt 建立了 Mastra Agent!🎉 接下來,你可以使用自己的 Tool 和邏輯擴充專案: - 深入了解 [Agent](https://mastra.zisheng.pro/zh-TW/docs/agents/overview) - 為 Agent 加入專屬的 [Tool](https://mastra.zisheng.pro/zh-TW/docs/agents/using-tools) - 為 Agent 加入類似人類的[記憶](https://mastra.zisheng.pro/zh-TW/docs/memory/overview) 準備好後,進一步了解 Mastra 如何與 AI SDK UI 和 Nuxt 整合,以及如何將 Agent 部署至任何地方: - 將 Mastra 與 [AI SDK UI](https://mastra.zisheng.pro/zh-TW/guides/build-your-ui/ai-sdk-ui) 整合 - 將 Agent [部署至任何地方](https://mastra.zisheng.pro/zh-TW/docs/deployment/overview)
{{ JSON.stringify((part as ToolUIPart).input, null, 2) }}
{{ JSON.stringify((part as ToolUIPart).output, null, 2) }}