7 writes to Messages
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (3)
332response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, toolMap!); 349response.Messages = responseMessages; 395response.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)
159response.Messages = [.. ToChatMessages(openAIResponse.OutputItems, openAIOptions)];
Microsoft.Extensions.AI.Tests (1)
ChatCompletion\FunctionInvokingChatClientTests.cs (1)
1216return 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)
332response.Messages = ReplaceFunctionCallsWithApprovalRequests(response.Messages, toolMap!); 338CopyFunctionCalls(response.Messages, ref functionCallContents); 348responseMessages.AddRange(response.Messages); 356(responseMessages ??= []).AddRange(response.Messages); 598(responseMessages ??= []).AddRange(response.Messages);
ChatCompletion\ImageGeneratingChatClient.cs (1)
85foreach (var message in response.Messages)
ChatCompletion\OpenTelemetryChatClient.cs (1)
624SerializeChatMessages(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 (113)
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 (103)
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); 482Assert.Equal(4, response.Messages.Count); 485ChatMessage message1 = response.Messages[0]; 493ChatMessage message2 = response.Messages[1]; 501ChatMessage message3 = response.Messages[2]; 509ChatMessage message4 = response.Messages[3]; 584ChatMessage message = response.Messages.Single(); 623ChatMessage message = Assert.Single(response.Messages); 653ChatMessage message = Assert.Single(response.Messages); 698ChatMessage message = Assert.Single(response.Messages); 731Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).Contents)).Text); 772Assert.Single(response.Messages); 774Assert.Equal("abcdefg", response.Messages[0].Text); 775Assert.Equal(ChatRole.Tool, response.Messages[0].Role); 776Assert.Equal(late, response.Messages[0].CreatedAt); 820Assert.Single(response.Messages); 821Assert.Equal("ab", response.Messages[0].Text); 822Assert.Equal(expected, response.Messages[0].CreatedAt); 859ChatMessage message = Assert.Single(response.Messages); 907ChatMessage message = Assert.Single(response.Messages);
Microsoft.Extensions.AI.AzureAIInference.Tests (11)
AzureAIInferenceChatClientTests.cs (11)
157Assert.Single(response.Messages.Single().Contents); 158Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 159Assert.Equal("chatcmpl-ADx3PvAnCwJg0woha4pYsBTi3ZpOI", response.Messages.Single().MessageId); 1006Assert.Single(response.Messages.Single().Contents); 1007Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1008Assert.Equal("chatcmpl-ADyV17bXeSm5rzUx3n46O7m3M0o3P", response.Messages.Single().MessageId); 1141Assert.Single(response.Messages.Single().Contents); 1142Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1258Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1266Assert.Single(response.Messages.Single().Contents); 1267FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().Contents[0]);
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)
99outputItems: OpenAIResponsesChatClient.ToOpenAIResponseItems(response.Messages, options),
OpenAIResponsesChatClient.cs (2)
161if (response.Messages.LastOrDefault() is { } lastMessage && openAIResponse.Error is { } error) 166foreach (var message in response.Messages)
Microsoft.Extensions.AI.OpenAI.Tests (72)
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)
616ChatMessage message = Assert.Single(response.Messages); 647ChatMessage 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 (30)
162Assert.Single(response.Messages.Single().Contents); 163Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 819Assert.Equal(2, response.Messages.Count); 820Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 821Assert.Equal("Hello!", response.Messages[0].Text); 822Assert.Equal(ChatRole.Assistant, response.Messages[1].Role); 823Assert.Equal(" How can I assist you today?", response.Messages[1].Text); 946approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.Contents).OfType<McpServerToolApprovalRequestContent>()); 1075var message = Assert.Single(response.Messages); 1076Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1077Assert.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); 1331var message = Assert.Single(response.Messages); 1332Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1333Assert.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); 1745var message = Assert.Single(response.Messages); 1746Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 1747Assert.StartsWith("The path to the `README.md` file", response.Messages[0].Text); 1849Assert.Empty(response.Messages); 1951Assert.Empty(response.Messages); 1963Assert.Single(response.Messages.Single().Contents); 1964Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 2354Assert.Single(response.Messages); 2356var message = response.Messages[0]; 2574Assert.Single(response.Messages); 2576var message = response.Messages[0]; 4186var lastMessage = response.Messages.Last(); 4637var errorContent = response.Messages.Last().Contents.OfType<ErrorContent>().FirstOrDefault(); 4714Assert.Single(response.Messages); 4715Assert.Equal(ChatRole.Assistant, response.Messages[0].Role); 4717var contents = response.Messages[0].Contents;
Microsoft.Extensions.AI.Tests (24)
ChatCompletion\DistributedCachingChatClientTest.cs (6)
728Assert.NotSame(result2.Messages.Last().Contents[0], expectedResponse.Messages.Last().Contents[0]); 729Assert.NotSame(result2.Messages.Last().Contents[1], expectedResponse.Messages.Last().Contents[1]); 805ChatMessage expectedMessage = expected.Messages.Last(); 806ChatMessage actualMessage = actual.Messages.Last();
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (4)
906var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList(); 988var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList();
ChatCompletion\FunctionInvokingChatClientTests.cs (9)
783Assert.Collection(response.Messages, 824Assert.Equal(5, response.Messages.Count); 826Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].Contents)); 827Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[1].Contents)); 828Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[2].Contents)); 829Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[3].Contents)); 830Assert.IsType<TextContent>(Assert.Single(response.Messages[4].Contents)); 1286chat.AddRange(result.Messages); 1350chat.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)";