





























@@ -9941,6 +9941,19 @@ describe("buildOpenAICompletionsParams sanitizes reasoning replay fields", () =>
99419941maxTokens: 32_000,
99429942} satisfies Model<"openai-completions">;
994399439944+const gemma4Model = {
9945+id: "google/gemma-4-12b",
9946+name: "Gemma 4 12B",
9947+api: "openai-completions",
9948+provider: "vllm",
9949+baseUrl: "https://proxy.example.com/v1",
9950+reasoning: true,
9951+input: ["text"],
9952+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
9953+contextWindow: 262_144,
9954+maxTokens: 32_000,
9955+} satisfies Model<"openai-completions">;
9956+99449957const kimiCodingProxyModel = {
99459958 ...customKimiProxyModel,
99469959id: "kimi-for-coding",
@@ -10122,6 +10135,17 @@ describe("buildOpenAICompletionsParams sanitizes reasoning replay fields", () =>
1012210135expect(assistant).not.toHaveProperty("reasoning_text");
1012310136});
101241013710138+it("preserves reasoning_content replay for Gemma 4 openai-completions models", () => {
10139+const assistant = getAssistantMessage(
10140+buildReplayParams(gemma4Model, "reasoning_content"),
10141+);
10142+10143+expect(assistant.reasoning_content).toBe("Need to answer politely.");
10144+expect(assistant).not.toHaveProperty("reasoning_details");
10145+expect(assistant).not.toHaveProperty("reasoning");
10146+expect(assistant).not.toHaveProperty("reasoning_text");
10147+});
10148+1012510149it("preserves DeepSeek-style reasoning_content replay for Xiaomi MiMo", () => {
1012610150const assistant = getAssistantMessage(buildReplayParams(xiaomiModel, "reasoning_content"));
1012710151此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。