mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-18 21:22:28 +03:00
fix(deepseek): align V4 reasoning efforts across DeepSeek and OpenCode Go (#10540)
* fix(deepseek): align V4 reasoning efforts * docs(changelog): note DeepSeek effort fix * fix(deepseek): align OpenCode V4 effort aliases * test(deepseek): align effort alias expectation * fix(deepseek): scope low effort to v4 * fix(opencode-go): route DeepSeek V4 through Responses
This commit is contained in:
@@ -78,19 +78,25 @@ describe("OpencodeExecutor", () => {
|
||||
assert.equal(model.supportsReasoning, true);
|
||||
});
|
||||
|
||||
it("exposes DeepSeek V4 Pro effort variants on opencode-go only", () => {
|
||||
it("declares V4 effort tiers on OpenCode Go base models only", () => {
|
||||
const goModels = PROVIDER_MODELS["opencode-go"] || [];
|
||||
const zenModels = PROVIDER_MODELS["opencode-zen"] || [];
|
||||
const variants = ["low", "medium", "high", "max"].map((level) => `deepseek-v4-pro-${level}`);
|
||||
for (const variant of variants) {
|
||||
const model = goModels.find((m) => m.id === variant);
|
||||
assert.ok(model, `${variant} should be in opencode-go model list`);
|
||||
assert.equal(model?.supportsReasoning, true);
|
||||
assert.equal(
|
||||
zenModels.some((m) => m.id === variant),
|
||||
false,
|
||||
`${variant} should not be exposed on opencode-zen`
|
||||
);
|
||||
const efforts = ["none", "low", "high", "max"];
|
||||
|
||||
for (const modelId of ["deepseek-v4-pro", "deepseek-v4-flash"]) {
|
||||
const base = goModels.find((model) => model.id === modelId);
|
||||
assert.deepEqual(base?.supportedThinkingEfforts, efforts);
|
||||
for (const effort of efforts) {
|
||||
const variant = `${modelId}-${effort}`;
|
||||
assert.equal(
|
||||
goModels.some((model) => model.id === variant),
|
||||
false
|
||||
);
|
||||
assert.equal(
|
||||
zenModels.some((model) => model.id === variant),
|
||||
false
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -137,6 +143,16 @@ describe("OpencodeExecutor", () => {
|
||||
assert.equal(fetchCalls[0].url, "https://opencode.ai/zen/v1/responses");
|
||||
});
|
||||
|
||||
it("routes OpenCode Go DeepSeek V4 models to the responses endpoint", async () => {
|
||||
const models = ["deepseek-v4-pro", "deepseek-v4-flash"];
|
||||
|
||||
for (const [index, model] of models.entries()) {
|
||||
const result = await goExecutor.execute(createInput(model));
|
||||
assert.equal(result.url, "https://opencode.ai/zen/go/v1/responses");
|
||||
assert.equal(fetchCalls[index].url, "https://opencode.ai/zen/go/v1/responses");
|
||||
}
|
||||
});
|
||||
|
||||
it("routes gemini streaming requests to streamGenerateContent", async () => {
|
||||
registerModel("opencode-zen", {
|
||||
id: "gemini-2.5-pro",
|
||||
@@ -544,7 +560,7 @@ describe("OpencodeExecutor", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("DeepSeek V4 Pro reasoning-effort variants", () => {
|
||||
describe("DeepSeek V4 reasoning-effort variants", () => {
|
||||
function baseBody(model) {
|
||||
return {
|
||||
model,
|
||||
@@ -554,17 +570,19 @@ describe("OpencodeExecutor", () => {
|
||||
};
|
||||
}
|
||||
|
||||
const levels = ["low", "medium", "high", "max"];
|
||||
for (const level of levels) {
|
||||
it(`maps deepseek-v4-pro-${level} to base id + reasoning_effort=${level}`, () => {
|
||||
const variant = `deepseek-v4-pro-${level}`;
|
||||
const out = goExecutor.transformRequest(variant, baseBody(variant), false, {
|
||||
apiKey: "test-key",
|
||||
const levels = ["none", "low", "high", "max"];
|
||||
for (const model of ["deepseek-v4-pro", "deepseek-v4-flash"]) {
|
||||
for (const level of levels) {
|
||||
it(`maps ${model}-${level} to base id + reasoning_effort=${level}`, () => {
|
||||
const variant = `${model}-${level}`;
|
||||
const out = goExecutor.transformRequest(variant, baseBody(variant), false, {
|
||||
apiKey: "test-key",
|
||||
});
|
||||
assert.equal(out.model, model);
|
||||
assert.equal(out.reasoning_effort, level);
|
||||
assert.ok(!String(out.model).endsWith(`-${level}`));
|
||||
});
|
||||
assert.equal(out.model, "deepseek-v4-pro");
|
||||
assert.equal(out.reasoning_effort, level);
|
||||
assert.ok(!String(out.model).endsWith(`-${level}`));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
it("preserves explicit reasoning_effort over the variant suffix", () => {
|
||||
|
||||
Reference in New Issue
Block a user