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