microsoft/semantic-kernel · error · ArgumentException

Invalid execution settings, cannot convert to…

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.

Solutions

  1. Pass OllamaPromptExecutionSettings directly if you know you are using Ollama.
  2. Ensure the execution settings object is a valid, non-null instance with serializable properties.
  3. 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

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


AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13). Data as JSON: /api/errors/b270f44f008ec417. Report an issue: GitHub.

Appendix: 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>? Stop

View on GitHub (pinned to c028a0c7dc)