7 writes to Messages
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (3)
334response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, toolMap!); 351response.Messages = responseMessages; 397response.Messages = responseMessages!;
Microsoft.Extensions.AI.Abstractions.Tests (1)
ChatCompletion\ChatResponseTests.cs (1)
43response.Messages = messages;
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
SerializationChainingTests.cs (1)
26Messages =
Microsoft.Extensions.AI.OpenAI (1)
OpenAIResponsesChatClient.cs (1)
143response.Messages = [.. ToChatMessages(responseResult.OutputItems, openAIOptions)];
Microsoft.Extensions.AI.Tests (1)
ChatCompletion\FunctionInvokingChatClientTests.cs (1)
1217return Task.FromResult(new ChatResponse { Messages = messages });
285 references to Messages
Microsoft.Extensions.AI (11)
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 (5)
334response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, toolMap!); 340CopyFunctionCalls(response.Messages, ref functionCallContents); 350responseMessages.AddRange(response.Messages); 358(responseMessages ??= []).AddRange(response.Messages); 601(responseMessages ??= []).AddRange(response.Messages);
ChatCompletion\ImageGeneratingChatClient.cs (1)
85foreach (var message in response.Messages)
ChatCompletion\OpenTelemetryChatClient.cs (1)
632SerializeChatMessages(response.Messages, response.FinishReason, customContentSerializerOptions: _jsonSerializerOptions));
Microsoft.Extensions.AI.Abstractions (12)
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) 475int count = response.Messages.Count; 478CoalesceContent((List<AIContent>)response.Messages[i].Contents); 490if (response.Messages.Count != 0) 492var lastMessage = response.Messages[response.Messages.Count - 1]; 504response.Messages.Add(message); 508message = response.Messages[response.Messages.Count - 1];
Microsoft.Extensions.AI.Abstractions.Tests (118)
ChatCompletion\ChatResponseTests.cs (10)
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); 103Assert.Equal(ChatRole.Assistant, result.Messages.Single().Role); 104Assert.Equal("the message", result.Messages.Single().Text);
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (108)
55ChatMessage message = response.Messages.Single(); 95Assert.Equal(9, response.Messages.Count); 97Assert.Equal("!a", response.Messages[0].Text); 98Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 100Assert.Equal("b", response.Messages[1].Text); 101Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 103Assert.Equal("cd", response.Messages[2].Text); 104Assert.Equal(ChatRole.User, response.Messages[2].Role); 106Assert.Equal("e", response.Messages[3].Text); 107Assert.Equal(ChatRole.Assistant, response.Messages[3].Role); 109Assert.Equal("fg", response.Messages[4].Text); 110Assert.Equal(ChatRole.Tool, response.Messages[4].Role); 112Assert.Equal("h", response.Messages[5].Text); 113Assert.Equal(ChatRole.Tool, response.Messages[5].Role); 115Assert.Equal("i", response.Messages[6].Text); 116Assert.Equal(new ChatRole("human"), response.Messages[6].Role); 118Assert.Equal("jkl", response.Messages[7].Text); 119Assert.Equal(new ChatRole("human"), response.Messages[7].Role); 121Assert.Equal("m", response.Messages[8].Text); 122Assert.Equal(ChatRole.Assistant, response.Messages[8].Role); 159Assert.Equal(4, response.Messages.Count); 161Assert.Equal("Hello from Alice!", response.Messages[0].Text); 162Assert.Equal("Alice", response.Messages[0].AuthorName); 163Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 165Assert.Equal("Hi from Bob!", response.Messages[1].Text); 166Assert.Equal("Bob", response.Messages[1].AuthorName); 167Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 169Assert.Equal("Greetings from Charlie!", response.Messages[2].Text); 170Assert.Equal("Charlie", response.Messages[2].AuthorName); 171Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 173Assert.Equal("Alice again! Still Alice. And more.", response.Messages[3].Text); 174Assert.Equal("Alice", response.Messages[3].AuthorName); 175Assert.Equal(ChatRole.Assistant, response.Messages[3].Role); 209Assert.Equal(5, response.Messages.Count); 211Assert.Equal("AB", response.Messages[0].Text); 212Assert.Equal("Alice", response.Messages[0].AuthorName); 213Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 214Assert.Equal("1", response.Messages[0].MessageId); 216Assert.Equal("C", response.Messages[1].Text); 217Assert.Equal("Bob", response.Messages[1].AuthorName); 218Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 219Assert.Equal("1", response.Messages[1].MessageId); 221Assert.Equal("DE", response.Messages[2].Text); 222Assert.Equal("Bob", response.Messages[2].AuthorName); 223Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 224Assert.Equal("2", response.Messages[2].MessageId); 226Assert.Equal("F", response.Messages[3].Text); 227Assert.Equal("Bob", response.Messages[3].AuthorName); 228Assert.Equal(ChatRole.User, response.Messages[3].Role); 229Assert.Equal("2", response.Messages[3].MessageId); 231Assert.Equal("GH", response.Messages[4].Text); 232Assert.Equal("Charlie", response.Messages[4].AuthorName); 233Assert.Equal(ChatRole.Tool, response.Messages[4].Role); 234Assert.Equal("3", response.Messages[4].MessageId); 266ChatMessage message = Assert.Single(response.Messages); 296Assert.Equal(2, response.Messages.Count); 298Assert.Equal("Hello there I'm Bob speaking", response.Messages[0].Text); 299Assert.Equal("Bob", response.Messages[0].AuthorName); // Last AuthorName wins 300Assert.Equal("1", response.Messages[0].MessageId); 302Assert.Equal("Now Alice", response.Messages[1].Text); 303Assert.Equal("Alice", response.Messages[1].AuthorName); 304Assert.Equal("1", response.Messages[1].MessageId); 331Assert.Equal(2, response.Messages.Count); 333Assert.Equal("Hello there from AI", response.Messages[0].Text); 334Assert.Equal("msg1", response.Messages[0].MessageId); // Last MessageId wins 335Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 337Assert.Equal("Next message", response.Messages[1].Text); 338Assert.Equal("msg2", response.Messages[1].MessageId); 339Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 369ChatMessage message = Assert.Single(response.Messages); 399Assert.Equal(2, response.Messages.Count); 401Assert.Equal("Hello there from AI", response.Messages[0].Text); 402Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 403Assert.Equal("1", response.Messages[0].MessageId); 405Assert.Equal("User message", response.Messages[1].Text); 406Assert.Equal(ChatRole.User, response.Messages[1].Role); 407Assert.Equal("1", response.Messages[1].MessageId); 436Assert.Equal(3, response.Messages.Count); 438Assert.Equal("Hello from agent1", response.Messages[0].Text); 439Assert.Equal(new ChatRole("agent1"), response.Messages[0].Role); 441Assert.Equal("Hi from agent2", response.Messages[1].Text); 442Assert.Equal(new ChatRole("agent2"), response.Messages[1].Role); 444Assert.Equal("Assistant here", response.Messages[2].Text); 445Assert.Equal(ChatRole.Assistant, response.Messages[2].Role); 472Assert.Equal(3, response.Messages.Count); 476var msg1 = response.Messages[0]; 484var msg2 = response.Messages[1]; 492var msg3 = response.Messages[2]; 520var message = Assert.Single(response.Messages); 568Assert.Equal(4, response.Messages.Count); 571ChatMessage message1 = response.Messages[0]; 579ChatMessage message2 = response.Messages[1]; 587ChatMessage message3 = response.Messages[2]; 595ChatMessage message4 = response.Messages[3]; 670ChatMessage message = response.Messages.Single(); 709ChatMessage message = Assert.Single(response.Messages); 739ChatMessage message = Assert.Single(response.Messages); 784ChatMessage message = Assert.Single(response.Messages); 817Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).Contents)).Text); 862Assert.Single(response.Messages); 864Assert.Equal("abcdefgh", response.Messages[0].Text); 865Assert.Equal(ChatRole.Tool, response.Messages[0].Role); 866Assert.Equal(early, response.Messages[0].CreatedAt); 912Assert.Single(response.Messages); 913Assert.Equal("ab", response.Messages[0].Text); 914Assert.Equal(expected, response.Messages[0].CreatedAt); 951ChatMessage message = Assert.Single(response.Messages); 999ChatMessage message = Assert.Single(response.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)
276messages.AddRange(response1.Messages); 596messages.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.Tests (5)
ScenarioRunResultTests.cs (2)
311y 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)
672Assert.Equal(firstResponse.Messages.Select(m => m.Text), secondResponse.Messages.Select(m => m.Text)); 678Assert.NotEqual(firstResponse.Messages, thirdResponse.Messages);
ImageGeneratingChatClientIntegrationTests.cs (11)
85var contents = response.Messages.SelectMany(m => m.Contents).ToArray(); 139var imageResults = response.Messages 201chatHistory.AddRange(firstResponse.Messages); 215var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 221Assert.Single(secondResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>().SelectMany(t => t.Outputs!.OfType<DataContent>())); 251chatHistory.AddRange(firstResponse.Messages); 256chatHistory.AddRange(secondResponse.Messages); 270var secondToolResultContent = Assert.Single(secondResponse.Messages.SelectMany(m => m.Contents).OfType<ImageGenerationToolResultContent>()); 296chatHistory.AddRange(firstResponse.Messages); 301chatHistory.AddRange(secondResponse.Messages); 315var 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)
58var lastMessage = response.Messages.LastOrDefault();
MicrosoftExtensionsAIResponsesExtensions.cs (1)
108foreach (var responseItem in OpenAIResponsesChatClient.ToOpenAIResponseItems(response.Messages, options))
OpenAIResponsesChatClient.cs (2)
145if (response.Messages.LastOrDefault() is { } lastMessage && responseResult.Error is { } error) 150foreach (var message in response.Messages)
Microsoft.Extensions.AI.OpenAI.Tests (78)
OpenAIAssistantChatClientIntegrationTests.cs (3)
60ChatMessage message = Assert.Single(response.Messages); 65var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 83var toolResultContents = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().ToList();
OpenAIChatClientTests.cs (21)
163Assert.Single(response.Messages.Single().Contents); 164Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 165Assert.Equal("chatcmpl-ADx3PvAnCwJg0woha4pYsBTi3ZpOI", response.Messages.Single().MessageId); 837Assert.Single(response.Messages.Single().Contents); 838Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 839Assert.Equal("chatcmpl-ADyV17bXeSm5rzUx3n46O7m3M0o3P", response.Messages.Single().MessageId); 935Assert.Single(response.Messages.Single().Contents); 936Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1033Assert.Single(response.Messages.Single().Contents); 1034Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1147Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1165Assert.Single(response.Messages.Single().Contents); 1166FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]); 1231Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1249Assert.Single(response.Messages.Single().Contents); 1250TextContent fcc = Assert.IsType<TextContent>(response.Messages.Single().Contents[0]); 1486Assert.Single(response.Messages.Single().Contents); 1487Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1600Assert.Single(response.Messages.Single().Contents); 1601Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1602Assert.Equal("chatcmpl-BHaQ3nkeSDGhLzLya3mGbB1EXSqve", response.Messages.Single().MessageId);
OpenAIConversionTests.cs (2)
774ChatMessage message = Assert.Single(response.Messages); 805ChatMessage message = Assert.Single(response.Messages);
OpenAIResponseClientIntegrationTests.cs (16)
36ChatMessage message = Assert.Single(response.Messages); 41var toolCallContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolCallContent>().SingleOrDefault(); 54var toolResultContent = response.Messages.SelectMany(m => m.Contents).OfType<CodeInterpreterToolResultContent>().FirstOrDefault(); 78ChatMessage m = Assert.Single(response.Messages); 145Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolCallContent>()); 146Assert.NotEmpty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolResultContent>()); 147Assert.Empty(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolApprovalRequestContent>()); 195input.AddRange(response.Messages); 199response.Messages 235Assert.Empty(response.Messages); 268Assert.Empty(response.Messages); 409input.AddRange(response.Messages); 410var approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolApprovalRequestContent>()); 420var toolCall = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolCallContent>()); 423var toolResult = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolResultContent>()); 470var messages = response.Messages.ToList();
OpenAIResponseClientTests.cs (36)
161Assert.Single(response.Messages.Single().Contents); 162Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 715ChatMessage responseMessage = Assert.Single(response.Messages); 1174Assert.Equal(2, response.Messages.Count); 1175Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1176Assert.Equal("Hello!", response.Messages[0].Text); 1177Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 1178Assert.Equal(" How can I assist you today?", response.Messages[1].Text); 1299approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolApprovalRequestContent>()); 1427var message = Assert.Single(response.Messages); 1428Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1429Assert.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); 1682var message = Assert.Single(response.Messages); 1683Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1684Assert.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); 2095var message = Assert.Single(response.Messages); 2096Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 2097Assert.StartsWith("The path to the `README.md` file", response.Messages[0].Text); 2211var message = Assert.Single(response.Messages); 2281Assert.Empty(response.Messages); 2383Assert.Empty(response.Messages); 2395Assert.Single(response.Messages.Single().Contents); 2396Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 2785Assert.Single(response.Messages); 2787var message = response.Messages[0]; 3004Assert.Single(response.Messages); 3006var message = response.Messages[0]; 4611var lastMessage = response.Messages.Last(); 5195var errorContent = response.Messages.Last().Contents.OfType<ErrorContent>().FirstOrDefault(); 5250var userMessage = response.Messages.FirstOrDefault(m => m.Role == ChatRole.User); 5259var assistantMessage = response.Messages.LastOrDefault(m => m.Role == ChatRole.Assistant); 5313var userMessage = response.Messages.FirstOrDefault(m => m.Role == ChatRole.User); 5322var assistantMessage = response.Messages.LastOrDefault(m => m.Role == ChatRole.Assistant); 5397Assert.Single(response.Messages); 5398Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 5400var contents = response.Messages[0].Contents;
Microsoft.Extensions.AI.Tests (24)
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 (4)
1175var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList(); 1257var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList();
ChatCompletion\FunctionInvokingChatClientTests.cs (9)
784Assert.Collection(response.Messages, 825Assert.Equal(5, response.Messages.Count); 827Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 828Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[1].Contents)); 829Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[2].Contents)); 830Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[3].Contents)); 831Assert.IsType<TextContent>(Assert.Single(response.Messages[4].Contents)); 1501chat.AddRange(result.Messages); 1565chat.AddRange(result.Messages);
ChatCompletion\ImageGeneratingChatClientTests.cs (3)
56Assert.Equal("test response", response.Messages[0].Text); 335Assert.Single(response.Messages); 336var message = response.Messages[0];
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)";