microsoft/semantic-kernel · error · ArgumentException
Invalid execution settings, cannot convert to OllamaPromptEx
Error message
Invalid execution settings, cannot convert to OllamaPromptExecutionSettings
What it means
Thrown as an ArgumentException when JsonSerializer.Deserialize<OllamaPromptExecutionSettings> returns null after serializing the incoming PromptExecutionSettings to JSON and attempting conversion. This occurs when the JSON round-trip yields a null object, which is unexpected and indicates the input settings could not be mapped to the Ollama settings type.
Source
Thrown at dotnet/src/Connectors/Connectors.Ollama/Settings/OllamaPromptExecutionSettings.cs:36
/// Gets the specialization for the Ollama execution settings.
/// </summary>
/// <param name="executionSettings">Generic prompt execution settings.</param>
/// <returns>Specialized Ollama execution settings.</returns>
public static OllamaPromptExecutionSettings FromExecutionSettings(PromptExecutionSettings? executionSettings)
{
switch (executionSettings)
{
case null:
return new();
case OllamaPromptExecutionSettings settings:
return settings;
}
var json = JsonSerializer.Serialize(executionSettings);
var ollamaExecutionSettings = JsonSerializer.Deserialize<OllamaPromptExecutionSettings>(json, JsonOptionsCache.ReadPermissive);
if (ollamaExecutionSettings is null)
{
throw new ArgumentException(
$"Invalid execution settings, cannot convert to {nameof(OllamaPromptExecutionSettings)}",
nameof(executionSettings));
}
// Restore the function choice behavior that lost internal state(list of function instances) during serialization/deserialization process.
ollamaExecutionSettings!.FunctionChoiceBehavior = executionSettings.FunctionChoiceBehavior;
return ollamaExecutionSettings;
}
/// <summary>
/// Sets the stop sequences to use. When this pattern is encountered the
/// LLM will stop generating text and return. Multiple stop patterns may
/// be set by specifying multiple separate stop parameters in a model file.
/// </summary>
[JsonPropertyName("stop")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public IList<string>? StopView on GitHub (pinned to c028a0c7dc)
Solutions
- Pass OllamaPromptExecutionSettings directly if you know you are using Ollama.
- Ensure the execution settings object is a valid, non-null instance with serializable properties.
- If passing a generic PromptExecutionSettings, verify its properties are compatible with OllamaPromptExecutionSettings schema.
Example fix
// before
var settings = new PromptExecutionSettings(); // generic
// triggers conversion path
// after
var settings = new OllamaPromptExecutionSettings
{
Temperature = 0.7,
MaxTokens = 512
}; Defensive patterns
Strategy: type-guard
Validate before calling
if (executionSettings is not null &&
executionSettings is not OllamaPromptExecutionSettings &&
executionSettings is not PromptExecutionSettings)
{
// potentially incompatible; convert explicitly
} Type guard
static bool IsCompatibleSettings(PromptExecutionSettings? s) =>
s is null or OllamaPromptExecutionSettings or PromptExecutionSettings; Prevention
- Pass OllamaPromptExecutionSettings directly when targeting Ollama.
- Avoid passing cross-connector settings objects.
- Unit-test the FromExecutionSettings conversion with your settings type.
When it happens
Trigger: Passing a PromptExecutionSettings subclass to FromExecutionSettings whose JSON representation deserializes to null for OllamaPromptExecutionSettings; passing a malformed or empty settings object.
Common situations: Cross-connector settings reuse where a settings object incompatible with Ollama is passed; a custom PromptExecutionSettings with unusual serialization behavior; null or default settings that produce empty JSON.
Related errors
- Ollama does not support function choice behavior of type 're
- Please provide valid Ollama configuration in appsettings.Dev
- Data is not available for {cityName}.
- Unable to restore channel: invalid state.
- Unable to transform output to {typeof(TOutput)}.
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/b270f44f008ec417.
Report an issue: GitHub.