microsoft/semantic-kernel · error · NotSupportedException
The provided response modalities '{modalityString}' is not s
Error message
The provided response modalities '{modalityString}' is not supported. What it means
Thrown inside GetResponseModalities (ParseResponseModalitiesEnumerable) when executionSettings.Modalities is an IEnumerable<string> and one element cannot be parsed into the ChatResponseModalities flags enum (case-insensitive Enum.TryParse fails). Each unrecognized modality string triggers this before the rest are processed.
Source
Thrown at dotnet/src/Connectors/Connectors.AzureOpenAI/Core/AzureClientCore.ChatCompletion.cs:157
/// <summary>
/// Gets the response modalities from the execution settings.
/// </summary>
/// <param name="executionSettings">The execution settings.</param>
/// <returns>The response modalities as a <see cref="ChatResponseModalities"/> flags enum.</returns>
private static ChatResponseModalities GetResponseModalities(OpenAIPromptExecutionSettings executionSettings)
{
static ChatResponseModalities ParseResponseModalitiesEnumerable(IEnumerable<string> responseModalitiesStrings)
{
ChatResponseModalities result = ChatResponseModalities.Default;
foreach (var modalityString in responseModalitiesStrings)
{
if (Enum.TryParse<ChatResponseModalities>(modalityString, true, out var parsedModality))
{
result |= parsedModality;
}
else
{
throw new NotSupportedException($"The provided response modalities '{modalityString}' is not supported.");
}
}
return result;
}
if (executionSettings.Modalities is null)
{
return ChatResponseModalities.Default;
}
if (executionSettings.Modalities is ChatResponseModalities responseModalities)
{
return responseModalities;
}
if (executionSettings.Modalities is IEnumerable<string> responseModalitiesStrings)
{View on GitHub (pinned to c028a0c7dc)
Solutions
- Use only valid ChatResponseModalities names: 'Text', 'Audio', 'Image' (and 'Default'); verify the enum members for your package version.
- Validate each modality string against the enum before assigning Modalities.
- Load modalities from config via a strongly typed list and reject unknown values early.
Example fix
// before
settings.Modalities = new List<string> { "Text", "Video" };
// throws: The provided response modalities 'Video' is not supported.
// after
settings.Modalities = new List<string> { "Text", "Audio" }; Defensive patterns
Strategy: validation
Validate before calling
static readonly HashSet<string> s_modalities = Enum.GetNames<ChatResponseModalities>().ToHashSet(StringComparer.OrdinalIgnoreCase); bool ValidateModalities(IEnumerable<string> mods) => mods.All(m => s_modalities.Contains(m));
Type guard
bool AreValidModalities(IEnumerable<string> mods)
=> mods.All(m => Enum.TryParse<ChatResponseModalities>(m, true, out _)); Try / catch
try { /* kernel call with Modalities = new[] { "Text", "Audio" } */ }
catch (NotSupportedException ex) when (ex.Message.Contains("response modalities"))
{ throw new ConfigurationException($"Invalid response modalities. Valid names: {string.Join(", ", Enum.GetNames<ChatResponseModalities>())}.", ex); } Prevention
- Restrict modality strings to ChatResponseModalities enum member names (Text, Audio, Image, Default).
- Validate loaded modalities against the enum before assigning Modalities.
- Document the accepted modality names next to config schema.
When it happens
Trigger: Setting Modalities to a string collection containing a value that is not a member of Azure.AI.OpenAI.Chat.ChatResponseModalities — e.g. new[] { "Text", "Video" } (Video is not a valid member), or a typo like new[] { "txt" }, or new[] { "text", "audoi" }.
Common situations: Loading modalities from config with a misspelled or unsupported modality name. Assuming 'video', 'image-generation', or other non-enum names are accepted. Copying modality strings from a different provider's docs.
Related errors
- The provided response modalities '{responseModalitiesString}
- The provided response modalities JSON array may only contain
- The provided response modalities '{executionSettings.Modalit
- Failed to parse the provided audio options from JSON. Ensure
- Failed to parse the provided audio options from string. Ensu
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/bbbf55b43e845df6.
Report an issue: GitHub.