Fixing some things left over

This commit is contained in:
Peer Hogeterp committed 2026-09-10 17:02:25 +02:00
1 parent bbbcdddc91
commit b28f2bcf6c
7 files changed
+147 -18

No files matched your search

@@ -146,21 +146,55 @@ public static partial class ProviderExtensions
/// </remarks>
private static ReasoningConfigurationState GetOpenAICompatibleReasoningState(IDictionary<string, object> parameters)
{
var reasoningState = ReasoningConfigurationState.NOT_CONFIGURED;
var states = new List<ReasoningConfigurationState>();
if (TryGetParameter(parameters, "reasoning", out var reasoning))
{
reasoningState = reasoning switch
if (reasoning is IDictionary<string, object> reasoningObject)
{
IDictionary<string, object> reasoningObject when TryGetParameter(reasoningObject, "effort", out var effort) => GetLevelState(effort),
IDictionary<string, object> reasoningObject when TryGetParameter(reasoningObject, "summary", out var summary) => GetLevelState(summary),
IDictionary<string, object> => ReasoningConfigurationState.NOT_CONFIGURED,
_ => GetLevelState(reasoning),
};
if (TryGetParameter(reasoningObject, "effort", out var effort))
states.Add(GetLevelState(effort));
if (TryGetParameter(reasoningObject, "enabled", out var enabled))
states.Add(GetLevelState(enabled));
if (TryGetParameter(reasoningObject, "max_tokens", out var maxTokens))
states.Add(GetBudgetState(maxTokens));
if (TryGetParameter(reasoningObject, "summary", out var summary))
states.Add(GetReasoningSummaryState(summary));
if (TryGetParameter(reasoningObject, "generate_summary", out var generateSummary))
states.Add(GetReasoningSummaryState(generateSummary));
}
else
states.Add(GetLevelState(reasoning));
}
return MergeReasoningStates(reasoningState, GetReasoningEffortState(parameters));
if (TryGetParameter(parameters, "include_reasoning", out var includeReasoning) &&
GetLevelState(includeReasoning) is ReasoningConfigurationState.EXPLICITLY_ENABLED)
states.Add(ReasoningConfigurationState.EXPLICITLY_ENABLED);
states.Add(GetReasoningEffortState(parameters));
return MergeReasoningStates(states);
}
/// <summary>
/// Detect summary settings that imply reasoning is enabled.
/// </summary>
/// <remarks>
/// Turning a summary off controls visibility only and does not disable the model's reasoning.
/// </remarks>
private static ReasoningConfigurationState GetReasoningSummaryState(object? value) => value switch
{
string text when text.Equals("auto", StringComparison.OrdinalIgnoreCase) ||
text.Equals("concise", StringComparison.OrdinalIgnoreCase) ||
text.Equals("detailed", StringComparison.OrdinalIgnoreCase)
=> ReasoningConfigurationState.EXPLICITLY_ENABLED,
true => ReasoningConfigurationState.EXPLICITLY_ENABLED,
_ => ReasoningConfigurationState.NOT_CONFIGURED,
};
/// <summary>
/// Detect a top-level <c>reasoning_effort</c> parameter.
/// </summary>
@@ -444,6 +478,7 @@ public static partial class ProviderExtensions
text.Equals("minimal", StringComparison.OrdinalIgnoreCase) ||
text.Equals("medium", StringComparison.OrdinalIgnoreCase) ||
text.Equals("high", StringComparison.OrdinalIgnoreCase) ||
text.Equals("xhigh", StringComparison.OrdinalIgnoreCase) ||
text.Equals("max", StringComparison.OrdinalIgnoreCase);
}
@@ -516,4 +551,4 @@ public static partial class ProviderExtensions
value = parameters[foundKey];
return true;
}
}
}