{"record":{"id":"bbbf55b43e845df6","repo":"microsoft/semantic-kernel","slug":"the-provided-response-modalities-modalitystring","errorCode":null,"errorMessage":"The provided response modalities '{modalityString}' is not supported.","messagePattern":"The provided response modalities '(.+?)' is not supported\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Connectors/Connectors.AzureOpenAI/Core/AzureClientCore.ChatCompletion.cs","lineNumber":157,"sourceCode":"    /// <summary>\n    /// Gets the response modalities from the execution settings.\n    /// </summary>\n    /// <param name=\"executionSettings\">The execution settings.</param>\n    /// <returns>The response modalities as a <see cref=\"ChatResponseModalities\"/> flags enum.</returns>\n    private static ChatResponseModalities GetResponseModalities(OpenAIPromptExecutionSettings executionSettings)\n    {\n        static ChatResponseModalities ParseResponseModalitiesEnumerable(IEnumerable<string> responseModalitiesStrings)\n        {\n            ChatResponseModalities result = ChatResponseModalities.Default;\n            foreach (var modalityString in responseModalitiesStrings)\n            {\n                if (Enum.TryParse<ChatResponseModalities>(modalityString, true, out var parsedModality))\n                {\n                    result |= parsedModality;\n                }\n                else\n                {\n                    throw new NotSupportedException($\"The provided response modalities '{modalityString}' is not supported.\");\n                }\n            }\n\n            return result;\n        }\n\n        if (executionSettings.Modalities is null)\n        {\n            return ChatResponseModalities.Default;\n        }\n\n        if (executionSettings.Modalities is ChatResponseModalities responseModalities)\n        {\n            return responseModalities;\n        }\n\n        if (executionSettings.Modalities is IEnumerable<string> responseModalitiesStrings)\n        {","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Connectors/Connectors.AzureOpenAI/Core/AzureClientCore.ChatCompletion.cs#L139-L175","documentation":"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.","triggerScenarios":"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\" }.","commonSituations":"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.","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."],"exampleFix":"// before\nsettings.Modalities = new List<string> { \"Text\", \"Video\" };\n// throws: The provided response modalities 'Video' is not supported.\n\n// after\nsettings.Modalities = new List<string> { \"Text\", \"Audio\" };","handlingStrategy":"validation","validationCode":"static readonly HashSet<string> s_modalities = Enum.GetNames<ChatResponseModalities>().ToHashSet(StringComparer.OrdinalIgnoreCase);\n\nbool ValidateModalities(IEnumerable<string> mods) => mods.All(m => s_modalities.Contains(m));","typeGuard":"bool AreValidModalities(IEnumerable<string> mods)\n    => mods.All(m => Enum.TryParse<ChatResponseModalities>(m, true, out _));","tryCatchPattern":"try { /* kernel call with Modalities = new[] { \"Text\", \"Audio\" } */ }\ncatch (NotSupportedException ex) when (ex.Message.Contains(\"response modalities\"))\n{ throw new ConfigurationException($\"Invalid response modalities. Valid names: {string.Join(\", \", Enum.GetNames<ChatResponseModalities>())}.\", ex); }","preventionTips":["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."],"tags":["azure-openai","execution-settings","modalities","configuration","csharp"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}