fix(ai): detect DeepSeek base URLs case-insensitively (#7933)

This commit is contained in:
初心Yearth 2026-08-11 16:49:19 +08:00 • committed by GitHub
parent a4453b79bb
commit b647d18793
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 5 deletions

View file

@ -625,6 +625,7 @@ function detectOpenAICompletionsCompat(model: Model<"openai-completions">): Open
const isNvidia = provider === "nvidia" || baseUrl.includes("integrate.api.nvidia.com");
const isAntLing = provider === "ant-ling" || baseUrl.includes("api.ant-ling.com");
const isTogetherReasoningOnly = isTogether && TOGETHER_REASONING_ONLY_MODELS.has(model.id);
const isDeepSeek = provider === "deepseek" || baseUrl.toLowerCase().includes("deepseek.com");
const isNonStandard =
isNvidia ||
@ -634,7 +635,7 @@ function detectOpenAICompletionsCompat(model: Model<"openai-completions">): Open
baseUrl.includes("api.x.ai") ||
isTogether ||
baseUrl.includes("chutes.ai") ||
baseUrl.includes("deepseek.com") ||
isDeepSeek ||
isZai ||
isMoonshot ||
provider === "opencode" ||
@ -643,7 +644,6 @@ function detectOpenAICompletionsCompat(model: Model<"openai-completions">): Open
isCloudflareAiGateway ||
isAntLing;
const isDeepSeek = provider === "deepseek" || baseUrl.includes("deepseek.com");
const useMaxTokens =
baseUrl.includes("chutes.ai") ||
isDeepSeek ||

View file

@ -1457,6 +1457,7 @@ function detectCompat(model: Model<"openai-completions">): ResolvedOpenAIComplet
const isCloudflareAiGateway = provider === "cloudflare-ai-gateway" || baseUrl.includes("gateway.ai.cloudflare.com");
const isNvidia = provider === "nvidia" || baseUrl.includes("integrate.api.nvidia.com");
const isAntLing = provider === "ant-ling" || baseUrl.includes("api.ant-ling.com");
const isDeepSeek = provider === "deepseek" || baseUrl.toLowerCase().includes("deepseek.com");
const isNonStandard =
isNvidia ||
@ -1466,7 +1467,7 @@ function detectCompat(model: Model<"openai-completions">): ResolvedOpenAIComplet
baseUrl.includes("api.x.ai") ||
isTogether ||
baseUrl.includes("chutes.ai") ||
baseUrl.includes("deepseek.com") ||
isDeepSeek ||
isZai ||
isMoonshot ||
provider === "opencode" ||
@ -1475,7 +1476,6 @@ function detectCompat(model: Model<"openai-completions">): ResolvedOpenAIComplet
isCloudflareAiGateway ||
isAntLing;
const isDeepSeek = provider === "deepseek" || baseUrl.includes("deepseek.com");
const useMaxTokens =
baseUrl.includes("chutes.ai") ||
isDeepSeek ||

View file

@ -1437,11 +1437,17 @@ describe("openai-completions tool_choice", () => {
provider: "custom-deepseek",
baseUrl: "https://api.deepseek.com",
} satisfies Model<"openai-completions">;
const customUppercaseModel = {
...customModel,
id: "custom-uppercase-deepseek-model",
name: "Custom Uppercase DeepSeek Model",
baseUrl: "https://API.DeepSeek.COM",
} satisfies Model<"openai-completions">;
const nativeModels = [
getModel("deepseek", "deepseek-v4-flash")!,
getModel("deepseek", "deepseek-v4-pro")!,
] as const;
const cases = [...nativeModels, customModel] as const;
const cases = [...nativeModels, customModel, customUppercaseModel] as const;
for (const model of nativeModels) {
expect(model.compat?.maxTokensField).toBe("max_tokens");