Vercel AI SDK 接入 全部模型。
OminiGate 在 https://api.ominigate.ai/v1 暴露 OpenAI 兼容接口,因此 @ai-sdk/openai 中的 createOpenAI 只需一行代码就能切换。streamText、useChat、generateObject 和工具调用都可直接对接 OminiGate 的完整模型目录。
团队为什么把 Vercel AI SDK 应用部署到 OminiGate
你已经在用的 AI SDK 原语,背后由一个统一、可预测的 API 网关支撑。
createOpenAI 即插即用
在 @ai-sdk/openai 的 createOpenAI 上把 baseURL 设为 https://api.ominigate.ai/v1,已有的 streamText、generateText 和 generateObject 调用无需改动——只需把 model slug 切换到 OminiGate 的命名规范。
完整支持流式与工具调用
streamText().toDataStreamResponse()、useChat、tool(...) 以及 maxSteps 多步 Agent 全部透明转发。OpenAI 协议在所有支持的模型上保持一致。
一把 key,一份余额
一把 sk-omg- key 同时驱动对话、嵌入、图像、视频模型,并由同一份余额支付。无需在 AI SDK 应用中维护多个供应商 key。
兼容 Edge Runtime
OminiGate 是标准 HTTPS API,可在 Edge Route Handler 和 Edge Function 中直接使用。设置 export const runtime = "edge" 后,streamText 处理函数即可全球部署,代码无需改动。
真实可运行的 Vercel AI SDK 示例
原样复制以下代码,替换为自己的 sk-omg- key,即可直接运行。
1. 在 Route Handler 中使用 streamText
最短路径:用 createOpenAI 配好 OminiGate baseURL,然后从 Next.js Route Handler 返回 result.toDataStreamResponse()。可直接配合客户端的 useChat 使用。
// app/api/chat/route.ts
import { createOpenAI } from "@ai-sdk/openai";
import { streamText } from "ai";
const ominigate = createOpenAI({
baseURL: "https://api.ominigate.ai/v1",
apiKey: process.env.OMINIGATE_API_KEY,
});
export const maxDuration = 30;
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: ominigate("openai/gpt-5"),
system: "You are a helpful assistant.",
messages,
});
return result.toDataStreamResponse();
}
2. 在 App Router 中使用 useChat
从 @ai-sdk/react(AI SDK 4.x 的导入路径)引入 useChat,并指向 /api/chat 路由。流式渲染、消息状态和表单处理都已内建。
// app/chat/page.tsx
"use client";
import { useChat } from "@ai-sdk/react";
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit } = useChat({
api: "/api/chat",
});
return (
<div className="mx-auto flex max-w-md flex-col gap-4 py-12">
{messages.map((m) => (
<div key={m.id}>
<strong>{m.role === "user" ? "You" : "AI"}: </strong>
{m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input
value={input}
onChange={handleInputChange}
placeholder="Say something..."
/>
</form>
</div>
);
}
3. 用 generateObject + zod 实现结构化输出
用 zod schema 从任意对话模型中提取强类型对象。OminiGate 透明转发 JSON 模式请求,因此同一份代码可跨多个供应商运行。
import { createOpenAI } from "@ai-sdk/openai";
import { generateObject } from "ai";
import { z } from "zod";
const ominigate = createOpenAI({
baseURL: "https://api.ominigate.ai/v1",
apiKey: process.env.OMINIGATE_API_KEY,
});
const { object } = await generateObject({
model: ominigate("openai/gpt-5"),
schema: z.object({
title: z.string(),
summary: z.string(),
tags: z.array(z.string()),
}),
prompt: "Summarise the OminiGate value proposition for a TypeScript developer.",
});
console.log(object);
// { title: "...", summary: "...", tags: ["..."] }
4. 多步 Agent 与工具调用
用 tool() 助手定义工具,配合 maxSteps 实现多轮执行,让模型自动调用你的函数。任何支持 OpenAI 风格工具调用的模型都可使用。
import { createOpenAI } from "@ai-sdk/openai";
import { generateText, tool } from "ai";
import { z } from "zod";
const ominigate = createOpenAI({
baseURL: "https://api.ominigate.ai/v1",
apiKey: process.env.OMINIGATE_API_KEY,
});
const { text } = await generateText({
model: ominigate("anthropic/claude-sonnet-4"),
tools: {
weather: tool({
description: "Get the current weather for a city.",
parameters: z.object({
city: z.string().describe("The city to look up."),
}),
execute: async ({ city }) => {
// Replace with a real weather call in production.
return { city, tempF: 72, conditions: "sunny" };
},
}),
},
maxSteps: 5,
prompt: "What is the weather in San Francisco today?",
});
console.log(text);
团队基于此构建什么
几种典型的 Vercel AI SDK 模式,统一 API 网关让它们更省事。
Next.js 流式聊天应用
在 Route Handler 中使用 streamText,搭配客户端的 useChat。只需切换一个 slug 就能更换底层模型——openai/gpt-5、anthropic/claude-sonnet-4、google/gemini-2.5-pro——客户端代码无需任何改动。
Edge 部署的 AI 接口
在 Vercel Edge Function 上运行 streamText 处理函数,添加 export const runtime = "edge" 即可。OminiGate 的 HTTP API 基于 fetch,冷启动控制在 100 毫秒以内,全球路由保持低延迟。
结构化数据抽取
用 generateObject 配合 zod schema,把非结构化输入转换为强类型对象——发票解析、分类、实体抽取。可按能力需求切换模型,schema 无需改动。
带工具的多步 Agent
用 tool(...) 和 maxSteps 构建可浏览、查询 API 或执行业务逻辑的 Agent。一把 sk-omg- key 同时为对话模型、嵌入模型以及 Agent 调用的图像或视频工具鉴权。
迁移已有的 AI SDK 项目
替换 provider 工厂,已有的 streamText、generateObject 和 useChat 代码就开始通过 OminiGate 运行。
从 OpenAI 直连迁移
把 openai import 替换为 createOpenAI(baseURL, apiKey),并将 model slug 加上 OminiGate 使用的供应商命名空间前缀(例如 openai/gpt-5)。
- import { openai } from "@ai-sdk/openai";
-
- const result = streamText({
- model: openai("gpt-4o"),
- prompt,
- });
+ import { createOpenAI } from "@ai-sdk/openai";
+
+ const ominigate = createOpenAI({
+ baseURL: "https://api.ominigate.ai/v1",
+ apiKey: process.env.OMINIGATE_API_KEY,
+ });
+
+ const result = streamText({
+ model: ominigate("openai/gpt-5"),
+ prompt,
+ });
从 OpenRouter 迁移
替换 baseURL 和 API key。Model slug 仍然沿用 OpenRouter 的 provider/model 规范,大部分应用无需改动。
- const openrouter = createOpenAI({
- baseURL: "https://openrouter.ai/api/v1",
- apiKey: process.env.OPENROUTER_API_KEY,
- });
-
- const result = streamText({
- model: openrouter("openai/gpt-4o"),
- prompt,
- });
+ const ominigate = createOpenAI({
+ baseURL: "https://api.ominigate.ai/v1",
+ apiKey: process.env.OMINIGATE_API_KEY,
+ });
+
+ const result = streamText({
+ model: ominigate("openai/gpt-5"),
+ prompt,
+ });
常见问题
如何把 Vercel AI SDK 指向 OminiGate?
从 @ai-sdk/openai 引入 createOpenAI,传入 baseURL: "https://api.ominigate.ai/v1" 和 sk-omg- API key,然后在原本调用 openai(...) 的地方使用返回的工厂即可。已有的 streamText、generateText 和 generateObject 调用全部继续可用。
toDataStreamResponse 流式返回支持吗?
支持。streamText(...).toDataStreamResponse() 按文档原样工作。OminiGate 透明转发 OpenAI 流式协议,因此响应可直接被客户端的 useChat 消费,无需任何额外适配层。
工具调用和 generateObject 兼容吗?
兼容。tool() 助手、maxSteps 多步执行和带 zod schema 的 generateObject 对所有支持 OpenAI 工具或 JSON 模式的 OminiGate 模型都直接可用,包括 OpenAI、Anthropic 和 Google 对话系列。
OminiGate 兼容 Edge Runtime 吗?
兼容。OminiGate 是基于 fetch 的 HTTPS API,可在 Vercel Edge Function 与 Edge Route Handler 中运行。在处理函数中加上 export const runtime = "edge",其余代码保持不变。
如何安全地存放 API key?
把 sk-omg- key 放进 process.env.OMINIGATE_API_KEY,且只在 Server Component、Server Action 或 Route Handler 中读取,绝不放进客户端组件。createOpenAI 是服务端工厂,AI SDK 自然遵循这一边界。
如何查看 token 用量和费用?
每个请求都会显示在 OminiGate Dashboard 的用量页中,包含 model slug、输入/输出 token 数和费用。也可以读取 streamText / generateText 返回值上的 result.usage,把每次请求的 token 计数接入自有的分析系统。
错误和重试如何处理?
错误返回遵循 OpenAI 的错误结构,因此 AI SDK 自带的错误处理与 experimental_telemetry 重试选项无需修改即可使用。401 表示 key 无效,429 表示触发限流——按标准退避策略处理即可。
如何在 OminiGate 模型之间切换?
Model ID 遵循 provider/model 格式——openai/gpt-5、anthropic/claude-sonnet-4、google/gemini-2.5-pro 等。把 slug 作为唯一参数传入 ominigate(...) 工厂,AI SDK 的其他代码保持不变。
把下一个 AI SDK 应用部署到 OminiGate
在 Dashboard 中创建一把 key,把 createOpenAI 指向 https://api.ominigate.ai/v1,已有的 streamText、useChat 和 generateObject 代码立即可在整个模型目录上运行。