21 writes to Contents
Microsoft.Extensions.AI (5)
ChatCompletion\FunctionInvokingChatClient.cs (3)
1483newMessage.Contents = keptContents; 1651functionCallMessage.Contents = [resultWithRequestMessage.Response.ToolCall]; 1786message.Contents = [.. message.Contents];
ChatCompletion\ImageGeneratingChatClient.cs (2)
88message.Contents = requestState.ReplaceImageGenerationFunctionResults(message.Contents); 230newMessage.Contents = newContents;
Microsoft.Extensions.AI.Abstractions (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
142Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents = value!,
Microsoft.Extensions.AI.Abstractions.Tests (4)
ChatCompletion\ChatMessageTests.cs (3)
180message.Contents = contents; 184message.Contents = contents; 187message.Contents = null;
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\TestJsonSerializerContext.ChatMessage.g.cs (1)
140Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents = value!,
Microsoft.Extensions.AI.Evaluation.Integration.Tests (6)
SafetyEvaluatorTests.cs (6)
338Contents = [ 376Contents = [ 410Contents = [ 423Contents = [ 459Contents = [ 472Contents = [
Microsoft.Extensions.AI.Evaluation.Reporting (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
142Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents = value!,
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
142Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents = value!,
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
SerializationChainingTests.cs (1)
31Contents = [new TextContent("A user message")]
Microsoft.Extensions.AI.Tests (2)
ChatCompletion\DistributedCachingChatClientTest.cs (1)
52Contents = [new FunctionCallContent("someCallId", "functionName", new Dictionary<string, object?>
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\TestJsonSerializerContext.ChatMessage.g.cs (1)
140Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents = value!,
462 references to Contents
Microsoft.AspNetCore.Components.AI (1)
Engine\UIAgent.cs (1)
116Contents = [.. message.Contents]
Microsoft.Extensions.AI (24)
ChatCompletion\FunctionInvokingChatClient.cs (16)
714Contents = message.Contents, 869message.Contents.Any(static c => 883message.Contents.All(static c => 895any |= CopyFunctionCalls(messages[i].Contents, ref functionCalls); 931IList<AIContent> contents = messages[i].Contents; 950IList<AIContent> contents = messages[i].Contents; 1226if (added.Any(static m => m.Contents.Any(static c => c is FunctionResultContent { Exception: not null }))) 1234.SelectMany(m => m.Contents.OfType<FunctionResultContent>()) 1447for (int j = 0; j < message.Contents.Count; j++) 1449var content = message.Contents[j]; 1477if (keptContents?.Count != message.Contents.Count) 1622currentMessage.Contents.Add(resultWithRequestMessage.Response.ToolCall); 1750var content = messages[i].Contents; 1786message.Contents = [.. message.Contents]; 1788var functionCall = (FunctionCallContent)message.Contents[contentIndex]; 1790message.Contents[contentIndex] = new ToolApprovalRequestContent(ComposeApprovalRequestId(functionCall.CallId), functionCall)
ChatCompletion\ImageGeneratingChatClient.cs (4)
88message.Contents = requestState.ReplaceImageGenerationFunctionResults(message.Contents); 171for (int contentIndex = 0; contentIndex < message.Contents.Count; contentIndex++) 173var content = message.Contents[contentIndex]; 178newContents ??= CopyList(message.Contents, contentIndex);
ChatReduction\MessageCountingChatReducer.cs (1)
57else if (!message.Contents.Any(m => m is FunctionCallContent or FunctionResultContent))
ChatReduction\SummarizingChatReducer.cs (2)
161if (!unsummarizedMessages[indexOfFirstMessageToKeep - 1].Contents.Any(IsToolRelatedContent)) 225if (!message.Contents.Any(IsToolRelatedContent))
Common\OtelMessageSerializer.cs (1)
63foreach (AIContent content in message.Contents)
Microsoft.Extensions.AI.Abstractions (6)
ChatCompletion\ChatMessage.cs (2)
77/// This property concatenates the text of all <see cref="TextContent"/> objects in <see cref="Contents"/>. 80public string Text => Contents.ConcatText();
ChatCompletion\ChatResponse.cs (1)
149Contents = message.Contents,
ChatCompletion\ChatResponseExtensions.cs (2)
531CoalesceContent((List<AIContent>)response.Messages[i].Contents); 630message.Contents.Add(content);
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
141Getter = static obj => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents,
Microsoft.Extensions.AI.Abstractions.Tests (113)
AssertExtensions.cs (5)
30Assert.Equal(expectedMessage.Contents.Count, chatMessage.Contents.Count); 31for (int j = 0; j < expectedMessage.Contents.Count; j++) 33var expectedItem = expectedMessage.Contents[j]; 34var chatItem = chatMessage.Contents[j];
ChatCompletion\ChatMessageTests.cs (41)
19Assert.Empty(message.Contents); 23Assert.NotNull(message.Contents); 24Assert.Same(message.Contents, message.Contents); 25Assert.Empty(message.Contents); 40Assert.Same(message.Contents, message.Contents); 43Assert.Empty(message.Contents); 47Assert.Single(message.Contents); 48TextContent tc = Assert.IsType<TextContent>(message.Contents[0]); 66Assert.Empty(message.Contents); 70Assert.Empty(message.Contents); 74Assert.Empty(message.Contents); 78Assert.Empty(message.Contents); 97Assert.Same(message.Contents, message.Contents); 100Assert.Empty(message.Contents); 105Assert.Equal(messageCount, message.Contents.Count); 108TextContent tc = Assert.IsType<TextContent>(message.Contents[i]); 154TextContent textContent = Assert.IsType<TextContent>(message.Contents[3]); 159((TextContent)message.Contents[3]).Text = "text-3"; 170Assert.IsType<List<AIContent>>(new ChatMessage().Contents); 177Assert.Empty(message.Contents); 182Assert.Same(contents, message.Contents); 185Assert.Same(contents, message.Contents); 188Assert.NotNull(message.Contents); 189Assert.NotSame(contents, message.Contents); 190Assert.Empty(message.Contents); 281((TextContent)chatMessage.Contents[0]).Text = "content-1-override"; // Override the content of the first text content item that has the "content-1" content 293Assert.NotNull(deserializedMessage.Contents); 294Assert.Equal(items.Count, deserializedMessage.Contents.Count); 296var textContent = deserializedMessage.Contents[0] as TextContent; 303var dataContent = deserializedMessage.Contents[1] as DataContent; 311dataContent = deserializedMessage.Contents[2] as DataContent; 319textContent = deserializedMessage.Contents[3] as TextContent; 326var functionCallContent = deserializedMessage.Contents[4] as FunctionCallContent; 334var functionResultContent = deserializedMessage.Contents[5] as FunctionResultContent; 382Assert.Equal(3, result.Contents.Count); 384var textContent = Assert.IsType<TextContent>(result.Contents[0]); 387var funcCall = Assert.IsType<FunctionCallContent>(result.Contents[1]); 393var funcResult = Assert.IsType<FunctionResultContent>(result.Contents[2]);
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (45)
672Assert.Equal(expected.Count + (gapLength * ((numSequences - 1) + (gapBeginningEnd ? 2 : 0))), message.Contents.Count); 674TextContent[] contents = message.Contents.OfType<TextContent>().ToArray(); 709Assert.Equal(8, message.Contents.Count); 710Assert.Equal("ABC", Assert.IsType<TextContent>(message.Contents[0]).Text); 711Assert.Equal("DEF", Assert.IsType<TextReasoningContent>(message.Contents[1]).Text); 712Assert.Equal("GH", Assert.IsType<TextContent>(message.Contents[2]).Text); 713Assert.Equal("IJ", Assert.IsType<TextReasoningContent>(message.Contents[3]).Text); 714Assert.Equal("K", Assert.IsType<TextContent>(message.Contents[4]).Text); 715Assert.Equal("L", Assert.IsType<TextReasoningContent>(message.Contents[5]).Text); 716Assert.Equal("MN", Assert.IsType<TextContent>(message.Contents[6]).Text); 717Assert.Equal("OP", Assert.IsType<TextReasoningContent>(message.Contents[7]).Text); 739Assert.Equal(5, message.Contents.Count); 741Assert.Equal("A", Assert.IsType<TextReasoningContent>(message.Contents[0]).Text); 742Assert.Equal("1", ((TextReasoningContent)message.Contents[0]).ProtectedData); 744Assert.Equal("B", Assert.IsType<TextReasoningContent>(message.Contents[1]).Text); 745Assert.Equal("2", ((TextReasoningContent)message.Contents[1]).ProtectedData); 747Assert.Equal("CDE", Assert.IsType<TextReasoningContent>(message.Contents[2]).Text); 748Assert.Equal("3", ((TextReasoningContent)message.Contents[2]).ProtectedData); 750Assert.Equal("F", Assert.IsType<TextReasoningContent>(message.Contents[3]).Text); 751Assert.Equal("4", ((TextReasoningContent)message.Contents[3]).ProtectedData); 753Assert.Equal("GH", Assert.IsType<TextReasoningContent>(message.Contents[4]).Text); 754Assert.Null(((TextReasoningContent)message.Contents[4]).ProtectedData); 784Assert.Equal(12, message.Contents.Count); 785Assert.Equal("ABC", Assert.IsType<TextContent>(message.Contents[0]).Text); 786Assert.Equal("D", Assert.IsType<TextContent>(message.Contents[1]).Text); 787Assert.Equal("E", Assert.IsType<TextContent>(message.Contents[2]).Text); 788Assert.Equal("F", Assert.IsType<TextContent>(message.Contents[3]).Text); 789Assert.Equal("GH", Assert.IsType<TextContent>(message.Contents[4]).Text); 790Assert.Equal("I", Assert.IsType<TextContent>(message.Contents[5]).Text); 791Assert.Equal("J", Assert.IsType<TextContent>(message.Contents[6]).Text); 792Assert.Equal("K", Assert.IsType<TextContent>(message.Contents[7]).Text); 793Assert.Equal("L", Assert.IsType<TextContent>(message.Contents[8]).Text); 794Assert.Equal("MN", Assert.IsType<TextContent>(message.Contents[9]).Text); 795Assert.Equal("O", Assert.IsType<TextContent>(message.Contents[10]).Text); 796Assert.Equal("P", Assert.IsType<TextContent>(message.Contents[11]).Text); 816Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).Contents)).Text); 953Assert.Equal(4, message.Contents.Count); 957Assert.IsType<TextContent>(message.Contents[0]).Text); 960var imageResults = message.Contents.OfType<ImageGenerationToolResultContent>().ToArray(); 1001var imageResults = message.Contents.OfType<ImageGenerationToolResultContent>().ToArray(); 1043var webSearchCalls = message.Contents.OfType<WebSearchToolCallContent>().ToArray(); 1074var ws1 = Assert.Single(message.Contents.OfType<WebSearchToolCallContent>()); 1094var webSearchCalls = message.Contents.OfType<WebSearchToolCallContent>().ToArray(); 1132var ws1First = Assert.Single(response1.Messages.SelectMany(m => m.Contents).OfType<WebSearchToolCallContent>()); 1138var ws1Second = Assert.Single(response2.Messages.SelectMany(m => m.Contents).OfType<WebSearchToolCallContent>());
Contents\AIContentTests.cs (7)
92foreach (AIContent content in message.Contents) 105Assert.Equal(message.Contents.Count, deserialized.Contents.Count); 106for (int i = 0; i < message.Contents.Count; i++) 108Assert.NotNull(message.Contents[i]); 109Assert.Equal(message.Contents[i].GetType(), deserialized.Contents[i].GetType());
Contents\ToolCallContentTests.cs (7)
64foreach (var content in message.Contents) 77Assert.Equal(message.Contents.Count, deserialized2.Contents.Count); 78for (int i = 0; i < message.Contents.Count; i++) 80Assert.NotNull(deserialized2.Contents[i]); 81Assert.Equal(message.Contents[i].GetType(), deserialized2.Contents[i].GetType());
Contents\ToolResultContentTests.cs (7)
63foreach (var content in message.Contents) 76Assert.Equal(message.Contents.Count, deserialized2.Contents.Count); 77for (int i = 0; i < message.Contents.Count; i++) 79Assert.NotNull(deserialized2.Contents[i]); 80Assert.Equal(message.Contents[i].GetType(), deserialized2.Contents[i].GetType());
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\TestJsonSerializerContext.ChatMessage.g.cs (1)
139Getter = static obj => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents,
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.Reporting (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
141Getter = static obj => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents,
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatMessage.g.cs (1)
141Getter = static obj => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents,
Microsoft.Extensions.AI.Evaluation.Safety (3)
ChatMessageExtensions.cs (1)
12=> message.Contents.Any(c => c.IsImageWithSupportedFormat());
ContentSafetyServicePayloadUtilities.cs (2)
316foreach (AIContent content in message.Contents) 452foreach (AIContent content in message.Contents)
Microsoft.Extensions.AI.Integration.Tests (18)
ChatClientIntegrationTests.cs (3)
169var singleTextContent = (TextContent)history[1].Contents.Single(); 667((TextContent)message.Contents[0]).Text += "!"; 701((TextContent)message.Contents[0]).Text += "!";
ImageGeneratingChatClientIntegrationTests.cs (8)
84var contents = response.Messages.SelectMany(m => m.Contents).ToArray(); 139.SelectMany(m => m.Contents) 214var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 220Assert.Single(secondResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>().SelectMany(t => t.Outputs!.OfType<DataContent>())); 269var secondToolResultContent = Assert.Single(secondResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 314var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 394var textContents = userMessage.Contents.OfType<TextContent>().ToList(); 398Assert.DoesNotContain(userMessage.Contents, c => c == originalImage);
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)
98foreach (AIContent content in message.Contents)
Microsoft.Extensions.AI.OpenAI (45)
MicrosoftExtensionsAIChatExtensions.cs (10)
73IEnumerable<ChatToolCall>? toolCalls = lastMessage?.Contents 80new(OpenAIChatClient.ToOpenAIChatContent(lastMessage?.Contents ?? [])), 86outputAudio: lastMessage?.Contents.OfType<DataContent>().Where(dc => dc.HasTopLevelMediaType("audio")).Select(a => OpenAIChatModelFactory.ChatOutputAudio(new(a.Data))).FirstOrDefault(), 87messageAnnotations: ConvertAnnotations(lastMessage?.Contents)); 195OpenAIChatClient.ConvertContentParts(acm.Content, resultMessage.Contents); 200resultMessage.Contents.Add(fcc); 208OpenAIChatClient.ConvertContentParts(ucm.Content, resultMessage.Contents); 215OpenAIChatClient.ConvertContentParts(dcm.Content, resultMessage.Contents); 222OpenAIChatClient.ConvertContentParts(scm.Content, resultMessage.Contents); 227resultMessage.Contents.Add(new FunctionResultContent(tcm.ToolCallId, ToToolResult(tcm.Content))
OpenAIAssistantsChatClient.cs (2)
522foreach (var textContent in chatMessage.Contents.OfType<TextContent>()) 530foreach (AIContent content in chatMessage.Contents)
OpenAIChatClient.cs (10)
172var parts = ToOpenAIChatContent(input.Contents); 183foreach (AIContent item in input.Contents) 209foreach (var content in input.Contents) 515returnMessage.Contents.Add(aiContent); 523returnMessage.Contents.Add(new TextReasoningContent(reasoningText)); 529returnMessage.Contents.Add(new DataContent(audio.AudioBytes.ToMemory(), GetOutputAudioMimeType(chatCompletionOptions)) 543returnMessage.Contents.Add(callContent); 550returnMessage.Contents.Add(new ErrorContent(refusal) { ErrorCode = nameof(openAICompletion.Refusal) }); 558TextContent? annotationContent = returnMessage.Contents.OfType<TextContent>().FirstOrDefault(); 562returnMessage.Contents.Add(annotationContent);
OpenAIResponsesChatClient.cs (23)
165lastMessage.Contents.Add(new ErrorContent(error.Message) { ErrorCode = error.Code.ToString() }); 203((List<AIContent>)message.Contents).AddRange(ToAIContents(messageItem.Content)); 207message.Contents.Add(CreateReasoningContent(reasoningItem.GetSummaryText(), reasoningItem.EncryptedContent, reasoningItem.Id, outputItem)); 213message.Contents.Add(fcc); 217message.Contents.Add(new FunctionResultContent(functionCallOutputItem.CallId, functionCallOutputItem.FunctionOutput) { RawRepresentation = functionCallOutputItem }); 221AddMcpToolCallContent(mtci, message.Contents); 237message.Contents.Add(approvalRequest); 246message.Contents.Add(new ToolApprovalResponseContent( 256message.Contents.Add(new CodeInterpreterToolCallContent(cicri.Id) 265message.Contents.Add(CreateCodeInterpreterResultContent(cicri)); 269AddImageGenerationContents(imageGenItem, options, message.Contents); 273message.Contents.Add(new WebSearchToolCallContent(wscri.Id) 282message.Contents.Add(new WebSearchToolResultContent(wscri.Id) 292message.Contents.Add(new ToolCallContent(outputItem.Id)); 293message.Contents.Add(new ToolResultContent(outputItem.Id) { RawRepresentation = outputItem }); 297message.Contents.Add(new ToolCallContent(computerCall.CallId) { RawRepresentation = computerCall }); 301message.Contents.Add(new ToolResultContent(computerCallOutput.CallId) { RawRepresentation = computerCallOutput }); 305message.Contents.Add(new ToolCallContent(patchCall.CallId) { RawRepresentation = patchCall }); 309message.Contents.Add(new ToolResultContent(patchCallOutput.CallId) { RawRepresentation = patchCallOutput }); 313message.Contents.Add(new() { RawRepresentation = outputItem }); 1314foreach (AIContent item in input.Contents) 1402foreach (AIContent item in input.Contents) 1536foreach (AIContent item in input.Contents)
Microsoft.Extensions.AI.OpenAI.Tests (142)
OpenAIAssistantChatClientIntegrationTests.cs (2)
66var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 84var toolResultContents = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().ToList();
OpenAIChatClientTests.cs (13)
165Assert.Single(response.Messages.Single().Contents); 839Assert.Single(response.Messages.Single().Contents); 937Assert.Single(response.Messages.Single().Contents); 1035Assert.Single(response.Messages.Single().Contents); 1167Assert.Single(response.Messages.Single().Contents); 1168FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]); 1252Assert.Single(response.Messages.Single().Contents); 1253TextContent fcc = Assert.IsType<TextContent>(response.Messages.Single().Contents[0]); 1489Assert.Single(response.Messages.Single().Contents); 1603Assert.Single(response.Messages.Single().Contents); 1798var frc = Assert.IsType<FunctionResultContent>(Assert.Single(extMessages[0].Contents)); 1914var reasoning = message.Contents.OfType<TextReasoningContent>().Single(); 1917var text = message.Contents.OfType<TextContent>().Single();
OpenAIConversionTests.cs (38)
871Assert.Same(messages[0].Contents[1].RawRepresentation, items[1]); 872Assert.Same(messages[0].Contents[2].RawRepresentation, items[2]); 876Assert.Same(messages[1].Contents[1].RawRepresentation, items[5]); 877Assert.Same(messages[2].Contents[0].RawRepresentation, items[6]); 907Assert.Equal(3, message.Contents.Count); 908Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.Contents[0], exactMatch: false).Text); 909Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.Contents[1], exactMatch: false).Uri.ToString()); 910Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.Contents[2], exactMatch: false).Name); 938Assert.Equal(3, message.Contents.Count); 939Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.Contents[0], exactMatch: false).Text); 940Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.Contents[1], exactMatch: false).Uri.ToString()); 941Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.Contents[2], exactMatch: false).Name); 1177Assert.Equal("Function output", convertedMessages[3].Contents.OfType<FunctionResultContent>().First().Result); 1232var textContent = message.Contents.OfType<TextContent>().FirstOrDefault(); 1233var functionCall = message.Contents.OfType<FunctionCallContent>().FirstOrDefault(); 1304TextContent? textContent = message.Contents.OfType<TextContent>().FirstOrDefault(); 1311TextReasoningContent? reasoningContent = message.Contents.OfType<TextReasoningContent>().FirstOrDefault(); 1318FunctionCallContent? functionCallContent = message.Contents.OfType<FunctionCallContent>().FirstOrDefault(); 1326FunctionResultContent? functionResultContent = message.Contents.OfType<FunctionResultContent>().FirstOrDefault(); 1335McpServerToolCallContent? mcpToolCall = message.Contents.OfType<McpServerToolCallContent>().FirstOrDefault(c => c.CallId == "mcp_call_123"); 1342McpServerToolResultContent? mcpToolResult = message.Contents.OfType<McpServerToolResultContent>().FirstOrDefault(c => c.CallId == "mcp_call_123"); 1349ToolApprovalRequestContent? approvalRequestContent = message.Contents.OfType<ToolApprovalRequestContent>().FirstOrDefault(); 1363ToolApprovalResponseContent? approvalResponseContent = message.Contents.OfType<ToolApprovalResponseContent>().FirstOrDefault(); 1379WebSearchToolCallContent? webSearchToolCall = message.Contents.OfType<WebSearchToolCallContent>().FirstOrDefault(c => c.CallId == "ws_123"); 1383WebSearchToolResultContent? webSearchToolResult = message.Contents.OfType<WebSearchToolResultContent>().FirstOrDefault(c => c.CallId == "ws_123"); 1388ToolCallContent? fileSearchToolCall = message.Contents.OfType<ToolCallContent>().FirstOrDefault(c => c.CallId == "fs_123"); 1392ToolResultContent? fileSearchToolResult = message.Contents.OfType<ToolResultContent>().FirstOrDefault(c => c.CallId == "fs_123"); 1397ToolCallContent? computerToolCall = message.Contents.OfType<ToolCallContent>().FirstOrDefault(c => c.CallId == "call_456"); 1402ToolResultContent? computerToolResult = message.Contents.OfType<ToolResultContent>().FirstOrDefault(c => c.CallId == "call_456"); 1407ToolCallContent? applyPatchToolCall = message.Contents.OfType<ToolCallContent>().FirstOrDefault(c => c.CallId == "call_patch_789"); 1412ToolResultContent? applyPatchToolResult = message.Contents.OfType<ToolResultContent>().FirstOrDefault(c => c.CallId == "call_patch_789"); 1434Assert.Empty(message.Contents.OfType<ToolApprovalResponseContent>()); 1437AIContent? genericContent = message.Contents.FirstOrDefault(c => c.RawRepresentation == mcpApprovalResponseItem); 1458AIContent content = Assert.Single(message.Contents); 1478AIContent content = Assert.Single(message.Contents); 2288WebSearchToolCallContent wsCall = Assert.Single(messages[0].Contents.OfType<WebSearchToolCallContent>()); 2304WebSearchToolCallContent wsCall = Assert.Single(messages[0].Contents.OfType<WebSearchToolCallContent>()); 2320WebSearchToolCallContent wsCall = Assert.Single(messages[0].Contents.OfType<WebSearchToolCallContent>());
OpenAIHostedFileClientIntegrationTests.cs (3)
285foreach (var content in msg.Contents) 355foreach (var content in msg.Contents) 403foreach (var content in msg.Contents)
OpenAIResponseClientIntegrationTests.cs (28)
49var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 62var toolResultContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().FirstOrDefault(); 98var wsCall = m.Contents.OfType<WebSearchToolCallContent>().FirstOrDefault(); 104var wsResult = m.Contents.OfType<WebSearchToolResultContent>().FirstOrDefault(); 117TextContent tc = m.Contents.OfType<TextContent>().First(); 165var igCall = m.Contents.OfType<ImageGenerationToolCallContent>().FirstOrDefault(); 169var igResult = m.Contents.OfType<ImageGenerationToolResultContent>().FirstOrDefault(); 233Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolCallContent>()); 234Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolResultContent>()); 235Assert.Empty(response.Messages.SelectMany(m => m.Contents).OfType<ToolApprovalRequestContent>()); 288.SelectMany(m => m.Contents) 292if (approvalResponse.Contents.Count == 0) 297approvalsCount += approvalResponse.Contents.Count; 337Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolCallContent>()); 338Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolResultContent>()); 342var allContents = response.Messages.SelectMany(m => m.Contents).ToList(); 540var approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<ToolApprovalRequestContent>()); 551var toolCall = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolCallContent>()); 554var toolResult = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolResultContent>()); 713.SelectMany(m => m.Contents) 736.SelectMany(m => m.Contents) 751.SelectMany(m => m.Contents) 795.SelectMany(m => m.Contents) 817.SelectMany(m => m.Contents) 832.SelectMany(m => m.Contents) 879.SelectMany(m => m.Contents) 989.SelectMany(m => m.Contents) 1039.SelectMany(m => m.Contents)
OpenAIResponseClientTests.cs (53)
163Assert.Single(response.Messages.Single().Contents); 574var coalescedReasoning = assistantMessage.Contents.OfType<TextReasoningContent>().Single(); 908Assert.Equal(2, responseMessage.Contents.Count); 909Assert.Single(responseMessage.Contents, content => content is TextReasoningContent); 910AIContent computerUserItem = Assert.Single(responseMessage.Contents, content => content is ToolCallContent); 1499approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<ToolApprovalRequestContent>()); 1631Assert.Equal(3, message.Contents.Count); 1633var call = Assert.IsType<McpServerToolCallContent>(message.Contents[0]); 1642var result = Assert.IsType<McpServerToolResultContent>(message.Contents[1]); 2008Assert.Equal(6, message.Contents.Count); 2010var firstCall = Assert.IsType<McpServerToolCallContent>(message.Contents[1]); 2018var firstResult = Assert.IsType<McpServerToolResultContent>(message.Contents[2]); 2022var secondCall = Assert.IsType<McpServerToolCallContent>(message.Contents[3]); 2030var secondResult = Assert.IsType<McpServerToolResultContent>(message.Contents[4]); 2419Assert.Equal(6, message.Contents.Count); 2421var firstCall = Assert.IsType<McpServerToolCallContent>(message.Contents[1]); 2429var firstResult = Assert.IsType<McpServerToolResultContent>(message.Contents[2]); 2433var secondCall = Assert.IsType<McpServerToolCallContent>(message.Contents[3]); 2441var secondResult = Assert.IsType<McpServerToolResultContent>(message.Contents[4]); 2628Assert.Equal(4, message.Contents.Count); 2630var toolCall = Assert.IsType<McpServerToolCallContent>(message.Contents[1]); 2637var toolResult = Assert.IsType<McpServerToolResultContent>(message.Contents[2]); 3000Assert.Single(response.Messages.Single().Contents); 3394Assert.Equal(3, message.Contents.Count); 3396var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.Contents[0]); 3402var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.Contents[1]); 3405var textContent = Assert.IsType<TextContent>(message.Contents[2]); 3614Assert.Equal(3, message.Contents.Count); 3616var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.Contents[0]); 3622var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.Contents[1]); 3625var textContent = Assert.IsType<TextContent>(message.Contents[2]); 3738Assert.Equal(2, message.Contents.Count); 3741var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.Contents[0]); 3749var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.Contents[1]); 5474var errorContent = lastMessage.Contents.OfType<ErrorContent>().FirstOrDefault(); 6091Assert.Single(message.Contents.OfType<FunctionCallContent>()); 6092Assert.Single(message.Contents.OfType<FunctionResultContent>()); 6093var textContent = Assert.Single(message.Contents.OfType<TextContent>()); 6172var errorContent = response.Messages.Last().Contents.OfType<ErrorContent>().FirstOrDefault(); 6231var imageContent = userMessage.Contents.OfType<UriContent>().FirstOrDefault(); 6294var imageContent = userMessage.Contents.OfType<DataContent>().FirstOrDefault(); 6377var contents = response.Messages[0].Contents; 6854var toolCall = Assert.Single(message.Contents.OfType<ToolCallContent>()); 6859var toolResult = Assert.Single(message.Contents.OfType<ToolResultContent>()); 7137Assert.Equal(3, message.Contents.Count); 7139var wsCall = Assert.IsType<WebSearchToolCallContent>(message.Contents[0]); 7143var wsResult = Assert.IsType<WebSearchToolResultContent>(message.Contents[1]); 7159var textContent = Assert.IsType<TextContent>(message.Contents[2]); 7303var coalescedWsCall = message.Contents.OfType<WebSearchToolCallContent>().Single(); 7307var coalescedWsResult = message.Contents.OfType<WebSearchToolResultContent>().Single(); 7311var textContent = message.Contents.OfType<TextContent>().Single(); 8841var call = Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 8948var coalesced = response.Messages[0].Contents.OfType<FunctionCallContent>().Single();
parent\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (5)
30Assert.Equal(expectedMessage.Contents.Count, chatMessage.Contents.Count); 31for (int j = 0; j < expectedMessage.Contents.Count; j++) 33var expectedItem = expectedMessage.Contents[j]; 34var chatItem = chatMessage.Contents[j];
Microsoft.Extensions.AI.Tests (96)
ChatCompletion\DistributedCachingChatClientTest.cs (9)
729Assert.NotSame(result2.Messages.Last().Contents[0], expectedResponse.Messages.Last().Contents[0]); 730Assert.NotSame(result2.Messages.Last().Contents[1], expectedResponse.Messages.Last().Contents[1]); 808Assert.Equal(expectedMessage.Contents.Count, actualMessage.Contents.Count); 810for (var itemIndex = 0; itemIndex < expectedMessage.Contents.Count; itemIndex++) 812var expectedItem = expectedMessage.Contents[itemIndex]; 813var actualItem = actualMessage.Contents[itemIndex];
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (2)
2090input.Select(m => new ChatMessage(m.Role, m.Contents.Select(CloneFcc).ToList()) { MessageId = m.MessageId }).ToList(); 2140var allContents = messages.SelectMany(m => m.Contents);
ChatCompletion\FunctionInvokingChatClientTests.cs (58)
431var capturedFrc = Assert.Single(toolMessage.Contents.OfType<FunctionResultContent>()); 511var frc = Assert.Single(toolMessage.Contents.OfType<FunctionResultContent>()); 595var capturedFrc = Assert.Single(toolMessage.Contents.OfType<FunctionResultContent>()); 960assistantMessage.Contents.Add(new FunctionCallContent(callId, "Func", 962toolMessage.Contents.Add(new FunctionResultContent(callId, result: callShouldThrow ? "Error: Function failed." : "Success")); 1000IEnumerable<AIContent> content = finalChat.SelectMany(m => m.Contents); 1216m => Assert.Collection(m.Contents, 1219m => Assert.Collection(m.Contents, 1222m => Assert.Equal("OK bye", Assert.IsType<TextContent>(Assert.Single(m.Contents)).Text)); 1258Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 1259Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[1].Contents)); 1260Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[2].Contents)); 1261Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[3].Contents)); 1262Assert.IsType<TextContent>(Assert.Single(response.Messages[4].Contents)); 1361AIContent[] resultContents = existingSearchResult is not null && existingSearchResult.Contents.OfType<FunctionResultContent>().ToList() is { } frcs 1385var frcs = lastMessage.Contents.OfType<FunctionResultContent>().ToList(); 1643if (!chatContents.Any(m => m.Contents.OfType<FunctionCallContent>().Any())) 2014var functionCallMessage = chat.First(m => m.Contents.Any(c => c is FunctionCallContent)); 2015var functionCallContent = functionCallMessage.Contents.OfType<FunctionCallContent>().First(); 2063Assert.Contains(response.Messages, m => m.Contents.Any(c => c is FunctionCallContent fcc && fcc.InformationalOnly)); 2064Assert.DoesNotContain(response.Messages, m => m.Contents.Any(c => c is FunctionResultContent)); 2135Assert.Contains(response.Messages, m => m.Contents.Any(c => c is FunctionResultContent frc && frc.CallId == "callId1")); 2136Assert.DoesNotContain(response.Messages, m => m.Contents.Any(c => c is FunctionResultContent frc && frc.CallId == "callId2")); 2180Assert.Contains(response.Messages, m => m.Contents.Any(c => c is FunctionCallContent fcc && fcc.CallId == "callId1" && fcc.InformationalOnly)); 2183Assert.Contains(response.Messages, m => m.Contents.Any(c => c is FunctionResultContent frc && frc.CallId == "callId1")); 2224var message = new ChatMessage(ChatRole.Assistant, CloneContents(plan[contents.Count()].Contents)) 2288ChatMessage message = new(ChatRole.Assistant, CloneContents(plan[contents.Count()].Contents)) 2434Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionB result")); 2439Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionB result")); 2530Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2539Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2635Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2637Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2643Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2645Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2738Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2740Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2746Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2748Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2840Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2842Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2848Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 2850Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 3015Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 3024Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 3116Assert.Contains(result.Messages, m => m.Contents.OfType<ToolApprovalRequestContent>().Any(frc => ((FunctionCallContent)frc.ToolCall).Name == "FunctionB")); 3119Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionA result")); 3126Assert.Contains(result.Messages, m => m.Contents.OfType<ToolApprovalRequestContent>().Any(frc => ((FunctionCallContent)frc.ToolCall).Name == "FunctionB")); 3129Assert.Contains(result.Messages, m => m.Contents.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionA result")); 3222Assert.Contains(result.Messages, m => m.Contents.OfType<ToolApprovalRequestContent>().Any(frc => ((FunctionCallContent)frc.ToolCall).Name == "FunctionB")); 3225Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 3233Assert.Contains(result.Messages, m => m.Contents.OfType<ToolApprovalRequestContent>().Any(frc => ((FunctionCallContent)frc.ToolCall).Name == "FunctionB")); 3236Assert.DoesNotContain(result.Messages, m => m.Contents.OfType<FunctionResultContent>() 3500m.Contents.Any(c => c is FunctionCallContent fcc2 && fcc2.CallId == "callId1" && fcc2.InformationalOnly)); 3504m.Contents.Any(c => c is FunctionResultContent frc2 && frc2.CallId == "callId1")); 3578m.Contents.Any(c => c is FunctionCallContent fcc2 && fcc2.CallId == "callId1" && fcc2.InformationalOnly)); 3582m.Contents.Any(c => c is FunctionResultContent frc2 && frc2.CallId == "callId2")); 3640m.Contents.Any(c => c is FunctionResultContent frc2 && frc2.CallId == "callId1"));
ChatCompletion\ImageGeneratingChatClientTests.cs (3)
337Assert.Single(message.Contents); 339var imageToolCallContent = Assert.IsType<ImageGenerationToolCallContent>(message.Contents[0]); 431var contents = response.Messages[0].Contents;
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 (12)
107Assert.DoesNotContain(msgs, m => m.Contents.Any(c => c is FunctionCallContent or FunctionResultContent or TestInputRequestContent or TestInputResponseContent)); 122Assert.Contains(m.Contents, c => c is FunctionCallContent); 123Assert.Contains(m.Contents, c => c is TestInputRequestContent); 125m => Assert.Contains(m.Contents, c => c is FunctionResultContent), 126m => Assert.Contains(m.Contents, c => c is TestInputResponseContent), 203Assert.DoesNotContain(msgList, m => m.Contents.Any(c => c is FunctionCallContent or FunctionResultContent or TestInputRequestContent or TestInputResponseContent)); 219Assert.Contains(resultList, m => m.Contents.Any(c => c is FunctionCallContent fc && fc.CallId == "call2")); 220Assert.Contains(resultList, m => m.Contents.Any(c => c is FunctionResultContent fr && fr.CallId == "call2")); 221Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is FunctionCallContent fc && fc.CallId == "call1")); 222Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is FunctionResultContent fr && fr.CallId == "call1")); 223Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is TestInputRequestContent)); 224Assert.DoesNotContain(resultList, m => m.Contents.Any(c => c is TestInputResponseContent));
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\TestJsonSerializerContext.ChatMessage.g.cs (1)
139Getter = static obj => ((global::Microsoft.Extensions.AI.ChatMessage)obj).Contents,
parent\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (5)
30Assert.Equal(expectedMessage.Contents.Count, chatMessage.Contents.Count); 31for (int j = 0; j < expectedMessage.Contents.Count; j++) 33var expectedItem = expectedMessage.Contents[j]; 34var chatItem = chatMessage.Contents[j];
Microsoft.Extensions.DataIngestion.Tests (4)
Processors\AlternativeTextEnricherTests.cs (4)
50Assert.Equal(2, materializedMessages[1].Contents.Count); 52Assert.All(materializedMessages[1].Contents, content => 137Assert.Equal(batchSize, materializedMessages[1].Contents.Count); 139Assert.All(materializedMessages[1].Contents, content =>