Vercel AI SDK + Ertas
使用 Vercel AI SDK 建構 AI 功能——這是 TypeScript 優先的 SDK,提供跨 94 家供應商的統一介面、串流 UI、結構化輸出、工具呼叫,並完整支援微調本地模型。
Overview
Vercel AI SDK 是建構 AI 應用程式時主導性的 TypeScript SDK,截至 2026 年 3 月支援來自 94 家供應商的 3,300 個以上模型。其核心價值主張是供應商無關的人因設計:相同的 `generateText`、`streamText`、`generateObject` 與 `streamObject` 呼叫可跨 OpenAI、Anthropic、Google、Mistral、Hugging Face、本地 Ollama 模型以及任何你設定的自訂 provider 運作。這使得在不變更應用程式碼的情況下,於模型之間切換以做成本最佳化、A/B 測試或備援模式變得輕而易舉。
除了統一的 provider 介面之外,AI SDK 還內附在正式上線環境中至關重要的一流模式基本元件:適用於 React、Vue 與 Svelte 的串流 UI 元件;透過 Zod 進行的結構化輸出驗證;具並行執行能力的內建工具呼叫;以及透過 Vercel Workflow DevKit 實現的可長時運行工作流程模式。此 SDK 是 Mastra(正式上線等級代理框架)的基礎,並廣泛直接用於較單純的 chat 與 completion 使用情境。對於 TypeScript 團隊而言,它實際上已是 AI 功能的預設基礎設施層。
How Ertas Integrates
Ertas 訓練的模型透過官方 OpenAI 相容 provider 與 Vercel AI SDK 整合。在 Ertas Studio 微調模型並部署至 OpenAI 相容端點(Ollama、vLLM 或 Ertas Cloud)後,你可以使用 `createOpenAI` 建立指向你端點 base URL 的自訂 provider。從這時起,Vercel AI SDK 的所有功能——串流、結構化輸出、工具呼叫、多模態輸入、透過 Mastra 的代理迴圈——都會透明地與你的微調模型協同運作。
這種組合在 TypeScript 原生的 AI 產品中表現出色。Web 應用程式、Next.js 應用、edge 函式以及 Node.js 服務可以直接使用 Ertas 訓練的模型,不必橋接到 Python——消除跨語言 AI 架構中常見的痛點。對於部署在 Vercel 上的應用,AI SDK 的 edge 執行環境支援,搭配 Ertas Cloud 的區域部署選項,可實現低延遲的全球推論。對於自託管的應用程式,相同的程式碼路徑可在你自有基礎設施上的 Ollama 或 vLLM 端點運作,完全不需要應用層級的變更。
Getting Started
- 1
於 Ertas Studio 微調你的模型
在你的資料上訓練特定領域的模型。微調後的模型會擷取領域詞彙、模式與工具使用慣例,可供你所有 AI 功能使用。
- 2
部署至 OpenAI 相容端點
匯出為 GGUF 並透過 Ollama、vLLM 或 Ertas Cloud 提供服務。AI SDK 可與任何提供標準 /v1/chat/completions API 的端點協同運作。
- 3
安裝 Vercel AI SDK
安裝 ai(核心 SDK)與 @ai-sdk/openai(OpenAI 相容 provider)。同一次安裝即可支援所有標準 AI SDK 功能。
- 4
為你的 Ertas 端點建立自訂 provider
使用 createOpenAI 並傳入你端點的 base URL。產生的 provider 可與 generateText、streamText、generateObject 以及工具呼叫 API 協同運作。
- 5
建構串流 UI、代理或結構化輸出
使用 AI SDK 的 React 元件實現串流 chat、Zod 驗證的結構化輸出,或並行工具呼叫代理——全部由你的 Ertas 訓練模型驅動。
import { createOpenAI } from "@ai-sdk/openai";
import { generateObject, streamText } from "ai";
import { z } from "zod";
// Create a provider pointed at your Ertas-trained model
const ertas = createOpenAI({
baseURL: "http://localhost:11434/v1",
apiKey: "not-needed",
});
// Streaming chat
const stream = streamText({
model: ertas("ertas-support-7b"),
messages: [{ role: "user", content: "How do I cancel my subscription?" }],
});
for await (const chunk of stream.textStream) {
process.stdout.write(chunk);
}
// Structured output with Zod validation
const ticket = await generateObject({
model: ertas("ertas-support-7b"),
schema: z.object({
category: z.enum(["billing", "technical", "account"]),
priority: z.enum(["low", "medium", "high"]),
summary: z.string(),
suggestedAction: z.string(),
}),
prompt: "Classify this support email: [email body here]",
});
console.log(ticket.object); // Type-safe, validatedBenefits
- 統一的 TypeScript 介面——同一份程式碼可跨 94 家供應商 3,300 個以上模型運作
- 適用於 React、Vue、Svelte 與 SolidJS 的一流串流 UI 基本元件
- 透過 Zod schema 進行結構化輸出——具型別安全的代理輸出,無需手動解析
- 全面具強型別的內建並行工具呼叫
- Mastra 代理框架與 Vercel Workflow DevKit 的基礎
- 支援 edge 執行環境,可實現低延遲的全球推論部署模式
Related Resources
Fine-Tuning
GGUF
Inference
LoRA
Getting Started with Ertas: Fine-Tune and Deploy Custom AI Models
Fine-Tune AI Models Without Writing Code
Running AI Models Locally: The Complete Guide to Local LLM Inference
Letta
Mastra
Ollama
OpenRouter
vLLM
Ertas for Customer Support
Ertas for Data Extraction
Ertas for AI Automation Agencies
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.