diff --git a/src/Libraries/Microsoft.Extensions.AI.AzureAIInference/AzureAIInferenceChatClient.cs b/src/Libraries/Microsoft.Extensions.AI.AzureAIInference/AzureAIInferenceChatClient.cs index ed2cc991e8c..4a373baf069 100644 --- a/src/Libraries/Microsoft.Extensions.AI.AzureAIInference/AzureAIInferenceChatClient.cs +++ b/src/Libraries/Microsoft.Extensions.AI.AzureAIInference/AzureAIInferenceChatClient.cs @@ -449,9 +449,20 @@ private IEnumerable ToAzureAIInferenceChatMessages(IEnumerab } else if (input.Role == ChatRole.User) { - yield return input.Contents.All(c => c is TextContent) ? - new ChatRequestUserMessage(string.Concat(input.Contents)) : - new ChatRequestUserMessage(GetContentParts(input.Contents)); + if (input.Contents.Count > 0) + { + if (input.Contents.All(c => c is TextContent)) + { + if (string.Concat(input.Contents) is { Length: > 0 } text) + { + yield return new ChatRequestUserMessage(text); + } + } + else if (GetContentParts(input.Contents) is { Count: > 0 } parts) + { + yield return new ChatRequestUserMessage(parts); + } + } } else if (input.Role == ChatRole.Assistant) { diff --git a/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs b/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs index 55b840eea5f..253e1e1db8f 100644 --- a/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs +++ b/test/Libraries/Microsoft.Extensions.AI.Integration.Tests/ChatClientIntegrationTests.cs @@ -70,6 +70,20 @@ public virtual async Task GetResponseAsync_MultipleRequestMessages() Assert.Contains("Asia", response.Text); } + [ConditionalFact] + public virtual async Task GetResponseAsync_WithEmptyMessage() + { + SkipIfNotEnabled(); + + var response = await _chatClient.GetResponseAsync( + [ + new(ChatRole.User, []), + new(ChatRole.User, "What is 1 + 2? Reply with a single number."), + ]); + + Assert.Contains("3", response.Text); + } + [ConditionalFact] public virtual async Task GetStreamingResponseAsync() {