microsoft/semantic-kernel · error · NotSupportedException
The provided response modalities '{responseModalitiesString}
Error message
The provided response modalities '{responseModalitiesString}' is not supported. What it means
Thrown inside GetResponseModalities when executionSettings.Modalities is a single string and Enum.TryParse<ChatResponseModalities> fails (case-insensitive). The string is not a valid member of the ChatResponseModalities flags enum.
Source
Thrown at dotnet/src/Connectors/Connectors.AzureOpenAI/Core/AzureClientCore.ChatCompletion.cs:185
}
if (executionSettings.Modalities is ChatResponseModalities responseModalities)
{
return responseModalities;
}
if (executionSettings.Modalities is IEnumerable<string> responseModalitiesStrings)
{
return ParseResponseModalitiesEnumerable(responseModalitiesStrings);
}
if (executionSettings.Modalities is string responseModalitiesString)
{
if (Enum.TryParse<ChatResponseModalities>(responseModalitiesString, true, out var parsedResponseModalities))
{
return parsedResponseModalities;
}
throw new NotSupportedException($"The provided response modalities '{responseModalitiesString}' is not supported.");
}
if (executionSettings.Modalities is JsonElement responseModalitiesElement)
{
if (responseModalitiesElement.ValueKind == JsonValueKind.String)
{
var modalityString = responseModalitiesElement.GetString();
if (Enum.TryParse<ChatResponseModalities>(modalityString, true, out var parsedResponseModalities))
{
return parsedResponseModalities;
}
throw new NotSupportedException($"The provided response modalities '{modalityString}' is not supported.");
}
if (responseModalitiesElement.ValueKind == JsonValueKind.Array)
{
tryView on GitHub (pinned to c028a0c7dc)
Solutions
- Pass a single valid enum name: "Text", "Audio", "Image", or "Default".
- For multiple modalities pass an IEnumerable<string> (handled by ParseResponseModalitiesEnumerable) or a ChatResponseModalities flags value (e.g. ChatResponseModalities.Text | ChatResponseModalities.Audio).
- Validate the string with Enum.TryParse before assignment.
Example fix
// before
settings.Modalities = "Text,Audio"; // single string, parse fails (no comma-split)
// throws: The provided response modalities 'Text,Audio' is not supported.
// after
settings.Modalities = new[] { "Text", "Audio" }; Defensive patterns
Strategy: validation
Validate before calling
static bool IsValidModality(string s) => Enum.TryParse<ChatResponseModalities>(s, true, out _);
// before assigning
if (!IsValidModality(modalityString))
throw new ArgumentException($"'{modalityString}' is not a ChatResponseModalities value."); Type guard
bool IsValidSingleModality(string s) => Enum.TryParse<ChatResponseModalities>(s, true, out _);
Try / catch
try { /* assign settings.Modalities = "Text" */ }
catch (NotSupportedException ex) when (ex.Message.Contains("response modalities"))
{ throw new ConfigurationException("Use a single ChatResponseModalities name or an array for multiple.", ex); } Prevention
- Pass multiple modalities as an array, not a comma-joined string.
- Use the exact enum member names (case-insensitive).
- Validate the string with Enum.TryParse before assignment.
When it happens
Trigger: Setting Modalities = "video" (or any other non-member string such as "txt", "Voice", or a comma-separated "Text,Audio"). Enum.TryParse does not split commas, so 'Text,Audio' as one string also fails.
Common situations: Passing a comma-separated multi-modality string instead of an array. Typo in the modality name. Using a modality not supported by the enum version in use.
Related errors
- The provided response modalities '{modalityString}' is not s
- 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/dcea1d9fb633026d.
Report an issue: GitHub.