namespace AIStudio.Provider.Reasoning.Dialects; /// /// The thinking token budget and chat template kwargs of vLLM. /// /// /// What vLLM accepts depends on the model family it was pointed at and on which reasoning parser /// the operator started it with, so both the budget and the template arguments are read. /// public sealed class VllmReasoningDialect : IReasoningDialect { /// public ReasoningDialect Dialect => ReasoningDialect.VLLM; /// public ReasoningConfigurationState Detect(IDictionary parameters) { var states = new List(); if (ReasoningParameters.TryGet(parameters, "thinking_token_budget", out var thinkingTokenBudget)) states.Add(ReasoningParameters.BudgetOf(thinkingTokenBudget)); if (ReasoningParameters.TryGet(parameters, "chat_template_kwargs", out var chatTemplateKwargs) && chatTemplateKwargs is IDictionary chatTemplateKwargsObject) { states.Add(QwenThinkingDialect.In(chatTemplateKwargsObject)); if (ReasoningParameters.TryGet(chatTemplateKwargsObject, "thinking", out var thinking)) states.Add(ReasoningParameters.LevelOf(thinking)); } return ReasoningParameters.Merge(states); } }