8.0
热点
AI SCORE
编程提效2026-08-14 11:35
Node.js 应用添加 OpenAI 兼容模型降级方案
dev.to · AI#OpenAI#Node.js#容错
Editor brief · 编辑速览
基于官方 openai SDK 实现双模型 fallback 机制,主模型失败时自动切换备选模型,无需引入额外 SDK,附 API Key 安全实践。
单个模型可能出现不可用、触发限速或临时响应慢的情况。如果你的应用已经对接了 OpenAI 兼容 API,添加一个简单的兜底机制即可让测试更加健壮,而无需引入额外的 SDK。
本教程使用 Node.js 及官方 OpenAI JavaScript 包,先尝试第一个模型,仅当首次请求失败时才切换至第二个模型。
npm install openai
export JINZEAI_API_KEY="your_api_key_here"
$env:JINZEAI_API_KEY="your_api_key_here"
永远不要将真实的 API Key 提交到代码中。如果发现 Key 出现在公开仓库、截图或工单里,请立即轮换。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://jinzeai.cc/v1",
apiKey: process.env.JINZEAI_API_KEY,
});
const models = ["deepseek-chat", "qwen-flash"];
async function completeWithFallback(messages) {
let lastError;
for (const model of models) {
try {
const response = await client.chat.completions.create({
model,
messages,
});
return {
model,
text: response.choices[0].message.content,
};
} catch (error) {
lastError = error;
console.warn(`${model} failed: ${error.status ?? "unknown status"}`);
}
}
throw lastError;
}
const result = await completeWithFallback([
{
role: "user",
content: "Explain model fallback in one sentence.",
},
]);
console.log(`Model: ${result.model}`);
console.log(result.text);
上述最小示例在任何错误发生时都会重试,这样控制流一目了然。生产环境中的应用应该有选择性地处理。
以下情况适合兜底:
不要对认证错误进行静默重试。HTTP 401 通常意味着 Key 缺失、已失效或格式有误。此时应修复 Key,而不是把同样的无效请求发给另一个模型。
可用的 beta 模型可能会变化。使用你的 Key 调用 GET /v1/models 来确认,而非假设每个账户都能使用所有模型。
curl https://jinzeai.cc/v1/models \
-H "Authorization: Bearer $JINZEAI_API_KEY"
在公开 beta 期间尝试
JinzeAI 正在为大陆以外的用户测试 OpenAI 兼容端点。公开 beta 期间无需支付费用,可能还有限量的免费测试额度。
创建 beta 账户
阅读文档
查看完整示例
Beta 期间模型可用性和测试限制可能发生变化。关于 SDK 兼容性、延迟和故障处理的反馈尤为宝贵。