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);
}
}