Vercel AI SDK
透過 OpenAI 相容供應商,在 Vercel AI SDK 中使用 cheapaimodel 的模型。
AI SDK 透過 @ai-sdk/openai-compatible 供應商連接 OpenAI 相容的服務。為 cheapaimodel 建立一個供應商,再把它的模型傳給 generateText、streamText 與其他 AI SDK 函式。
| AI SDK 設定 | 值 | |
|---|---|---|
| Base URL | baseURL | https://api.cheapaimodel.ai/v1 |
| API Key | apiKey | 在控制台的 API Key 頁面建立的 Key |
| 模型 ID | cheapaimodel(modelId) | deepseek-v4-1-flash,或目錄中的任一模型 ID |
設定
npm install ai @ai-sdk/openai-compatibleimport { createOpenAICompatible } from "@ai-sdk/openai-compatible";
export const cheapaimodel = createOpenAICompatible({
name: "cheapaimodel",
baseURL: "https://api.cheapaimodel.ai/v1",
apiKey: process.env.CHEAPAIMODEL_API_KEY,
includeUsage: true, // token usage on streamed responses
});import { generateText } from "ai";
import { cheapaimodel } from "./cheapaimodel";
const { text } = await generateText({
model: cheapaimodel("deepseek-v4-1-flash"),
prompt: "Explain recursion in one sentence.",
});
console.log(text);這個供應商會把請求送往 /v1/chat/completions。在 Next.js 的 route handler 中用法相同:把 cheapaimodel("deepseek-v4-1-flash") 傳給 model。
串流
import { streamText } from "ai";
import { cheapaimodel } from "./cheapaimodel";
const result = streamText({
model: cheapaimodel("deepseek-v4-1-flash"),
prompt: "Write a haiku about rivers.",
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
console.log("\nTokens:", (await result.usage).totalTokens);常見錯誤
Unauthenticated request to AI Gateway.模型以純字串傳入,例如model: "deepseek-v4-1-flash"。AI SDK 會把純字串的模型送往 Vercel AI Gateway,而不是 cheapaimodel。請改為傳入cheapaimodel("deepseek-v4-1-flash")。Not Found或Invalid URL (POST /v1/chat/completions/chat/completions)。baseURL漏了/v1,或寫入了端點路徑。請設為https://api.cheapaimodel.ai/v1,供應商會自行加上/chat/completions。- 串流呼叫的 token 用量是
undefined。 OpenAI 相容供應商只有在設定includeUsage: true時,才會在串流中要求回傳用量。請在供應商設定中保留這一項。 - 透過
@ai-sdk/openai進行多輪對話。 它的createOpenAI也接受我們的 Base URL,但預設的openai(modelId)呼叫的是 Responses API;當你把 SDK 先前的回覆放回messages時,它會以item_referenceID 而非原文傳送這些回覆,只有伺服器保存了那些回應時才行得通。請使用上方的 OpenAI 相容供應商,或改用openai.chat(modelId)。