Skip to content

Commit 3ef0d34

Browse files
committed
fix(opencode): restore reasoning variants for openai-compatible deepseek glm and minimax
1 parent 5eaef6b commit 3ef0d34

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

packages/opencode/src/provider/transform.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,13 @@ export function variants(model: Provider.Model): Record<string, Record<string, a
413413
id.includes("k2p5") ||
414414
id.includes("qwen") ||
415415
id.includes("big-pickle")
416-
)
417-
return {}
416+
) {
417+
if (
418+
model.api.npm !== "@ai-sdk/openai-compatible" ||
419+
(!id.includes("deepseek") && !id.includes("minimax") && !id.includes("glm"))
420+
)
421+
return {}
422+
}
418423

419424
// see: https://docs.x.ai/docs/guides/reasoning#control-how-hard-the-model-thinks
420425
if (id.includes("grok") && id.includes("grok-3-mini")) {

packages/opencode/test/provider/transform.test.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2071,7 +2071,7 @@ describe("ProviderTransform.variants", () => {
20712071
expect(result).toEqual({})
20722072
})
20732073

2074-
test("deepseek returns empty object", () => {
2074+
test("deepseek openai-compatible models return reasoning variants", () => {
20752075
const model = createMockModel({
20762076
id: "deepseek/deepseek-chat",
20772077
providerID: "deepseek",
@@ -2082,10 +2082,12 @@ describe("ProviderTransform.variants", () => {
20822082
},
20832083
})
20842084
const result = ProviderTransform.variants(model)
2085-
expect(result).toEqual({})
2085+
expect(Object.keys(result)).toEqual(["low", "medium", "high"])
2086+
expect(result.low).toEqual({ reasoningEffort: "low" })
2087+
expect(result.high).toEqual({ reasoningEffort: "high" })
20862088
})
20872089

2088-
test("minimax returns empty object", () => {
2090+
test("minimax openai-compatible models return reasoning variants", () => {
20892091
const model = createMockModel({
20902092
id: "minimax/minimax-model",
20912093
providerID: "minimax",
@@ -2096,10 +2098,12 @@ describe("ProviderTransform.variants", () => {
20962098
},
20972099
})
20982100
const result = ProviderTransform.variants(model)
2099-
expect(result).toEqual({})
2101+
expect(Object.keys(result)).toEqual(["low", "medium", "high"])
2102+
expect(result.low).toEqual({ reasoningEffort: "low" })
2103+
expect(result.high).toEqual({ reasoningEffort: "high" })
21002104
})
21012105

2102-
test("glm returns empty object", () => {
2106+
test("glm openai-compatible models return reasoning variants", () => {
21032107
const model = createMockModel({
21042108
id: "glm/glm-4",
21052109
providerID: "glm",
@@ -2110,6 +2114,22 @@ describe("ProviderTransform.variants", () => {
21102114
},
21112115
})
21122116
const result = ProviderTransform.variants(model)
2117+
expect(Object.keys(result)).toEqual(["low", "medium", "high"])
2118+
expect(result.low).toEqual({ reasoningEffort: "low" })
2119+
expect(result.high).toEqual({ reasoningEffort: "high" })
2120+
})
2121+
2122+
test("deepseek models still return empty object for non-compatible SDKs", () => {
2123+
const model = createMockModel({
2124+
id: "deepseek/deepseek-chat",
2125+
providerID: "deepseek",
2126+
api: {
2127+
id: "deepseek-chat",
2128+
url: "https://api.deepinfra.com",
2129+
npm: "@ai-sdk/deepinfra",
2130+
},
2131+
})
2132+
const result = ProviderTransform.variants(model)
21132133
expect(result).toEqual({})
21142134
})
21152135

0 commit comments

Comments
 (0)