
























@@ -1816,6 +1816,78 @@ describe("openai transport stream", () => {
18161816expect(params.stream_options).toMatchObject({ include_usage: true });
18171817});
181818181819+it("maps qwen-chat-template thinking compat to vLLM chat template kwargs", () => {
1820+const baseModel = {
1821+id: "Qwen/Qwen3-8B",
1822+name: "Qwen3 8B",
1823+api: "openai-completions",
1824+provider: "vllm",
1825+baseUrl: "http://127.0.0.1:8000/v1",
1826+reasoning: true,
1827+input: ["text"],
1828+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1829+contextWindow: 32768,
1830+maxTokens: 8192,
1831+compat: { thinkingFormat: "qwen-chat-template" },
1832+} as unknown as Model<"openai-completions">;
1833+const context = {
1834+systemPrompt: "system",
1835+messages: [],
1836+tools: [],
1837+} as never;
1838+1839+const disabled = buildOpenAICompletionsParams(baseModel, context, {
1840+reasoning: "none",
1841+} as never) as {
1842+chat_template_kwargs?: { enable_thinking?: unknown; preserve_thinking?: unknown };
1843+};
1844+const enabled = buildOpenAICompletionsParams(baseModel, context, {
1845+reasoning: "medium",
1846+} as never) as {
1847+chat_template_kwargs?: { enable_thinking?: unknown; preserve_thinking?: unknown };
1848+};
1849+1850+expect(disabled.chat_template_kwargs).toEqual({
1851+enable_thinking: false,
1852+preserve_thinking: true,
1853+});
1854+expect(disabled).not.toHaveProperty("reasoning_effort");
1855+expect(enabled.chat_template_kwargs).toEqual({
1856+enable_thinking: true,
1857+preserve_thinking: true,
1858+});
1859+expect(enabled).not.toHaveProperty("reasoning_effort");
1860+});
1861+1862+it("maps qwen thinking compat to top-level enable_thinking", () => {
1863+const params = buildOpenAICompletionsParams(
1864+{
1865+id: "qwen3.6-plus",
1866+name: "Qwen 3.6 Plus",
1867+api: "openai-completions",
1868+provider: "qwen-custom",
1869+baseUrl: "https://example.com/v1",
1870+reasoning: true,
1871+input: ["text"],
1872+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1873+contextWindow: 32768,
1874+maxTokens: 8192,
1875+compat: { thinkingFormat: "qwen" },
1876+} as unknown as Model<"openai-completions">,
1877+{
1878+systemPrompt: "system",
1879+messages: [],
1880+tools: [],
1881+} as never,
1882+{
1883+reasoning: "none",
1884+} as never,
1885+) as { enable_thinking?: unknown; reasoning_effort?: unknown };
1886+1887+expect(params.enable_thinking).toBe(false);
1888+expect(params).not.toHaveProperty("reasoning_effort");
1889+});
1890+18191891it("enables streaming usage compat for generic providers on native DashScope endpoints", () => {
18201892const params = buildOpenAICompletionsParams(
18211893{
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。