11 writes to Contents
Microsoft.Extensions.AI.Abstractions.Tests (3)
ChatCompletion\ChatMessageTests.cs (3)
181message.Contents = contents; 185message.Contents = contents; 188message.Contents = null;
Microsoft.Extensions.AI.Evaluation.Integration.Tests (6)
SafetyEvaluatorTests.cs (6)
336Contents = [ 374Contents = [ 408Contents = [ 421Contents = [ 457Contents = [ 470Contents = [
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
SerializationChainingTests.cs (1)
32Contents = new List<AIContent>
Microsoft.Extensions.AI.Tests (1)
ChatCompletion\DistributedCachingChatClientTest.cs (1)
51Contents = [new FunctionCallContent("someCallId", "functionName", new Dictionary<string, object?>
206 references to Contents
Microsoft.Extensions.AI (10)
ChatCompletion\FunctionInvokingChatClient.cs (3)
415Contents = message.Contents, 524any |= CopyFunctionCalls(messages[i].Contents, ref functionCalls); 666var allExceptions = added.SelectMany(m => m.Contents.OfType<FunctionResultContent>())
ChatCompletion\OpenTelemetryChatClient.cs (5)
466JsonSerializer.Serialize(CreateAssistantEvent(message.Contents), OtelContext.Default.AssistantEvent)); 470foreach (FunctionResultContent frc in message.Contents.OfType<FunctionResultContent>()) 488Content = GetMessageContent(message.Contents), 506Message = CreateAssistantEvent(response.Messages is { Count: 1 } ? response.Messages[0].Contents : response.Messages.SelectMany(m => m.Contents)),
ChatReduction\MessageCountingChatReducer.cs (1)
56else if (!message.Contents.Any(m => m is FunctionCallContent or FunctionResultContent))
ChatReduction\SummarizingChatReducer.cs (1)
108else if (!message.Contents.Any(m => m is FunctionCallContent or FunctionResultContent))
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatMessage.cs (2)
79/// This property concatenates the text of all <see cref="TextContent"/> objects in <see cref="Contents"/>. 82public string Text => Contents.ConcatText();
ChatCompletion\ChatResponse.cs (1)
135Contents = message.Contents,
ChatCompletion\ChatResponseExtensions.cs (2)
296CoalesceTextContent((List<AIContent>)response.Messages[i].Contents); 367message.Contents.Add(content);
Microsoft.Extensions.AI.Abstractions.Tests (62)
ChatCompletion\ChatMessageTests.cs (37)
20Assert.Empty(message.Contents); 24Assert.NotNull(message.Contents); 25Assert.Same(message.Contents, message.Contents); 26Assert.Empty(message.Contents); 41Assert.Same(message.Contents, message.Contents); 44Assert.Empty(message.Contents); 48Assert.Single(message.Contents); 49TextContent tc = Assert.IsType<TextContent>(message.Contents[0]); 67Assert.Empty(message.Contents); 71Assert.Empty(message.Contents); 75Assert.Empty(message.Contents); 79Assert.Empty(message.Contents); 98Assert.Same(message.Contents, message.Contents); 101Assert.Empty(message.Contents); 106Assert.Equal(messageCount, message.Contents.Count); 109TextContent tc = Assert.IsType<TextContent>(message.Contents[i]); 155TextContent textContent = Assert.IsType<TextContent>(message.Contents[3]); 160((TextContent)message.Contents[3]).Text = "text-3"; 171Assert.IsType<List<AIContent>>(new ChatMessage().Contents); 178Assert.Empty(message.Contents); 183Assert.Same(contents, message.Contents); 186Assert.Same(contents, message.Contents); 189Assert.NotNull(message.Contents); 190Assert.NotSame(contents, message.Contents); 191Assert.Empty(message.Contents); 282((TextContent)chatMessage.Contents[0]).Text = "content-1-override"; // Override the content of the first text content item that has the "content-1" content 294Assert.NotNull(deserializedMessage.Contents); 295Assert.Equal(items.Count, deserializedMessage.Contents.Count); 297var textContent = deserializedMessage.Contents[0] as TextContent; 304var dataContent = deserializedMessage.Contents[1] as DataContent; 312dataContent = deserializedMessage.Contents[2] as DataContent; 320textContent = deserializedMessage.Contents[3] as TextContent; 327var functionCallContent = deserializedMessage.Contents[4] as FunctionCallContent; 335var functionResultContent = deserializedMessage.Contents[5] as FunctionResultContent;
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (25)
197Assert.Equal(expected.Count + (gapLength * ((numSequences - 1) + (gapBeginningEnd ? 2 : 0))), message.Contents.Count); 199TextContent[] contents = message.Contents.OfType<TextContent>().ToArray(); 234Assert.Equal(8, message.Contents.Count); 235Assert.Equal("ABC", Assert.IsType<TextContent>(message.Contents[0]).Text); 236Assert.Equal("DEF", Assert.IsType<TextReasoningContent>(message.Contents[1]).Text); 237Assert.Equal("GH", Assert.IsType<TextContent>(message.Contents[2]).Text); 238Assert.Equal("IJ", Assert.IsType<TextReasoningContent>(message.Contents[3]).Text); 239Assert.Equal("K", Assert.IsType<TextContent>(message.Contents[4]).Text); 240Assert.Equal("L", Assert.IsType<TextReasoningContent>(message.Contents[5]).Text); 241Assert.Equal("MN", Assert.IsType<TextContent>(message.Contents[6]).Text); 242Assert.Equal("OP", Assert.IsType<TextReasoningContent>(message.Contents[7]).Text); 272Assert.Equal(12, message.Contents.Count); 273Assert.Equal("ABC", Assert.IsType<TextContent>(message.Contents[0]).Text); 274Assert.Equal("D", Assert.IsType<TextContent>(message.Contents[1]).Text); 275Assert.Equal("E", Assert.IsType<TextContent>(message.Contents[2]).Text); 276Assert.Equal("F", Assert.IsType<TextContent>(message.Contents[3]).Text); 277Assert.Equal("GH", Assert.IsType<TextContent>(message.Contents[4]).Text); 278Assert.Equal("I", Assert.IsType<TextContent>(message.Contents[5]).Text); 279Assert.Equal("J", Assert.IsType<TextContent>(message.Contents[6]).Text); 280Assert.Equal("K", Assert.IsType<TextContent>(message.Contents[7]).Text); 281Assert.Equal("L", Assert.IsType<TextContent>(message.Contents[8]).Text); 282Assert.Equal("MN", Assert.IsType<TextContent>(message.Contents[9]).Text); 283Assert.Equal("O", Assert.IsType<TextContent>(message.Contents[10]).Text); 284Assert.Equal("P", Assert.IsType<TextContent>(message.Contents[11]).Text); 304Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).Contents)).Text);
Microsoft.Extensions.AI.AzureAIInference (8)
AzureAIInferenceChatClient.cs (8)
112message.Contents.Add(callContent); 448foreach (AIContent item in input.Contents) 471if (input.Contents.Count > 0) 473if (input.Contents.All(c => c is TextContent)) 475if (string.Concat(input.Contents) is { Length: > 0 } text) 480else if (GetContentParts(input.Contents) is { Count: > 0 } parts) 490ChatRequestAssistantMessage message = new(string.Concat(input.Contents.Where(c => c is TextContent))); 492foreach (var content in input.Contents)
Microsoft.Extensions.AI.AzureAIInference.Tests (5)
AzureAIInferenceChatClientTests.cs (5)
157Assert.Single(response.Messages.Single().Contents); 1006Assert.Single(response.Messages.Single().Contents); 1141Assert.Single(response.Messages.Single().Contents); 1266Assert.Single(response.Messages.Single().Contents); 1267FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]);
Microsoft.Extensions.AI.Evaluation (4)
ChatMessageExtensions.cs (3)
100/// (present within the <see cref="ChatMessage.Contents"/> of the <paramref name="message"/>) that are not 116if (!message.Contents.OfType<TextContent>().Any()) 139/// (present within the <see cref="ChatMessage.Contents"/> of the <paramref name="messages"/>) that are not
ChatResponseExtensions.cs (1)
21/// (present within the <see cref="ChatMessage.Contents"/> of the <see cref="ChatResponse.Messages"/>) that are not
Microsoft.Extensions.AI.Evaluation.Quality (4)
ChatResponseExtensions.cs (1)
29foreach (AIContent content in modelResponse.Messages.SelectMany(m => m.Contents))
IntentResolutionEvaluator.cs (1)
121modelResponse.Messages.SelectMany(m => m.Contents).OfType<FunctionCallContent>();
TaskAdherenceEvaluator.cs (1)
120modelResponse.Messages.SelectMany(m => m.Contents).OfType<FunctionCallContent>();
ToolCallAccuracyEvaluator.cs (1)
100modelResponse.Messages.SelectMany(m => m.Contents).OfType<FunctionCallContent>();
Microsoft.Extensions.AI.Evaluation.Safety (3)
ChatMessageExtensions.cs (1)
12=> message.Contents.Any(c => c.IsImageWithSupportedFormat());
ContentSafetyServicePayloadUtilities.cs (2)
320foreach (AIContent content in message.Contents) 456foreach (AIContent content in message.Contents)
Microsoft.Extensions.AI.Integration.Tests (10)
ChatClientIntegrationTests.cs (3)
170var singleTextContent = (TextContent)history[1].Contents.Single(); 667((TextContent)message.Contents[0]).Text += "!"; 701((TextContent)message.Contents[0]).Text += "!";
PromptBasedFunctionCallingChatClient.cs (6)
67for (var itemIndex = 0; itemIndex < message.Contents.Count; itemIndex++) 69if (message.Contents[itemIndex] is FunctionResultContent frc) 74else if (message.Contents[itemIndex] is FunctionCallContent fcc) 90var contentItem = message.Contents.SingleOrDefault(); 118message.Contents.Add(new FunctionCallContent(id, toolCallParsed.Name!, toolCallParsed.Arguments is { } args ? new ReadOnlyDictionary<string, object?>(args) : null)); 122message.Contents.Remove(contentItem);
ReducingChatClientTests.cs (1)
99foreach (AIContent content in message.Contents)
Microsoft.Extensions.AI.OpenAI (30)
MicrosoftExtensionsAIChatExtensions.cs (10)
60IEnumerable<ChatToolCall>? toolCalls = lastMessage?.Contents 67new(OpenAIChatClient.ToOpenAIChatContent(lastMessage?.Contents ?? [])), 73outputAudio: lastMessage?.Contents.OfType<DataContent>().Where(dc => dc.HasTopLevelMediaType("audio")).Select(a => OpenAIChatModelFactory.ChatOutputAudio(new(a.Data))).FirstOrDefault(), 74messageAnnotations: ConvertAnnotations(lastMessage?.Contents)); 178OpenAIChatClient.ConvertContentParts(acm.Content, resultMessage.Contents); 183resultMessage.Contents.Add(fcc); 190OpenAIChatClient.ConvertContentParts(ucm.Content, resultMessage.Contents); 195OpenAIChatClient.ConvertContentParts(dcm.Content, resultMessage.Contents); 200OpenAIChatClient.ConvertContentParts(scm.Content, resultMessage.Contents); 204resultMessage.Contents.Add(new FunctionResultContent(tcm.ToolCallId, ToToolResult(tcm.Content))
OpenAIAssistantsChatClient.cs (2)
481foreach (var textContent in chatMessage.Contents.OfType<TextContent>()) 489foreach (AIContent content in chatMessage.Contents)
OpenAIChatClient.cs (9)
140var parts = ToOpenAIChatContent(input.Contents); 148foreach (AIContent item in input.Contents) 174foreach (var content in input.Contents) 461returnMessage.Contents.Add(aiContent); 468returnMessage.Contents.Add(new DataContent(audio.AudioBytes.ToMemory(), GetOutputAudioMimeType(chatCompletionOptions)) 482returnMessage.Contents.Add(callContent); 489returnMessage.Contents.Add(new ErrorContent(refusal) { ErrorCode = nameof(openAICompletion.Refusal) }); 497TextContent? annotationContent = returnMessage.Contents.OfType<TextContent>().FirstOrDefault(); 501returnMessage.Contents.Add(annotationContent);
OpenAIResponsesChatClient.cs (9)
116lastMessage.Contents.Add(new ErrorContent(error.Message) { ErrorCode = error.Code.ToString() }); 148((List<AIContent>)message.Contents).AddRange(ToAIContents(messageItem.Content)); 152message.Contents.Add(new TextReasoningContent(summary) { RawRepresentation = outputItem }); 158message.Contents.Add(fcc); 162message.Contents.Add(new FunctionResultContent(functionCallOutputItem.CallId, functionCallOutputItem.FunctionOutput) { RawRepresentation = functionCallOutputItem }); 166message.Contents.Add(new() { RawRepresentation = outputItem }); 520yield return ResponseItem.CreateUserMessageItem(ToResponseContentParts(input.Contents)); 526foreach (AIContent item in input.Contents) 558foreach (AIContent item in input.Contents)
Microsoft.Extensions.AI.OpenAI.Tests (23)
OpenAIChatClientTests.cs (10)
164Assert.Single(response.Messages.Single().Contents); 822Assert.Single(response.Messages.Single().Contents); 920Assert.Single(response.Messages.Single().Contents); 1018Assert.Single(response.Messages.Single().Contents); 1150Assert.Single(response.Messages.Single().Contents); 1151FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]); 1234Assert.Single(response.Messages.Single().Contents); 1235TextContent fcc = Assert.IsType<TextContent>(response.Messages.Single().Contents[0]); 1471Assert.Single(response.Messages.Single().Contents); 1585Assert.Single(response.Messages.Single().Contents);
OpenAIConversionTests.cs (11)
231Assert.Equal(3, message.Contents.Count); 232Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.Contents[0], exactMatch: false).Text); 233Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.Contents[1], exactMatch: false).Uri.ToString()); 234Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.Contents[2], exactMatch: false).Name); 262Assert.Equal(3, message.Contents.Count); 263Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.Contents[0], exactMatch: false).Text); 264Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.Contents[1], exactMatch: false).Uri.ToString()); 265Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.Contents[2], exactMatch: false).Name); 321Assert.Equal("Function output", convertedMessages[3].Contents.OfType<FunctionResultContent>().First().Result); 376var textContent = message.Contents.OfType<TextContent>().FirstOrDefault(); 377var functionCall = message.Contents.OfType<FunctionCallContent>().FirstOrDefault();
OpenAIResponseClientIntegrationTests.cs (1)
34TextContent tc = m.Contents.OfType<TextContent>().First();
OpenAIResponseClientTests.cs (1)
159Assert.Single(response.Messages.Single().Contents);
Microsoft.Extensions.AI.Tests (42)
ChatCompletion\DistributedCachingChatClientTest.cs (9)
728Assert.NotSame(result2.Messages.Last().Contents[0], expectedResponse.Messages.Last().Contents[0]); 729Assert.NotSame(result2.Messages.Last().Contents[1], expectedResponse.Messages.Last().Contents[1]); 810Assert.Equal(expectedMessage.Contents.Count, actualMessage.Contents.Count); 812for (var itemIndex = 0; itemIndex < expectedMessage.Contents.Count; itemIndex++) 814var expectedItem = expectedMessage.Contents[itemIndex]; 815var actualItem = actualMessage.Contents[itemIndex];
ChatCompletion\FunctionInvokingChatClientTests.cs (25)
529assistantMessage.Contents.Add(new FunctionCallContent(callId, "Func", 531toolMessage.Contents.Add(new FunctionResultContent(callId, result: callShouldThrow ? "Error: Function failed." : "Success")); 569IEnumerable<AIContent> content = finalChat.SelectMany(m => m.Contents); 767m => Assert.Collection(m.Contents, 770m => Assert.Collection(m.Contents, 773m => Assert.Equal("OK bye", Assert.IsType<TextContent>(Assert.Single(m.Contents)).Text)); 809Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 810Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[1].Contents)); 811Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[2].Contents)); 812Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[3].Contents)); 813Assert.IsType<TextContent>(Assert.Single(response.Messages[4].Contents)); 912AIContent[] resultContents = existingSearchResult is not null && existingSearchResult.Contents.OfType<FunctionResultContent>().ToList() is { } frcs 936var frcs = lastMessage.Contents.OfType<FunctionResultContent>().ToList(); 1103var message = new ChatMessage(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1129Assert.Equal(expectedMessage.Contents.Count, chatMessage.Contents.Count); 1130for (int j = 0; j < expectedMessage.Contents.Count; j++) 1132var expectedItem = expectedMessage.Contents[j]; 1133var chatItem = chatMessage.Contents[j]; 1197ChatMessage message = new(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1223Assert.Equal(expectedMessage.Contents.Count, chatMessage.Contents.Count); 1224for (int j = 0; j < expectedMessage.Contents.Count; j++) 1226var expectedItem = expectedMessage.Contents[j]; 1227var chatItem = chatMessage.Contents[j];
ChatCompletion\UseDelegateChatClientTests.cs (2)
103cc.Messages.SelectMany(c => c.Contents).OfType<TextContent>().Last().Text += " world"; 206cc.Messages.SelectMany(c => c.Contents).OfType<TextContent>().Last().Text += " world (non-streaming)";
ChatReduction\MessageCountingChatReducerTests.cs (4)
143Assert.DoesNotContain(m.Contents, c => c is FunctionCallContent); 144Assert.DoesNotContain(m.Contents, c => c is FunctionResultContent); 150Assert.DoesNotContain(m.Contents, c => c is FunctionCallContent); 151Assert.DoesNotContain(m.Contents, c => c is FunctionResultContent);
ChatReduction\SummarizingChatReducerTests.cs (2)
106Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is FunctionCallContent)); 107Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is FunctionResultContent));