UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

80 lines (79 loc) 3.43 kB
import { h as isOpenAICompatibleThinkingEnabled, o as createPayloadPatchStreamWrapper } from "./provider-stream-shared-BIV_zuwB.js"; import { l as normalizeProviderId } from "./provider-model-shared-D-lyTLvb.js"; import { r as resolveVllmQwenThinkingFormatFromCompat } from "./thinking-policy-DE_PKbYD.js"; //#region extensions/vllm/stream.ts function isVllmProviderId(providerId) { return normalizeProviderId(providerId) === "vllm"; } function resolveVllmQwenThinkingFormat(ctx) { return resolveVllmQwenThinkingFormatFromCompat(ctx.model?.compat); } function setQwenChatTemplateThinking(payload, enabled) { const existing = payload.chat_template_kwargs; if (existing && typeof existing === "object" && !Array.isArray(existing)) { const next = { ...existing, enable_thinking: enabled }; if (!Object.hasOwn(next, "preserve_thinking")) next.preserve_thinking = true; payload.chat_template_kwargs = next; return; } payload.chat_template_kwargs = { enable_thinking: enabled, preserve_thinking: true }; } function isVllmNemotronModel(model) { return model.api === "openai-completions" && typeof model.provider === "string" && normalizeProviderId(model.provider) === "vllm" && typeof model.id === "string" && /\bnemotron-3(?:[-_](?:nano|super|ultra))?\b/i.test(model.id); } function setNemotronThinkingOffChatTemplateKwargs(payload) { const defaults = { enable_thinking: false, force_nonempty_content: true }; const existing = payload.chat_template_kwargs; payload.chat_template_kwargs = existing && typeof existing === "object" && !Array.isArray(existing) ? { ...defaults, ...existing } : defaults; } function createVllmQwenThinkingWrapper(params) { return createPayloadPatchStreamWrapper(params.baseStreamFn, ({ payload: payloadObj, options }) => { const enableThinking = isOpenAICompatibleThinkingEnabled({ thinkingLevel: params.thinkingLevel, options }); if (params.format === "chat-template") setQwenChatTemplateThinking(payloadObj, enableThinking); else payloadObj.enable_thinking = enableThinking; delete payloadObj.reasoning_effort; delete payloadObj.reasoningEffort; delete payloadObj.reasoning; }, { shouldPatch: ({ model }) => model.api === "openai-completions" && (model.reasoning ?? true) }); } function createVllmProviderThinkingWrapper(params) { return createPayloadPatchStreamWrapper(params.qwenFormat ? createVllmQwenThinkingWrapper({ baseStreamFn: params.baseStreamFn, format: params.qwenFormat, thinkingLevel: params.thinkingLevel }) : params.baseStreamFn, ({ payload: payloadObj }) => { setNemotronThinkingOffChatTemplateKwargs(payloadObj); }, { shouldPatch: ({ model }) => model.api === "openai-completions" && params.thinkingLevel === "off" && isVllmNemotronModel(model) }); } function wrapVllmProviderStream(ctx) { if (!isVllmProviderId(ctx.provider) || ctx.model && ctx.model.api !== "openai-completions") return; const qwenFormat = resolveVllmQwenThinkingFormat(ctx); const shouldHandleNemotron = ctx.thinkingLevel === "off" && isVllmNemotronModel({ api: "openai-completions", provider: ctx.provider, id: ctx.modelId }); if (!qwenFormat && !shouldHandleNemotron) return; return createVllmProviderThinkingWrapper({ baseStreamFn: ctx.streamFn, qwenFormat, thinkingLevel: ctx.thinkingLevel }); } //#endregion export { createVllmQwenThinkingWrapper as n, wrapVllmProviderStream as r, createVllmProviderThinkingWrapper as t };