> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # 將 Mastra 部署至 Vercel 使用 `@mastra/deployer-vercel` 將 Mastra 伺服器部署為 Vercel 上的無伺服器函式。Deployer 會封裝程式碼,並產生符合 Vercel [Build Output API](https://vercel.com/docs/build-output-api/v3) 的 `.vercel/output` 目錄,不需要額外設定即可部署。 > **資訊:** 本指南說明如何部署 [Mastra 伺服器](https://mastra.zisheng.pro/zh-TW/docs/server/mastra-server)。若你使用[伺服器轉接器](https://mastra.zisheng.pro/zh-TW/docs/server/server-adapters)或 [Web 框架](https://mastra.zisheng.pro/zh-TW/docs/deployment/web-framework),請依該框架平常的方式部署。 ## 開始之前 你需要一個 [Mastra 應用程式](https://mastra.zisheng.pro/zh-TW/guides/getting-started/quickstart)和一個 [Vercel](https://vercel.com/) 帳號。 > **警告:** Vercel Functions 使用暫時性檔案系統,因此設定的任何儲存空間(包括可觀測性儲存空間)都必須託管於外部。若你使用的 [LibSQLStore](https://mastra.zisheng.pro/zh-TW/reference/storage/libsql) 採用檔案 URL,請改用遠端託管的資料庫。 ## 安裝 將 `@mastra/deployer-vercel` 套件加入專案: **npm**: ```bash npm install @mastra/deployer-vercel@latest ``` **pnpm**: ```bash pnpm add @mastra/deployer-vercel@latest ``` **Yarn**: ```bash yarn add @mastra/deployer-vercel@latest ``` **Bun**: ```bash bun add @mastra/deployer-vercel@latest ``` 匯入 [`VercelDeployer`](https://mastra.zisheng.pro/zh-TW/reference/deployer/vercel),並在 Mastra 設定中將其設為 Deployer: ```typescript import { Mastra } from '@mastra/core' import { VercelDeployer } from '@mastra/deployer-vercel' export const mastra = new Mastra({ deployer: new VercelDeployer(), }) ``` ## 部署 1. 將專案推送至遠端 Git Provider(例如 GitHub),並將儲存庫連接至 Vercel。 Vercel 預設會執行 `npm run build`,進而觸發 `mastra build`。若沒有建置指令碼,請在 `package.json` 中加入 `"build": "mastra build"`。 > **備註:** 請記得設定執行應用程式所需的環境變數(例如[模型 Provider](https://mastra.zisheng.pro/zh-TW/models/providers) 的 API 金鑰)。 2. 準備就緒後,按一下 **Deploy**,等待第一次部署完成。 3. 前往 `https://.vercel.app/api/agents` 驗證部署;頁面應傳回 Agent 的 JSON 清單。 由於 Mastra 伺服器會在每個端點前加上 `/api`,因此提出要求時必須將其加入 URL。 4. 現在可以透過 HTTP 呼叫 Mastra 端點。 > **警告:** 將端點公開前,請先設定[驗證](https://mastra.zisheng.pro/zh-TW/docs/server/auth)。 ## Studio 啟用 `studio` 選項,即可將 [Studio](https://mastra.zisheng.pro/zh-TW/docs/studio/overview) 與 API 一起部署。Studio 會部署為由 Vercel Edge CDN 提供的靜態資源,因此不會耗用函式叫用次數。 ```typescript import { Mastra } from '@mastra/core' import { VercelDeployer } from '@mastra/deployer-vercel' export const mastra = new Mastra({ deployer: new VercelDeployer({ studio: true, }), }) ``` 部署後,可從根 URL(`https://.vercel.app/`)使用 Studio,而 API 仍位於 `/api/*`。Studio 會自動連線至同源的 API,因此不需要額外的環境變數。 Studio 會從 CDN 提供自己的頁面,其他所有路徑則會前往伺服器,因此透過 [`registerApiRoute()`](https://mastra.zisheng.pro/zh-TW/docs/server/custom-api-routes) 加入的路由仍可從各自的路徑存取。請避免為自訂路由使用 Studio 已占用的路徑(例如 `/agents` 或 `/workflows`),因為 Studio 會優先處理這些路徑。 > **警告:** Studio 連接至 Mastra 伺服器後,便能完整存取 Agent、Workflow 和 Tool。請務必在正式環境中妥善保護 Studio(例如置於驗證或 VPN 之後),以防止未經授權的存取。 ## 選用覆寫設定 Vercel Deployer 支援會寫入 Vercel Output API 函式設定的選項。可用的 `maxDuration`、`memory` 和 `regions` 等選項,請參閱 [`VercelDeployer` 參考資料](https://mastra.zisheng.pro/zh-TW/reference/deployer/vercel)。 ## 可觀測性 無伺服器函式可能在傳回回應後立即終止。任何待處理的非同步工作(例如傳送遙測資料)都可能在完成前遭到終止。等候 `flush()` 完成,可確保所有 Trace 都在函式結束前送出。 ```typescript import type { VercelRequest, VercelResponse } from '@vercel/node' import { mastra } from '../src/mastra' export default async function handler(req: VercelRequest, res: VercelResponse) { const { message } = req.body const agent = mastra.getAgent('myAgent') const result = await agent.generate([{ role: 'user', content: message }]) await mastra.observability.flush() return res.json(result) } ``` > **警告:** Vercel Deployer 不包含 `flush` 呼叫。若需要此功能,必須自行包裝處理常式,在傳回回應前加入相關邏輯。或者,也可部署至[虛擬機器](https://mastra.zisheng.pro/zh-TW/guides/deployment/digital-ocean)等長時間執行的伺服器,以避開這個問題。 ## 相關內容 - [VercelDeployer 參考資料](https://mastra.zisheng.pro/zh-TW/reference/deployer/vercel) - [部署概觀](https://mastra.zisheng.pro/zh-TW/docs/deployment/overview) - [伺服器轉接器](https://mastra.zisheng.pro/zh-TW/docs/server/server-adapters) - [Web 框架整合](https://mastra.zisheng.pro/zh-TW/docs/deployment/web-framework)