Skip to content

Commit c8edb25

Browse files
authored
fix(ai): fix mismatch between models.dev and OpenCode Go (Qwen3.5/3.6, MiniMax M2.7) (earendil-works#4110)
1 parent b9efafc commit c8edb25

2 files changed

Lines changed: 32 additions & 10 deletions

File tree

packages/ai/scripts/generate-models.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,26 @@ async function loadModelsDevData(): Promise<Model<any>[]> {
724724
baseUrl = `${variant.basePath}/v1`;
725725
}
726726

727+
// Fix known mismatches between models.dev npm data and actual
728+
// OpenCode Go endpoint behaviour. models.dev reports these models
729+
// as @ai-sdk/anthropic, but the OpenCode Go endpoints either don't
730+
// accept Anthropic SDK auth (MiniMax M2.7) or are served through
731+
// the OpenAI-compatible /v1/chat/completions path (Qwen 3.5/3.6).
732+
// Switch them to openai-completions so requests use Bearer auth
733+
// and the standard /v1/chat/completions endpoint.
734+
if (variant.provider === "opencode-go") {
735+
if (modelId === "minimax-m2.7") {
736+
api = "openai-completions";
737+
baseUrl = `${variant.basePath}/v1`;
738+
}
739+
if (modelId === "qwen3.5-plus" || modelId === "qwen3.6-plus") {
740+
api = "openai-completions";
741+
baseUrl = `${variant.basePath}/v1`;
742+
// Qwen/DashScope uses enable_thinking at the top level.
743+
compat = { ...(compat ?? {}), thinkingFormat: "qwen" };
744+
}
745+
}
746+
727747
models.push({
728748
id: modelId,
729749
name: m.name || modelId,

packages/ai/src/models.generated.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8463,9 +8463,9 @@ export const MODELS = {
84638463
"minimax-m2.7": {
84648464
id: "minimax-m2.7",
84658465
name: "MiniMax M2.7",
8466-
api: "anthropic-messages",
8466+
api: "openai-completions",
84678467
provider: "opencode-go",
8468-
baseUrl: "https://opencode.ai/zen/go",
8468+
baseUrl: "https://opencode.ai/zen/go/v1",
84698469
reasoning: true,
84708470
input: ["text"],
84718471
cost: {
@@ -8476,13 +8476,14 @@ export const MODELS = {
84768476
},
84778477
contextWindow: 204800,
84788478
maxTokens: 131072,
8479-
} satisfies Model<"anthropic-messages">,
8479+
} satisfies Model<"openai-completions">,
84808480
"qwen3.5-plus": {
84818481
id: "qwen3.5-plus",
84828482
name: "Qwen3.5 Plus",
8483-
api: "anthropic-messages",
8483+
api: "openai-completions",
84848484
provider: "opencode-go",
8485-
baseUrl: "https://opencode.ai/zen/go",
8485+
baseUrl: "https://opencode.ai/zen/go/v1",
8486+
compat: {"thinkingFormat":"qwen"},
84868487
reasoning: true,
84878488
input: ["text", "image"],
84888489
cost: {
@@ -8493,13 +8494,14 @@ export const MODELS = {
84938494
},
84948495
contextWindow: 262144,
84958496
maxTokens: 65536,
8496-
} satisfies Model<"anthropic-messages">,
8497+
} satisfies Model<"openai-completions">,
84978498
"qwen3.6-plus": {
84988499
id: "qwen3.6-plus",
84998500
name: "Qwen3.6 Plus",
8500-
api: "anthropic-messages",
8501+
api: "openai-completions",
85018502
provider: "opencode-go",
8502-
baseUrl: "https://opencode.ai/zen/go",
8503+
baseUrl: "https://opencode.ai/zen/go/v1",
8504+
compat: {"thinkingFormat":"qwen"},
85038505
reasoning: true,
85048506
input: ["text", "image"],
85058507
cost: {
@@ -8510,7 +8512,7 @@ export const MODELS = {
85108512
},
85118513
contextWindow: 262144,
85128514
maxTokens: 65536,
8513-
} satisfies Model<"anthropic-messages">,
8515+
} satisfies Model<"openai-completions">,
85148516
},
85158517
"openrouter": {
85168518
"ai21/jamba-large-1.7": {
@@ -9316,7 +9318,7 @@ export const MODELS = {
93169318
cacheRead: 0.024999999999999998,
93179319
cacheWrite: 0.08333333333333334,
93189320
},
9319-
contextWindow: 1048576,
9321+
contextWindow: 1000000,
93209322
maxTokens: 8192,
93219323
} satisfies Model<"openai-completions">,
93229324
"google/gemini-2.0-flash-lite-001": {

0 commit comments

Comments
 (0)