Files
diegosouzapw--omniroute/tests/unit/thinking-budget-groq-3258.test.ts
2026-07-13 13:39:12 +08:00

60 lines
2.7 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const { applyThinkingBudget, setThinkingBudgetConfig, ThinkingMode, DEFAULT_THINKING_CONFIG } =
await import("../../open-sse/services/thinkingBudget.ts");
// Regression coverage for #3258 (regression of #764): Claude Code → Groq failed with
// `reasoning_effort` HTTP 400 because non-reasoning Groq models (llama-3.3-70b-versatile,
// llama-4-scout) were treated as reasoning-capable, so reasoning_effort / output_config.effort
// / thinking survived and Groq rejected them. Reasoning models (gpt-oss) must keep the field.
test("#3258 groq/llama-3.3-70b-versatile strips reasoning_effort", () => {
setThinkingBudgetConfig({ mode: ThinkingMode.PASSTHROUGH });
const out = applyThinkingBudget({
model: "groq/llama-3.3-70b-versatile",
messages: [{ role: "user", content: "hi" }],
reasoning_effort: "medium",
}) as Record<string, unknown>;
assert.equal(out.reasoning_effort, undefined, "reasoning_effort must be stripped for groq llama");
setThinkingBudgetConfig(DEFAULT_THINKING_CONFIG);
});
test("#3258 groq/llama-3.3-70b-versatile strips output_config.effort and thinking", () => {
setThinkingBudgetConfig({ mode: ThinkingMode.PASSTHROUGH });
const out = applyThinkingBudget({
model: "groq/llama-3.3-70b-versatile",
messages: [{ role: "user", content: "hi" }],
output_config: { effort: "high" },
thinking: { type: "enabled", budget_tokens: 10240 },
}) as Record<string, { effort?: unknown } | undefined>;
assert.equal(out.thinking, undefined, "thinking must be stripped");
assert.ok(
!out.output_config || out.output_config.effort === undefined,
"output_config.effort must be stripped (else claude→openai re-injects reasoning_effort)"
);
setThinkingBudgetConfig(DEFAULT_THINKING_CONFIG);
});
test("#3258 groq/meta-llama/llama-4-scout strips reasoning_effort", () => {
setThinkingBudgetConfig({ mode: ThinkingMode.PASSTHROUGH });
const out = applyThinkingBudget({
model: "groq/meta-llama/llama-4-scout-17b-16e-instruct",
messages: [{ role: "user", content: "hi" }],
reasoning_effort: "low",
}) as Record<string, unknown>;
assert.equal(out.reasoning_effort, undefined);
setThinkingBudgetConfig(DEFAULT_THINKING_CONFIG);
});
test("#3258 groq/openai/gpt-oss-120b KEEPS reasoning_effort (reasoning model — no regression)", () => {
setThinkingBudgetConfig({ mode: ThinkingMode.PASSTHROUGH });
const out = applyThinkingBudget({
model: "groq/openai/gpt-oss-120b",
messages: [{ role: "user", content: "hi" }],
reasoning_effort: "high",
}) as Record<string, unknown>;
assert.equal(out.reasoning_effort, "high", "gpt-oss is a reasoning model — must keep the field");
setThinkingBudgetConfig(DEFAULT_THINKING_CONFIG);
});