Skip to content

Commit d91af7f

Browse files
authored
Merge pull request #5883 from code-october/fix/model-leak
fix model leak issue
2 parents 0c3d446 + cc5e16b commit d91af7f

File tree

11 files changed

+106
-24
lines changed

11 files changed

+106
-24
lines changed

app/api/alibaba.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212

1313
const serverConfig = getServerSideConfig();
1414

@@ -89,7 +89,7 @@ async function request(req: NextRequest) {
8989

9090
// not undefined and is false
9191
if (
92-
isModelAvailableInServer(
92+
isModelNotavailableInServer(
9393
serverConfig.customModels,
9494
jsonBody?.model as string,
9595
ServiceProvider.Alibaba as string,

app/api/anthropic.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
import { prettyObject } from "@/app/utils/format";
1010
import { NextRequest, NextResponse } from "next/server";
1111
import { auth } from "./auth";
12-
import { isModelAvailableInServer } from "@/app/utils/model";
12+
import { isModelNotavailableInServer } from "@/app/utils/model";
1313
import { cloudflareAIGatewayUrl } from "@/app/utils/cloudflare";
1414

1515
const ALLOWD_PATH = new Set([Anthropic.ChatPath, Anthropic.ChatPath1]);
@@ -122,7 +122,7 @@ async function request(req: NextRequest) {
122122

123123
// not undefined and is false
124124
if (
125-
isModelAvailableInServer(
125+
isModelNotavailableInServer(
126126
serverConfig.customModels,
127127
jsonBody?.model as string,
128128
ServiceProvider.Anthropic as string,

app/api/baidu.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212
import { getAccessToken } from "@/app/utils/baidu";
1313

1414
const serverConfig = getServerSideConfig();
@@ -104,7 +104,7 @@ async function request(req: NextRequest) {
104104

105105
// not undefined and is false
106106
if (
107-
isModelAvailableInServer(
107+
isModelNotavailableInServer(
108108
serverConfig.customModels,
109109
jsonBody?.model as string,
110110
ServiceProvider.Baidu as string,

app/api/bytedance.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212

1313
const serverConfig = getServerSideConfig();
1414

@@ -88,7 +88,7 @@ async function request(req: NextRequest) {
8888

8989
// not undefined and is false
9090
if (
91-
isModelAvailableInServer(
91+
isModelNotavailableInServer(
9292
serverConfig.customModels,
9393
jsonBody?.model as string,
9494
ServiceProvider.ByteDance as string,

app/api/common.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { NextRequest, NextResponse } from "next/server";
22
import { getServerSideConfig } from "../config/server";
33
import { OPENAI_BASE_URL, ServiceProvider } from "../constant";
44
import { cloudflareAIGatewayUrl } from "../utils/cloudflare";
5-
import { getModelProvider, isModelAvailableInServer } from "../utils/model";
5+
import { getModelProvider, isModelNotavailableInServer } from "../utils/model";
66

77
const serverConfig = getServerSideConfig();
88

@@ -118,15 +118,14 @@ export async function requestOpenai(req: NextRequest) {
118118

119119
// not undefined and is false
120120
if (
121-
isModelAvailableInServer(
121+
isModelNotavailableInServer(
122122
serverConfig.customModels,
123123
jsonBody?.model as string,
124-
ServiceProvider.OpenAI as string,
125-
) ||
126-
isModelAvailableInServer(
127-
serverConfig.customModels,
128-
jsonBody?.model as string,
129-
ServiceProvider.Azure as string,
124+
[
125+
ServiceProvider.OpenAI,
126+
ServiceProvider.Azure,
127+
jsonBody?.model as string, // support provider-unspecified model
128+
],
130129
)
131130
) {
132131
return NextResponse.json(

app/api/glm.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212

1313
const serverConfig = getServerSideConfig();
1414

@@ -89,7 +89,7 @@ async function request(req: NextRequest) {
8989

9090
// not undefined and is false
9191
if (
92-
isModelAvailableInServer(
92+
isModelNotavailableInServer(
9393
serverConfig.customModels,
9494
jsonBody?.model as string,
9595
ServiceProvider.ChatGLM as string,

app/api/iflytek.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212
// iflytek
1313

1414
const serverConfig = getServerSideConfig();
@@ -89,7 +89,7 @@ async function request(req: NextRequest) {
8989

9090
// not undefined and is false
9191
if (
92-
isModelAvailableInServer(
92+
isModelNotavailableInServer(
9393
serverConfig.customModels,
9494
jsonBody?.model as string,
9595
ServiceProvider.Iflytek as string,

app/api/moonshot.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212

1313
const serverConfig = getServerSideConfig();
1414

@@ -88,7 +88,7 @@ async function request(req: NextRequest) {
8888

8989
// not undefined and is false
9090
if (
91-
isModelAvailableInServer(
91+
isModelNotavailableInServer(
9292
serverConfig.customModels,
9393
jsonBody?.model as string,
9494
ServiceProvider.Moonshot as string,

app/api/xai.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import { prettyObject } from "@/app/utils/format";
99
import { NextRequest, NextResponse } from "next/server";
1010
import { auth } from "@/app/api/auth";
11-
import { isModelAvailableInServer } from "@/app/utils/model";
11+
import { isModelNotavailableInServer } from "@/app/utils/model";
1212

1313
const serverConfig = getServerSideConfig();
1414

@@ -88,7 +88,7 @@ async function request(req: NextRequest) {
8888

8989
// not undefined and is false
9090
if (
91-
isModelAvailableInServer(
91+
isModelNotavailableInServer(
9292
serverConfig.customModels,
9393
jsonBody?.model as string,
9494
ServiceProvider.XAI as string,

app/utils/model.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,27 @@ export function isModelAvailableInServer(
202202
const modelTable = collectModelTable(DEFAULT_MODELS, customModels);
203203
return modelTable[fullName]?.available === false;
204204
}
205+
206+
/**
207+
* Checks if a model is not available on any of the specified providers in the server.
208+
*
209+
* @param {string} customModels - A string of custom models, comma-separated.
210+
* @param {string} modelName - The name of the model to check.
211+
* @param {string|string[]} providerNames - A string or array of provider names to check against.
212+
*
213+
* @returns {boolean} True if the model is not available on any of the specified providers, false otherwise.
214+
*/
215+
export function isModelNotavailableInServer(
216+
customModels: string,
217+
modelName: string,
218+
providerNames: string | string[],
219+
) {
220+
const modelTable = collectModelTable(DEFAULT_MODELS, customModels);
221+
const providerNamesArray = Array.isArray(providerNames) ? providerNames : [providerNames];
222+
for (const providerName of providerNamesArray){
223+
const fullName = `${modelName}@${providerName.toLowerCase()}`;
224+
if (modelTable[fullName]?.available === true)
225+
return false;
226+
}
227+
return true;
228+
}

0 commit comments

Comments
 (0)