21 writes to Contents
Microsoft.Extensions.AI (5)
Microsoft.Extensions.AI.Abstractions (1)
Microsoft.Extensions.AI.Abstractions.Tests (4)
Microsoft.Extensions.AI.Evaluation.Integration.Tests (6)
Microsoft.Extensions.AI.Evaluation.Reporting (1)
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
Microsoft.Extensions.AI.Tests (2)
462 references to Contents
Microsoft.AspNetCore.Components.AI (1)
Microsoft.Extensions.AI (24)
Microsoft.Extensions.AI.Abstractions (6)
Microsoft.Extensions.AI.Abstractions.Tests (113)
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>());
Microsoft.Extensions.AI.Evaluation (4)
Microsoft.Extensions.AI.Evaluation.Quality (4)
Microsoft.Extensions.AI.Evaluation.Reporting (1)
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Microsoft.Extensions.AI.Evaluation.Safety (3)
Microsoft.Extensions.AI.Integration.Tests (18)
Microsoft.Extensions.AI.OpenAI (45)
Microsoft.Extensions.AI.OpenAI.Tests (142)
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>());
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();
Microsoft.Extensions.AI.Tests (96)
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"));
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));
Microsoft.Extensions.DataIngestion.Tests (4)