12 writes to Messages
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (3)
365response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, approvalRequiredFunctions); 382response.Messages = responseMessages; 428response.Messages = responseMessages!;
Microsoft.Extensions.AI.Abstractions (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponse.g.cs (1)
61Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages = value!,
Microsoft.Extensions.AI.Abstractions.Tests (2)
ChatCompletion\ChatResponseTests.cs (1)
43response.Messages = messages;
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponse.g.cs (1)
59Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages = value!,
Microsoft.Extensions.AI.Evaluation.Reporting (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponse.g.cs (1)
61Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages = value!,
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponse.g.cs (1)
61Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages = value!,
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
SerializationChainingTests.cs (1)
26Messages =
Microsoft.Extensions.AI.OpenAI (1)
OpenAIResponsesChatClient.cs (1)
161response.Messages = [.. ToChatMessages(responseResult.OutputItems, openAIOptions)];
Microsoft.Extensions.AI.Tests (2)
ChatCompletion\FunctionInvokingChatClientTests.cs (1)
1648return Task.FromResult(new ChatResponse { Messages = messages });
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponse.g.cs (1)
59Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages = value!,
378 references to Messages
Microsoft.AspNetCore.Components.AI (2)
Engine\UIAgent.cs (2)
155foreach (var msg in response.Messages) 160UIAgentLog.AddedToHistory(_logger, response.Messages.Count);
Microsoft.Extensions.AI (12)
ChatCompletion\ChatResponse{T}.cs (4)
36: base(Throw.IfNull(response).Messages) 126var json = Messages.Count > 0 ? Messages[Messages.Count - 1].Text : string.Empty;
ChatCompletion\FunctionInvokingChatClient.cs (6)
351MarkServerHandledFunctionCalls(response.Messages); 365response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, approvalRequiredFunctions); 371CopyFunctionCalls(response.Messages, ref functionCallContents); 381responseMessages.AddRange(response.Messages); 389(responseMessages ??= []).AddRange(response.Messages); 675(responseMessages ??= []).AddRange(response.Messages);
ChatCompletion\ImageGeneratingChatClient.cs (1)
86foreach (var message in response.Messages)
ChatCompletion\OpenTelemetryChatClient.cs (1)
545OtelMessageSerializer.SerializeChatMessages(response.Messages, response.FinishReason, customContentSerializerOptions: _jsonSerializerOptions));
Microsoft.Extensions.AI.Abstractions (13)
ChatCompletion\ChatResponse.cs (2)
37Messages.Add(message); 58/// instances in <see cref="Messages"/>.
ChatCompletion\ChatResponseExtensions.cs (10)
37listConcrete.AddRange(response.Messages); 41foreach (var message in response.Messages) 528int count = response.Messages.Count; 531CoalesceContent((List<AIContent>)response.Messages[i].Contents); 543if (response.Messages.Count != 0) 545var lastMessage = response.Messages[response.Messages.Count - 1]; 557response.Messages.Add(message); 561message = response.Messages[response.Messages.Count - 1];
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponse.g.cs (1)
60Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages,
Microsoft.Extensions.AI.Abstractions.Tests (133)
ChatCompletion\ChatResponseTests.cs (19)
20Assert.Empty(response.Messages); 24Assert.Empty(response.Messages); 34Assert.NotNull(response.Messages); 35Assert.Same(response.Messages, response.Messages); 39Assert.Same(messages, response.Messages); 42Assert.NotSame(messages, response.Messages); 44Assert.Same(messages, response.Messages); 104Assert.Equal(ChatRole.Assistant, result.Messages.Single().Role); 105Assert.Equal("the message", result.Messages.Single().Text); 142Assert.Equal(ChatRole.Assistant, result.Messages.Single().Role); 143Assert.Equal("the message", result.Messages.Single().Text); 203Assert.Single(result.Messages); 204Assert.Equal(ChatRole.Assistant, result.Messages[0].Role); 205Assert.Equal("the message", result.Messages[0].Text); 206Assert.Equal("bot", result.Messages[0].AuthorName); 207Assert.Equal("msg1", result.Messages[0].MessageId); 208Assert.NotNull(result.Messages[0].AdditionalProperties); 209Assert.Equal("msgVal", result.Messages[0].AdditionalProperties!["msgKey"]?.ToString());
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (113)
54ChatMessage message = response.Messages.Single(); 94Assert.Equal(9, response.Messages.Count); 96Assert.Equal("!a", response.Messages[0].Text); 97Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 99Assert.Equal("b", response.Messages[1].Text); 100Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 102Assert.Equal("cd", response.Messages[2].Text); 103Assert.Equal(ChatRole.User, response.Messages[2].Role); 105Assert.Equal("e", response.Messages[3].Text); 106Assert.Equal(ChatRole.Assistant, response.Messages[3].Role); 108Assert.Equal("fg", response.Messages[4].Text); 109Assert.Equal(ChatRole.Tool, response.Messages[4].Role); 111Assert.Equal("h", response.Messages[5].Text); 112Assert.Equal(ChatRole.Tool, response.Messages[5].Role); 114Assert.Equal("i", response.Messages[6].Text); 115Assert.Equal(new ChatRole("human"), response.Messages[6].Role); 117Assert.Equal("jkl", response.Messages[7].Text); 118Assert.Equal(new ChatRole("human"), response.Messages[7].Role); 120Assert.Equal("m", response.Messages[8].Text); 121Assert.Equal(ChatRole.Assistant, response.Messages[8].Role); 158Assert.Equal(4, response.Messages.Count); 160Assert.Equal("Hello from Alice!", response.Messages[0].Text); 161Assert.Equal("Alice", response.Messages[0].AuthorName); 162Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 164Assert.Equal("Hi from Bob!", response.Messages[1].Text); 165Assert.Equal("Bob", response.Messages[1].AuthorName); 166Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 168Assert.Equal("Greetings from Charlie!", response.Messages[2].Text); 169Assert.Equal("Charlie", response.Messages[2].AuthorName); 170Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 172Assert.Equal("Alice again! Still Alice. And more.", response.Messages[3].Text); 173Assert.Equal("Alice", response.Messages[3].AuthorName); 174Assert.Equal(ChatRole.Assistant, response.Messages[3].Role); 208Assert.Equal(5, response.Messages.Count); 210Assert.Equal("AB", response.Messages[0].Text); 211Assert.Equal("Alice", response.Messages[0].AuthorName); 212Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 213Assert.Equal("1", response.Messages[0].MessageId); 215Assert.Equal("C", response.Messages[1].Text); 216Assert.Equal("Bob", response.Messages[1].AuthorName); 217Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 218Assert.Equal("1", response.Messages[1].MessageId); 220Assert.Equal("DE", response.Messages[2].Text); 221Assert.Equal("Bob", response.Messages[2].AuthorName); 222Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 223Assert.Equal("2", response.Messages[2].MessageId); 225Assert.Equal("F", response.Messages[3].Text); 226Assert.Equal("Bob", response.Messages[3].AuthorName); 227Assert.Equal(ChatRole.User, response.Messages[3].Role); 228Assert.Equal("2", response.Messages[3].MessageId); 230Assert.Equal("GH", response.Messages[4].Text); 231Assert.Equal("Charlie", response.Messages[4].AuthorName); 232Assert.Equal(ChatRole.Tool, response.Messages[4].Role); 233Assert.Equal("3", response.Messages[4].MessageId); 265ChatMessage message = Assert.Single(response.Messages); 295Assert.Equal(2, response.Messages.Count); 297Assert.Equal("Hello there I'm Bob speaking", response.Messages[0].Text); 298Assert.Equal("Bob", response.Messages[0].AuthorName); // Last AuthorName wins 299Assert.Equal("1", response.Messages[0].MessageId); 301Assert.Equal("Now Alice", response.Messages[1].Text); 302Assert.Equal("Alice", response.Messages[1].AuthorName); 303Assert.Equal("1", response.Messages[1].MessageId); 330Assert.Equal(2, response.Messages.Count); 332Assert.Equal("Hello there from AI", response.Messages[0].Text); 333Assert.Equal("msg1", response.Messages[0].MessageId); // Last MessageId wins 334Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 336Assert.Equal("Next message", response.Messages[1].Text); 337Assert.Equal("msg2", response.Messages[1].MessageId); 338Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 368ChatMessage message = Assert.Single(response.Messages); 398Assert.Equal(2, response.Messages.Count); 400Assert.Equal("Hello there from AI", response.Messages[0].Text); 401Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 402Assert.Equal("1", response.Messages[0].MessageId); 404Assert.Equal("User message", response.Messages[1].Text); 405Assert.Equal(ChatRole.User, response.Messages[1].Role); 406Assert.Equal("1", response.Messages[1].MessageId); 435Assert.Equal(3, response.Messages.Count); 437Assert.Equal("Hello from agent1", response.Messages[0].Text); 438Assert.Equal(new ChatRole("agent1"), response.Messages[0].Role); 440Assert.Equal("Hi from agent2", response.Messages[1].Text); 441Assert.Equal(new ChatRole("agent2"), response.Messages[1].Role); 443Assert.Equal("Assistant here", response.Messages[2].Text); 444Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 471Assert.Equal(3, response.Messages.Count); 475var msg1 = response.Messages[0]; 483var msg2 = response.Messages[1]; 491var msg3 = response.Messages[2]; 519var message = Assert.Single(response.Messages); 567Assert.Equal(4, response.Messages.Count); 570ChatMessage message1 = response.Messages[0]; 578ChatMessage message2 = response.Messages[1]; 586ChatMessage message3 = response.Messages[2]; 594ChatMessage message4 = response.Messages[3]; 669ChatMessage message = response.Messages.Single(); 708ChatMessage message = Assert.Single(response.Messages); 738ChatMessage message = Assert.Single(response.Messages); 783ChatMessage message = Assert.Single(response.Messages); 816Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).Contents)).Text); 861Assert.Single(response.Messages); 863Assert.Equal("abcdefgh", response.Messages[0].Text); 864Assert.Equal(ChatRole.Tool, response.Messages[0].Role); 865Assert.Equal(early, response.Messages[0].CreatedAt); 911Assert.Single(response.Messages); 912Assert.Equal("ab", response.Messages[0].Text); 913Assert.Equal(expected, response.Messages[0].CreatedAt); 950ChatMessage message = Assert.Single(response.Messages); 998ChatMessage message = Assert.Single(response.Messages); 1041ChatMessage message = Assert.Single(response.Messages); 1072ChatMessage message = Assert.Single(response.Messages); 1092ChatMessage message = Assert.Single(response.Messages); 1132var ws1First = Assert.Single(response1.Messages.SelectMany(m => m.Contents).OfType<WebSearchToolCallContent>()); 1138var ws1Second = Assert.Single(response2.Messages.SelectMany(m => m.Contents).OfType<WebSearchToolCallContent>());
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponse.g.cs (1)
58Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages,
Microsoft.Extensions.AI.Evaluation (6)
ChatResponseExtensions.cs (6)
21/// (present within the <see cref="ChatMessage.Contents"/> of the <see cref="ChatResponse.Messages"/>) that are not 22/// <see cref="TextContent"/>s. Any <see cref="ChatResponse.Messages"/> that contain no <see cref="TextContent"/>s 23/// will be skipped and will not be rendered. If none of the <see cref="ChatResponse.Messages"/> include any 27/// The rendered <see cref="ChatResponse.Messages"/> are each prefixed with the <see cref="ChatMessage.Role"/> and 29/// <see cref="ChatResponse.Messages"/>s are also always separated by new line characters in the returned string. 38return response.Messages.RenderText();
Microsoft.Extensions.AI.Evaluation.Integration.Tests (2)
SafetyEvaluatorTests.cs (2)
275messages.AddRange(response1.Messages); 595messages.AddRange(response1.Messages);
Microsoft.Extensions.AI.Evaluation.Quality (7)
ChatResponseExtensions.cs (2)
18return modelResponse.Messages.RenderAsJson(options); 29foreach (AIContent content in modelResponse.Messages.SelectMany(m => m.Contents))
IntentResolutionEvaluator.cs (2)
98if (!modelResponse.Messages.Any()) 121modelResponse.Messages.SelectMany(m => m.Contents).OfType<FunctionCallContent>();
TaskAdherenceEvaluator.cs (2)
97if (!modelResponse.Messages.Any()) 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.ChatResponse.g.cs (1)
60Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages,
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponse.g.cs (1)
60Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages,
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (5)
ScenarioRunResultTests.cs (2)
427y is not null && x.Messages.SequenceEqual(y.Messages, ChatMessageComparer.Instance);
SerializationChainingTests.cs (3)
45Assert.Single(resp.ModelResponse.Messages); 46Assert.Equal(ChatRole.User, resp.ModelResponse.Messages[0].Role); 47Assert.Equal("A user message", resp.ModelResponse.Messages[0].Text);
Microsoft.Extensions.AI.Evaluation.Safety (2)
ChatResponseExtensions.cs (1)
9=> response.Messages.ContainsImageWithSupportedFormat();
ContentSafetyEvaluator.cs (1)
102IEnumerable<ChatMessage> conversation = [.. messages, .. modelResponse.Messages];
Microsoft.Extensions.AI.Integration.Tests (16)
ChatClientIntegrationTests.cs (4)
663Assert.Equal(firstResponse.Messages.Select(m => m.Text), secondResponse.Messages.Select(m => m.Text)); 669Assert.NotEqual(firstResponse.Messages, thirdResponse.Messages);
ImageGeneratingChatClientIntegrationTests.cs (11)
84var contents = response.Messages.SelectMany(m => m.Contents).ToArray(); 138var imageResults = response.Messages 200chatHistory.AddRange(firstResponse.Messages); 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>())); 250chatHistory.AddRange(firstResponse.Messages); 255chatHistory.AddRange(secondResponse.Messages); 269var secondToolResultContent = Assert.Single(secondResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 295chatHistory.AddRange(firstResponse.Messages); 300chatHistory.AddRange(secondResponse.Messages); 314var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>());
PromptBasedFunctionCallingChatClient.cs (1)
89var message = result.Messages.First();
Microsoft.Extensions.AI.OpenAI (4)
MicrosoftExtensionsAIChatExtensions.cs (1)
62var lastMessage = response.Messages.LastOrDefault();
MicrosoftExtensionsAIResponsesExtensions.cs (1)
115foreach (var responseItem in OpenAIResponsesChatClient.ToOpenAIResponseItems(response.Messages, options))
OpenAIResponsesChatClient.cs (2)
163if (response.Messages.LastOrDefault() is { } lastMessage && responseResult.Error is { } error) 168foreach (var message in response.Messages)
Microsoft.Extensions.AI.OpenAI.Tests (105)
OpenAIAssistantChatClientIntegrationTests.cs (3)
61ChatMessage message = Assert.Single(response.Messages); 66var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 84var toolResultContents = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().ToList();
OpenAIChatClientTests.cs (22)
165Assert.Single(response.Messages.Single().Contents); 166Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 167Assert.Equal("chatcmpl-ADx3PvAnCwJg0woha4pYsBTi3ZpOI", response.Messages.Single().MessageId); 839Assert.Single(response.Messages.Single().Contents); 840Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 841Assert.Equal("chatcmpl-ADyV17bXeSm5rzUx3n46O7m3M0o3P", response.Messages.Single().MessageId); 937Assert.Single(response.Messages.Single().Contents); 938Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1035Assert.Single(response.Messages.Single().Contents); 1036Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1149Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1167Assert.Single(response.Messages.Single().Contents); 1168FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]); 1234Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1252Assert.Single(response.Messages.Single().Contents); 1253TextContent fcc = Assert.IsType<TextContent>(response.Messages.Single().Contents[0]); 1489Assert.Single(response.Messages.Single().Contents); 1490Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1603Assert.Single(response.Messages.Single().Contents); 1604Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1605Assert.Equal("chatcmpl-BHaQ3nkeSDGhLzLya3mGbB1EXSqve", response.Messages.Single().MessageId); 1913var message = response.Messages.Single();
OpenAIConversionTests.cs (2)
904ChatMessage message = Assert.Single(response.Messages); 935ChatMessage message = Assert.Single(response.Messages);
OpenAIHostedFileClientIntegrationTests.cs (3)
283foreach (var msg in response.Messages) 353foreach (var msg in response.Messages) 401foreach (var msg in setupResponse.Messages)
OpenAIResponseClientIntegrationTests.cs (25)
44ChatMessage message = Assert.Single(response.Messages); 49var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 62var toolResultContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().FirstOrDefault(); 95ChatMessage m = Assert.Single(response.Messages); 162ChatMessage m = Assert.Single(response.Messages); 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>()); 283input.AddRange(response.Messages); 287response.Messages 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(); 364Assert.Empty(response.Messages); 397Assert.Empty(response.Messages); 539input.AddRange(response.Messages); 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>()); 601var messages = response.Messages.ToList(); 712var reasoningContent = response1.Messages 794var reasoningContent = response1.Messages 878var rawJsons = response.Messages 988var rawJsons = response.Messages 1038var rawJsons = response.Messages
OpenAIResponseClientTests.cs (50)
163Assert.Single(response.Messages.Single().Contents); 164Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 906ChatMessage responseMessage = Assert.Single(response.Messages); 1374Assert.Equal(2, response.Messages.Count); 1375Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1376Assert.Equal("Hello!", response.Messages[0].Text); 1377Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 1378Assert.Equal(" How can I assist you today?", response.Messages[1].Text); 1499approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<ToolApprovalRequestContent>()); 1627var message = Assert.Single(response.Messages); 1628Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1629Assert.Equal("The `README.md` file for `Microsoft.Extensions.AI.Abstractions` is located at:\n\n```\nsrc/Libraries/Microsoft.Extensions.AI.Abstractions/README.md\n```\n\nThis file provides an overview of the `Microsoft.Extensions.AI.Abstractions` package, including installation instructions and usage examples for its core interfaces like `IChatClient` and `IEmbeddingGenerator`.", response.Messages[0].Text); 1771var message = Assert.Single(response.Messages); 2004var message = Assert.Single(response.Messages); 2005Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 2006Assert.Equal("The `README.md` file for `Microsoft.Extensions.AI.Abstractions` is located at:\n\n```\nsrc/Libraries/Microsoft.Extensions.AI.Abstractions/README.md\n```\n\nThis file includes an overview, installation instructions, and usage examples related to the package.", response.Messages[0].Text); 2415var message = Assert.Single(response.Messages); 2416Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 2417Assert.StartsWith("The path to the `README.md` file", response.Messages[0].Text); 2624var message = Assert.Single(response.Messages); 2625Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 2626Assert.Equal("The tool encountered an error during execution.", response.Messages[0].Text); 2728var message = Assert.Single(response.Messages); 2886Assert.Empty(response.Messages); 2988Assert.Empty(response.Messages); 3000Assert.Single(response.Messages.Single().Contents); 3001Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 3390Assert.Single(response.Messages); 3392var message = response.Messages[0]; 3610Assert.Single(response.Messages); 3612var message = response.Messages[0]; 3735Assert.Single(response.Messages); 3737var message = response.Messages[0]; 5473var lastMessage = response.Messages.Last(); 6086Assert.Single(response.Messages); 6087var message = response.Messages[0]; 6172var errorContent = response.Messages.Last().Contents.OfType<ErrorContent>().FirstOrDefault(); 6227var userMessage = response.Messages.FirstOrDefault(m => m.Role == ChatRole.User); 6236var assistantMessage = response.Messages.LastOrDefault(m => m.Role == ChatRole.Assistant); 6290var userMessage = response.Messages.FirstOrDefault(m => m.Role == ChatRole.User); 6299var assistantMessage = response.Messages.LastOrDefault(m => m.Role == ChatRole.Assistant); 6374Assert.Single(response.Messages); 6375Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 6377var contents = response.Messages[0].Contents; 6851var message = Assert.Single(response.Messages); 7133Assert.Single(response.Messages); 7135var message = response.Messages[0]; 7301var message = Assert.Single(response.Messages); 8841var call = Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 8948var coalesced = response.Messages[0].Contents.OfType<FunctionCallContent>().Single();
Microsoft.Extensions.AI.Tests (69)
ChatCompletion\DistributedCachingChatClientTest.cs (6)
729Assert.NotSame(result2.Messages.Last().Contents[0], expectedResponse.Messages.Last().Contents[0]); 730Assert.NotSame(result2.Messages.Last().Contents[1], expectedResponse.Messages.Last().Contents[1]); 803ChatMessage expectedMessage = expected.Messages.Last(); 804ChatMessage actualMessage = actual.Messages.Last();
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (6)
1437AssertExtensions.EqualMessageLists(expectedOutput, result.Messages.ToList()); 1448AssertExtensions.EqualMessageLists(expectedOutput, result.Messages.ToList()); 1990var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList(); 2072var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList();
ChatCompletion\FunctionInvokingChatClientTests.cs (49)
430var toolMessage = response.Messages.First(m => m.Role == ChatRole.Tool); 510var toolMessage = response.Messages.First(m => m.Role == ChatRole.Tool); 594var toolMessage = response.Messages.First(m => m.Role == ChatRole.Tool); 1215Assert.Collection(response.Messages, 1256Assert.Equal(5, response.Messages.Count); 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)); 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")); 2237chat.AddRange(result.Messages); 2301chat.AddRange(result.Messages); 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>() 3499Assert.Contains(response.Messages, m => 3503Assert.Contains(response.Messages, m => 3577Assert.Contains(response.Messages, m => 3581Assert.Contains(response.Messages, m => 3639Assert.Contains(response.Messages, m =>
ChatCompletion\ImageGeneratingChatClientTests.cs (5)
56Assert.Equal("test response", response.Messages[0].Text); 335Assert.Single(response.Messages); 336var message = response.Messages[0]; 430Assert.Single(response.Messages); 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)";
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponse.g.cs (1)
58Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponse)obj).Messages,