namespace AIStudio.Provider.Reasoning.Dialects; /// /// The nested "reasoning" object almost every OpenAI-compatible server accepts. /// /// /// The object may carry an effort or a summary setting, and it may be written as a plain value /// instead. An object carrying neither says nothing: somebody who wrote "reasoning": {} has not /// asked for anything yet. /// public sealed class OpenAICompatibleDialect : IReasoningDialect { /// public ReasoningDialect Dialect => ReasoningDialect.OPEN_AI_COMPATIBLE; /// public ReasoningConfigurationState Detect(IDictionary parameters) { if (!ReasoningParameters.TryGet(parameters, "reasoning", out var reasoning)) return ReasoningConfigurationState.NOT_CONFIGURED; return reasoning switch { IDictionary reasoningObject when ReasoningParameters.TryGet(reasoningObject, "effort", out var effort) => ReasoningParameters.LevelOf(effort), IDictionary reasoningObject when ReasoningParameters.TryGet(reasoningObject, "summary", out var summary) => ReasoningParameters.LevelOf(summary), IDictionary => ReasoningConfigurationState.NOT_CONFIGURED, _ => ReasoningParameters.LevelOf(reasoning), }; } }