16 writes to Contents
Microsoft.Extensions.AI (5)
ChatCompletion\FunctionInvokingChatClient.cs (3)
1498
newMessage.
Contents
= keptContents;
1657
functionCallMessage.
Contents
= [resultWithRequestMessage.Response.FunctionCall];
1765
message.
Contents
= [.. message.Contents];
ChatCompletion\ImageGeneratingChatClient.cs (2)
88
message.
Contents
= requestState.ReplaceImageGenerationFunctionResults(message.Contents);
230
newMessage.
Contents
= newContents;
Microsoft.Extensions.AI.Abstractions.Tests (3)
ChatCompletion\ChatMessageTests.cs (3)
180
message.
Contents
= contents;
184
message.
Contents
= contents;
187
message.
Contents
= null;
Microsoft.Extensions.AI.Evaluation.Integration.Tests (6)
SafetyEvaluatorTests.cs (6)
339
Contents
= [
377
Contents
= [
411
Contents
= [
424
Contents
= [
460
Contents
= [
473
Contents
= [
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (1)
SerializationChainingTests.cs (1)
31
Contents
= [new TextContent("A user message")]
Microsoft.Extensions.AI.Tests (1)
ChatCompletion\DistributedCachingChatClientTest.cs (1)
52
Contents
= [new FunctionCallContent("someCallId", "functionName", new Dictionary<string, object?>
361 references to Contents
Microsoft.Extensions.AI (22)
ChatCompletion\FunctionInvokingChatClient.cs (13)
656
Contents = message.
Contents
,
807
messages.Exists(static m => m.
Contents
.Any(static c => c is FunctionApprovalRequestContent or FunctionApprovalResponseContent));
817
any |= CopyFunctionCalls(messages[i].
Contents
, ref functionCalls);
1073
if (added.Any(static m => m.
Contents
.Any(static c => c is FunctionResultContent { Exception: not null })))
1081
.SelectMany(m => m.
Contents
.OfType<FunctionResultContent>())
1462
for (int j = 0; j < message.
Contents
.Count; j++)
1464
var content = message.
Contents
[j];
1492
if (keptContents?.Count != message.
Contents
.Count)
1628
currentMessage.
Contents
.Add(resultWithRequestMessage.Response.FunctionCall);
1739
var content = messages[i].
Contents
;
1765
message.Contents = [.. message.
Contents
];
1767
var functionCall = (FunctionCallContent)message.
Contents
[contentIndex];
1769
message.
Contents
[contentIndex] = new FunctionApprovalRequestContent(functionCall.CallId, functionCall);
ChatCompletion\ImageGeneratingChatClient.cs (4)
88
message.Contents = requestState.ReplaceImageGenerationFunctionResults(message.
Contents
);
171
for (int contentIndex = 0; contentIndex < message.
Contents
.Count; contentIndex++)
173
var content = message.
Contents
[contentIndex];
178
newContents ??= CopyList(message.
Contents
, contentIndex);
ChatCompletion\OpenTelemetryChatClient.cs (1)
247
foreach (AIContent content in message.
Contents
)
ChatReduction\MessageCountingChatReducer.cs (1)
57
else if (!message.
Contents
.Any(m => m is FunctionCallContent or FunctionResultContent))
ChatReduction\SummarizingChatReducer.cs (2)
161
if (!unsummarizedMessages[indexOfFirstMessageToKeep - 1].
Contents
.Any(IsToolRelatedContent))
225
if (!message.
Contents
.Any(IsToolRelatedContent))
ToolReduction\EmbeddingToolReductionStrategy.cs (1)
55
var contents = message.
Contents
;
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatMessage.cs (2)
77
/// This property concatenates the text of all <see cref="TextContent"/> objects in <see cref="
Contents
"/>.
80
public string Text =>
Contents
.ConcatText();
ChatCompletion\ChatResponse.cs (1)
152
Contents = message.
Contents
,
ChatCompletion\ChatResponseExtensions.cs (2)
478
CoalesceContent((List<AIContent>)response.Messages[i].
Contents
);
577
message.
Contents
.Add(content);
Microsoft.Extensions.AI.Abstractions.Tests (88)
AssertExtensions.cs (5)
30
Assert.Equal(expectedMessage.
Contents
.Count, chatMessage.
Contents
.Count);
31
for (int j = 0; j < expectedMessage.
Contents
.Count; j++)
33
var expectedItem = expectedMessage.
Contents
[j];
34
var chatItem = chatMessage.
Contents
[j];
ChatCompletion\ChatMessageTests.cs (37)
19
Assert.Empty(message.
Contents
);
23
Assert.NotNull(message.
Contents
);
24
Assert.Same(message.
Contents
, message.
Contents
);
25
Assert.Empty(message.
Contents
);
40
Assert.Same(message.
Contents
, message.
Contents
);
43
Assert.Empty(message.
Contents
);
47
Assert.Single(message.
Contents
);
48
TextContent tc = Assert.IsType<TextContent>(message.
Contents
[0]);
66
Assert.Empty(message.
Contents
);
70
Assert.Empty(message.
Contents
);
74
Assert.Empty(message.
Contents
);
78
Assert.Empty(message.
Contents
);
97
Assert.Same(message.
Contents
, message.
Contents
);
100
Assert.Empty(message.
Contents
);
105
Assert.Equal(messageCount, message.
Contents
.Count);
108
TextContent tc = Assert.IsType<TextContent>(message.
Contents
[i]);
154
TextContent textContent = Assert.IsType<TextContent>(message.
Contents
[3]);
159
((TextContent)message.
Contents
[3]).Text = "text-3";
170
Assert.IsType<List<AIContent>>(new ChatMessage().
Contents
);
177
Assert.Empty(message.
Contents
);
182
Assert.Same(contents, message.
Contents
);
185
Assert.Same(contents, message.
Contents
);
188
Assert.NotNull(message.
Contents
);
189
Assert.NotSame(contents, message.
Contents
);
190
Assert.Empty(message.
Contents
);
281
((TextContent)chatMessage.
Contents
[0]).Text = "content-1-override"; // Override the content of the first text content item that has the "content-1" content
293
Assert.NotNull(deserializedMessage.
Contents
);
294
Assert.Equal(items.Count, deserializedMessage.
Contents
.Count);
296
var textContent = deserializedMessage.
Contents
[0] as TextContent;
303
var dataContent = deserializedMessage.
Contents
[1] as DataContent;
311
dataContent = deserializedMessage.
Contents
[2] as DataContent;
319
textContent = deserializedMessage.
Contents
[3] as TextContent;
326
var functionCallContent = deserializedMessage.
Contents
[4] as FunctionCallContent;
334
var functionResultContent = deserializedMessage.
Contents
[5] as FunctionResultContent;
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (40)
672
Assert.Equal(expected.Count + (gapLength * ((numSequences - 1) + (gapBeginningEnd ? 2 : 0))), message.
Contents
.Count);
674
TextContent[] contents = message.
Contents
.OfType<TextContent>().ToArray();
709
Assert.Equal(8, message.
Contents
.Count);
710
Assert.Equal("ABC", Assert.IsType<TextContent>(message.
Contents
[0]).Text);
711
Assert.Equal("DEF", Assert.IsType<TextReasoningContent>(message.
Contents
[1]).Text);
712
Assert.Equal("GH", Assert.IsType<TextContent>(message.
Contents
[2]).Text);
713
Assert.Equal("IJ", Assert.IsType<TextReasoningContent>(message.
Contents
[3]).Text);
714
Assert.Equal("K", Assert.IsType<TextContent>(message.
Contents
[4]).Text);
715
Assert.Equal("L", Assert.IsType<TextReasoningContent>(message.
Contents
[5]).Text);
716
Assert.Equal("MN", Assert.IsType<TextContent>(message.
Contents
[6]).Text);
717
Assert.Equal("OP", Assert.IsType<TextReasoningContent>(message.
Contents
[7]).Text);
739
Assert.Equal(5, message.
Contents
.Count);
741
Assert.Equal("A", Assert.IsType<TextReasoningContent>(message.
Contents
[0]).Text);
742
Assert.Equal("1", ((TextReasoningContent)message.
Contents
[0]).ProtectedData);
744
Assert.Equal("B", Assert.IsType<TextReasoningContent>(message.
Contents
[1]).Text);
745
Assert.Equal("2", ((TextReasoningContent)message.
Contents
[1]).ProtectedData);
747
Assert.Equal("CDE", Assert.IsType<TextReasoningContent>(message.
Contents
[2]).Text);
748
Assert.Equal("3", ((TextReasoningContent)message.
Contents
[2]).ProtectedData);
750
Assert.Equal("F", Assert.IsType<TextReasoningContent>(message.
Contents
[3]).Text);
751
Assert.Equal("4", ((TextReasoningContent)message.
Contents
[3]).ProtectedData);
753
Assert.Equal("GH", Assert.IsType<TextReasoningContent>(message.
Contents
[4]).Text);
754
Assert.Null(((TextReasoningContent)message.
Contents
[4]).ProtectedData);
784
Assert.Equal(12, message.
Contents
.Count);
785
Assert.Equal("ABC", Assert.IsType<TextContent>(message.
Contents
[0]).Text);
786
Assert.Equal("D", Assert.IsType<TextContent>(message.
Contents
[1]).Text);
787
Assert.Equal("E", Assert.IsType<TextContent>(message.
Contents
[2]).Text);
788
Assert.Equal("F", Assert.IsType<TextContent>(message.
Contents
[3]).Text);
789
Assert.Equal("GH", Assert.IsType<TextContent>(message.
Contents
[4]).Text);
790
Assert.Equal("I", Assert.IsType<TextContent>(message.
Contents
[5]).Text);
791
Assert.Equal("J", Assert.IsType<TextContent>(message.
Contents
[6]).Text);
792
Assert.Equal("K", Assert.IsType<TextContent>(message.
Contents
[7]).Text);
793
Assert.Equal("L", Assert.IsType<TextContent>(message.
Contents
[8]).Text);
794
Assert.Equal("MN", Assert.IsType<TextContent>(message.
Contents
[9]).Text);
795
Assert.Equal("O", Assert.IsType<TextContent>(message.
Contents
[10]).Text);
796
Assert.Equal("P", Assert.IsType<TextContent>(message.
Contents
[11]).Text);
816
Assert.Equal("Hello, world!", Assert.IsType<TextContent>(Assert.Single(Assert.Single(response.Messages).
Contents
)).Text);
953
Assert.Equal(4, message.
Contents
.Count);
957
Assert.IsType<TextContent>(message.
Contents
[0]).Text);
960
var imageResults = message.
Contents
.OfType<ImageGenerationToolResultContent>().ToArray();
1001
var imageResults = message.
Contents
.OfType<ImageGenerationToolResultContent>().ToArray();
Contents\AIContentTests.cs (6)
88
Assert.Equal(message.
Contents
.Count, deserialized.
Contents
.Count);
89
for (int i = 0; i < message.
Contents
.Count; i++)
91
Assert.NotNull(message.
Contents
[i]);
92
Assert.Equal(message.
Contents
[i].GetType(), deserialized.
Contents
[i].GetType());
Microsoft.Extensions.AI.Evaluation (4)
ChatMessageExtensions.cs (3)
100
/// (present within the <see cref="ChatMessage.
Contents
"/> of the <paramref name="message"/>) that are not
116
if (!message.
Contents
.OfType<TextContent>().Any())
139
/// (present within the <see cref="ChatMessage.
Contents
"/> of the <paramref name="messages"/>) that are not
ChatResponseExtensions.cs (1)
21
/// (present within the <see cref="ChatMessage.
Contents
"/> of the <see cref="ChatResponse.Messages"/>) that are not
Microsoft.Extensions.AI.Evaluation.Quality (4)
ChatResponseExtensions.cs (1)
29
foreach (AIContent content in modelResponse.Messages.SelectMany(m => m.
Contents
))
IntentResolutionEvaluator.cs (1)
121
modelResponse.Messages.SelectMany(m => m.
Contents
).OfType<FunctionCallContent>();
TaskAdherenceEvaluator.cs (1)
120
modelResponse.Messages.SelectMany(m => m.
Contents
).OfType<FunctionCallContent>();
ToolCallAccuracyEvaluator.cs (1)
100
modelResponse.Messages.SelectMany(m => m.
Contents
).OfType<FunctionCallContent>();
Microsoft.Extensions.AI.Evaluation.Safety (3)
ChatMessageExtensions.cs (1)
12
=> message.
Contents
.Any(c => c.IsImageWithSupportedFormat());
ContentSafetyServicePayloadUtilities.cs (2)
316
foreach (AIContent content in message.
Contents
)
452
foreach (AIContent content in message.
Contents
)
Microsoft.Extensions.AI.Integration.Tests (18)
ChatClientIntegrationTests.cs (3)
179
var singleTextContent = (TextContent)history[1].
Contents
.Single();
676
((TextContent)message.
Contents
[0]).Text += "!";
710
((TextContent)message.
Contents
[0]).Text += "!";
ImageGeneratingChatClientIntegrationTests.cs (8)
85
var contents = response.Messages.SelectMany(m => m.
Contents
).ToArray();
140
.SelectMany(m => m.
Contents
)
215
var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.
Contents
).OfType<ImageGenerationToolResultContent>());
221
Assert.Single(secondResponse.Messages.SelectMany(m => m.
Contents
).OfType<ImageGenerationToolResultContent>().SelectMany(t => t.Outputs!.OfType<DataContent>()));
270
var secondToolResultContent = Assert.Single(secondResponse.Messages.SelectMany(m => m.
Contents
).OfType<ImageGenerationToolResultContent>());
315
var firstToolResultContent = Assert.Single(firstResponse.Messages.SelectMany(m => m.
Contents
).OfType<ImageGenerationToolResultContent>());
395
var textContents = userMessage.
Contents
.OfType<TextContent>().ToList();
399
Assert.DoesNotContain(userMessage.
Contents
, c => c == originalImage);
PromptBasedFunctionCallingChatClient.cs (6)
67
for (var itemIndex = 0; itemIndex < message.
Contents
.Count; itemIndex++)
69
if (message.
Contents
[itemIndex] is FunctionResultContent frc)
74
else if (message.
Contents
[itemIndex] is FunctionCallContent fcc)
90
var contentItem = message.
Contents
.SingleOrDefault();
118
message.
Contents
.Add(new FunctionCallContent(id, toolCallParsed.Name!, toolCallParsed.Arguments is { } args ? new ReadOnlyDictionary<string, object?>(args) : null));
122
message.
Contents
.Remove(contentItem);
ReducingChatClientTests.cs (1)
98
foreach (AIContent content in message.
Contents
)
Microsoft.Extensions.AI.OpenAI (37)
MicrosoftExtensionsAIChatExtensions.cs (10)
73
IEnumerable<ChatToolCall>? toolCalls = lastMessage?.
Contents
80
new(OpenAIChatClient.ToOpenAIChatContent(lastMessage?.
Contents
?? [])),
86
outputAudio: lastMessage?.
Contents
.OfType<DataContent>().Where(dc => dc.HasTopLevelMediaType("audio")).Select(a => OpenAIChatModelFactory.ChatOutputAudio(new(a.Data))).FirstOrDefault(),
87
messageAnnotations: ConvertAnnotations(lastMessage?.
Contents
));
195
OpenAIChatClient.ConvertContentParts(acm.Content, resultMessage.
Contents
);
200
resultMessage.
Contents
.Add(fcc);
208
OpenAIChatClient.ConvertContentParts(ucm.Content, resultMessage.
Contents
);
215
OpenAIChatClient.ConvertContentParts(dcm.Content, resultMessage.
Contents
);
222
OpenAIChatClient.ConvertContentParts(scm.Content, resultMessage.
Contents
);
227
resultMessage.
Contents
.Add(new FunctionResultContent(tcm.ToolCallId, ToToolResult(tcm.Content))
OpenAIAssistantsChatClient.cs (2)
524
foreach (var textContent in chatMessage.
Contents
.OfType<TextContent>())
532
foreach (AIContent content in chatMessage.
Contents
)
OpenAIChatClient.cs (10)
167
var parts = ToOpenAIChatContent(input.
Contents
);
178
foreach (AIContent item in input.
Contents
)
204
foreach (var content in input.
Contents
)
503
returnMessage.
Contents
.Add(aiContent);
511
returnMessage.
Contents
.Add(new TextReasoningContent(reasoningText));
517
returnMessage.
Contents
.Add(new DataContent(audio.AudioBytes.ToMemory(), GetOutputAudioMimeType(chatCompletionOptions))
531
returnMessage.
Contents
.Add(callContent);
538
returnMessage.
Contents
.Add(new ErrorContent(refusal) { ErrorCode = nameof(openAICompletion.Refusal) });
546
TextContent? annotationContent = returnMessage.
Contents
.OfType<TextContent>().FirstOrDefault();
550
returnMessage.
Contents
.Add(annotationContent);
OpenAIResponsesChatClient.cs (15)
152
lastMessage.
Contents
.Add(new ErrorContent(error.Message) { ErrorCode = error.Code.ToString() });
189
((List<AIContent>)message.
Contents
).AddRange(ToAIContents(messageItem.Content));
193
message.
Contents
.Add(new TextReasoningContent(reasoningItem.GetSummaryText())
203
message.
Contents
.Add(fcc);
207
message.
Contents
.Add(new FunctionResultContent(functionCallOutputItem.CallId, functionCallOutputItem.FunctionOutput) { RawRepresentation = functionCallOutputItem });
211
AddMcpToolCallContent(mtci, message.
Contents
);
215
message.
Contents
.Add(new McpServerToolApprovalRequestContent(mtcari.Id, new(mtcari.Id, mtcari.ToolName, mtcari.ServerLabel)
226
message.
Contents
.Add(new McpServerToolApprovalResponseContent(mtcari.ApprovalRequestId, mtcari.Approved) { RawRepresentation = mtcari });
230
message.
Contents
.Add(new CodeInterpreterToolCallContent
240
message.
Contents
.Add(CreateCodeInterpreterResultContent(cicri));
244
AddImageGenerationContents(imageGenItem, options, message.
Contents
);
248
message.
Contents
.Add(new() { RawRepresentation = outputItem });
920
foreach (AIContent item in input.
Contents
)
1000
foreach (AIContent item in input.
Contents
)
1134
foreach (AIContent item in input.
Contents
)
Microsoft.Extensions.AI.OpenAI.Tests (89)
OpenAIAssistantChatClientIntegrationTests.cs (2)
67
var toolCallContent = response.Messages.SelectMany(m => m.
Contents
).OfType<CodeInterpreterToolCallContent>().SingleOrDefault();
85
var toolResultContents = response.Messages.SelectMany(m => m.
Contents
).OfType<CodeInterpreterToolResultContent>().ToList();
OpenAIChatClientTests.cs (13)
165
Assert.Single(response.Messages.Single().
Contents
);
839
Assert.Single(response.Messages.Single().
Contents
);
937
Assert.Single(response.Messages.Single().
Contents
);
1035
Assert.Single(response.Messages.Single().
Contents
);
1167
Assert.Single(response.Messages.Single().
Contents
);
1168
FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(response.Messages.Single().
Contents
[0]);
1251
Assert.Single(response.Messages.Single().
Contents
);
1252
TextContent fcc = Assert.IsType<TextContent>(response.Messages.Single().
Contents
[0]);
1488
Assert.Single(response.Messages.Single().
Contents
);
1602
Assert.Single(response.Messages.Single().
Contents
);
1797
var frc = Assert.IsType<FunctionResultContent>(Assert.Single(extMessages[0].
Contents
));
1955
var reasoning = message.
Contents
.OfType<TextReasoningContent>().Single();
1958
var text = message.
Contents
.OfType<TextContent>().Single();
OpenAIConversionTests.cs (15)
786
Assert.Same(messages[0].
Contents
[1].RawRepresentation, items[1]);
787
Assert.Same(messages[0].
Contents
[2].RawRepresentation, items[2]);
791
Assert.Same(messages[1].
Contents
[1].RawRepresentation, items[5]);
792
Assert.Same(messages[2].
Contents
[0].RawRepresentation, items[6]);
822
Assert.Equal(3, message.
Contents
.Count);
823
Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.
Contents
[0], exactMatch: false).Text);
824
Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.
Contents
[1], exactMatch: false).Uri.ToString());
825
Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.
Contents
[2], exactMatch: false).Name);
853
Assert.Equal(3, message.
Contents
.Count);
854
Assert.Equal("Hello, world!", Assert.IsType<TextContent>(message.
Contents
[0], exactMatch: false).Text);
855
Assert.Equal("http://example.com/image.png", Assert.IsType<UriContent>(message.
Contents
[1], exactMatch: false).Uri.ToString());
856
Assert.Equal("functionName", Assert.IsType<FunctionCallContent>(message.
Contents
[2], exactMatch: false).Name);
912
Assert.Equal("Function output", convertedMessages[3].
Contents
.OfType<FunctionResultContent>().First().Result);
967
var textContent = message.
Contents
.OfType<TextContent>().FirstOrDefault();
968
var functionCall = message.
Contents
.OfType<FunctionCallContent>().FirstOrDefault();
OpenAIResponseClientIntegrationTests.cs (18)
46
var toolCallContent = response.Messages.SelectMany(m => m.
Contents
).OfType<CodeInterpreterToolCallContent>().SingleOrDefault();
59
var toolResultContent = response.Messages.SelectMany(m => m.
Contents
).OfType<CodeInterpreterToolResultContent>().FirstOrDefault();
84
TextContent tc = m.
Contents
.OfType<TextContent>().First();
150
Assert.NotEmpty(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolCallContent>());
151
Assert.NotEmpty(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolResultContent>());
152
Assert.Empty(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolApprovalRequestContent>());
205
.SelectMany(m => m.
Contents
)
209
if (approvalResponse.
Contents
.Count == 0)
214
approvalsCount += approvalResponse.
Contents
.Count;
415
var approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolApprovalRequestContent>());
425
var toolCall = Assert.Single(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolCallContent>());
428
var toolResult = Assert.Single(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolResultContent>());
586
.SelectMany(m => m.
Contents
)
609
.SelectMany(m => m.
Contents
)
624
.SelectMany(m => m.
Contents
)
667
.SelectMany(m => m.
Contents
)
689
.SelectMany(m => m.
Contents
)
704
.SelectMany(m => m.
Contents
)
OpenAIResponseClientTests.cs (36)
163
Assert.Single(response.Messages.Single().
Contents
);
577
var coalescedReasoning = assistantMessage.
Contents
.OfType<TextReasoningContent>().Single();
822
Assert.Equal(2, responseMessage.
Contents
.Count);
823
Assert.Single(responseMessage.
Contents
, content => content is TextReasoningContent);
824
AIContent computerUserItem = Assert.Single(responseMessage.
Contents
, content => content.GetType() == typeof(AIContent));
1410
approvalRequest = Assert.Single(response.Messages.SelectMany(m => m.
Contents
).OfType<McpServerToolApprovalRequestContent>());
1542
Assert.Equal(3, message.
Contents
.Count);
1544
var call = Assert.IsType<McpServerToolCallContent>(message.
Contents
[0]);
1553
var result = Assert.IsType<McpServerToolResultContent>(message.
Contents
[1]);
1797
Assert.Equal(6, message.
Contents
.Count);
1799
var firstCall = Assert.IsType<McpServerToolCallContent>(message.
Contents
[1]);
1807
var firstResult = Assert.IsType<McpServerToolResultContent>(message.
Contents
[2]);
1812
var secondCall = Assert.IsType<McpServerToolCallContent>(message.
Contents
[3]);
1820
var secondResult = Assert.IsType<McpServerToolResultContent>(message.
Contents
[4]);
2210
Assert.Equal(6, message.
Contents
.Count);
2212
var firstCall = Assert.IsType<McpServerToolCallContent>(message.
Contents
[1]);
2220
var firstResult = Assert.IsType<McpServerToolResultContent>(message.
Contents
[2]);
2225
var secondCall = Assert.IsType<McpServerToolCallContent>(message.
Contents
[3]);
2233
var secondResult = Assert.IsType<McpServerToolResultContent>(message.
Contents
[4]);
2506
Assert.Single(response.Messages.Single().
Contents
);
2900
Assert.Equal(3, message.
Contents
.Count);
2902
var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.
Contents
[0]);
2908
var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.
Contents
[1]);
2911
var textContent = Assert.IsType<TextContent>(message.
Contents
[2]);
3120
Assert.Equal(3, message.
Contents
.Count);
3122
var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.
Contents
[0]);
3128
var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.
Contents
[1]);
3131
var textContent = Assert.IsType<TextContent>(message.
Contents
[2]);
3244
Assert.Equal(2, message.
Contents
.Count);
3247
var codeCall = Assert.IsType<CodeInterpreterToolCallContent>(message.
Contents
[0]);
3255
var codeResult = Assert.IsType<CodeInterpreterToolResultContent>(message.
Contents
[1]);
4843
var errorContent = lastMessage.
Contents
.OfType<ErrorContent>().FirstOrDefault();
5426
var errorContent = response.Messages.Last().
Contents
.OfType<ErrorContent>().FirstOrDefault();
5485
var imageContent = userMessage.
Contents
.OfType<UriContent>().FirstOrDefault();
5548
var imageContent = userMessage.
Contents
.OfType<DataContent>().FirstOrDefault();
5631
var contents = response.Messages[0].
Contents
;
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (5)
30
Assert.Equal(expectedMessage.
Contents
.Count, chatMessage.
Contents
.Count);
31
for (int j = 0; j < expectedMessage.
Contents
.Count; j++)
33
var expectedItem = expectedMessage.
Contents
[j];
34
var chatItem = chatMessage.
Contents
[j];
Microsoft.Extensions.AI.Tests (87)
ChatCompletion\DistributedCachingChatClientTest.cs (9)
729
Assert.NotSame(result2.Messages.Last().
Contents
[0], expectedResponse.Messages.Last().
Contents
[0]);
730
Assert.NotSame(result2.Messages.Last().
Contents
[1], expectedResponse.Messages.Last().
Contents
[1]);
808
Assert.Equal(expectedMessage.
Contents
.Count, actualMessage.
Contents
.Count);
810
for (var itemIndex = 0; itemIndex < expectedMessage.
Contents
.Count; itemIndex++)
812
var expectedItem = expectedMessage.
Contents
[itemIndex];
813
var actualItem = actualMessage.
Contents
[itemIndex];
ChatCompletion\FunctionInvokingChatClientTests.cs (53)
431
var capturedFrc = Assert.Single(toolMessage.
Contents
.OfType<FunctionResultContent>());
511
var frc = Assert.Single(toolMessage.
Contents
.OfType<FunctionResultContent>());
595
var capturedFrc = Assert.Single(toolMessage.
Contents
.OfType<FunctionResultContent>());
960
assistantMessage.
Contents
.Add(new FunctionCallContent(callId, "Func",
962
toolMessage.
Contents
.Add(new FunctionResultContent(callId, result: callShouldThrow ? "Error: Function failed." : "Success"));
1000
IEnumerable<AIContent> content = finalChat.SelectMany(m => m.
Contents
);
1216
m => Assert.Collection(m.
Contents
,
1219
m => Assert.Collection(m.
Contents
,
1222
m => Assert.Equal("OK bye", Assert.IsType<TextContent>(Assert.Single(m.
Contents
)).Text));
1258
Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[0].
Contents
));
1259
Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[1].
Contents
));
1260
Assert.IsType<FunctionCallContent>(Assert.Single(response.Messages[2].
Contents
));
1261
Assert.IsType<FunctionResultContent>(Assert.Single(response.Messages[3].
Contents
));
1262
Assert.IsType<TextContent>(Assert.Single(response.Messages[4].
Contents
));
1361
AIContent[] resultContents = existingSearchResult is not null && existingSearchResult.
Contents
.OfType<FunctionResultContent>().ToList() is { } frcs
1385
var frcs = lastMessage.
Contents
.OfType<FunctionResultContent>().ToList();
1643
if (!chatContents.Any(m => m.
Contents
.OfType<FunctionCallContent>().Any()))
1946
var functionCallMessage = chat.First(m => m.
Contents
.Any(c => c is FunctionCallContent));
1947
var functionCallContent = functionCallMessage.
Contents
.OfType<FunctionCallContent>().First();
1995
Assert.Contains(response.Messages, m => m.
Contents
.Any(c => c is FunctionCallContent fcc && fcc.InformationalOnly));
1996
Assert.DoesNotContain(response.Messages, m => m.
Contents
.Any(c => c is FunctionResultContent));
2067
Assert.Contains(response.Messages, m => m.
Contents
.Any(c => c is FunctionResultContent frc && frc.CallId == "callId1"));
2068
Assert.DoesNotContain(response.Messages, m => m.
Contents
.Any(c => c is FunctionResultContent frc && frc.CallId == "callId2"));
2112
Assert.Contains(response.Messages, m => m.
Contents
.Any(c => c is FunctionCallContent fcc && fcc.CallId == "callId1" && fcc.InformationalOnly));
2115
Assert.Contains(response.Messages, m => m.
Contents
.Any(c => c is FunctionResultContent frc && frc.CallId == "callId1"));
2156
var message = new ChatMessage(ChatRole.Assistant, CloneContents(plan[contents.Count()].
Contents
))
2220
ChatMessage message = new(ChatRole.Assistant, CloneContents(plan[contents.Count()].
Contents
))
2366
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionB result"));
2371
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionB result"));
2462
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2471
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2567
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2569
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2575
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2577
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2670
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2672
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2678
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2680
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2772
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2774
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2780
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2782
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2947
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
2956
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
3048
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionApprovalRequestContent>().Any(frc => frc.FunctionCall.Name == "FunctionB"));
3051
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionA result"));
3058
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionApprovalRequestContent>().Any(frc => frc.FunctionCall.Name == "FunctionB"));
3061
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>().Any(frc => frc.Result?.ToString() == "FunctionA result"));
3154
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionApprovalRequestContent>().Any(frc => frc.FunctionCall.Name == "FunctionB"));
3157
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
3165
Assert.Contains(result.Messages, m => m.
Contents
.OfType<FunctionApprovalRequestContent>().Any(frc => frc.FunctionCall.Name == "FunctionB"));
3168
Assert.DoesNotContain(result.Messages, m => m.
Contents
.OfType<FunctionResultContent>()
ChatCompletion\ImageGeneratingChatClientTests.cs (2)
337
Assert.Single(message.
Contents
);
339
var imageToolCallContent = Assert.IsType<ImageGenerationToolCallContent>(message.
Contents
[0]);
ChatCompletion\UseDelegateChatClientTests.cs (2)
103
cc.Messages.SelectMany(c => c.
Contents
).OfType<TextContent>().Last().Text += " world";
206
cc.Messages.SelectMany(c => c.
Contents
).OfType<TextContent>().Last().Text += " world (non-streaming)";
ChatReduction\MessageCountingChatReducerTests.cs (4)
143
Assert.DoesNotContain(m.
Contents
, c => c is FunctionCallContent);
144
Assert.DoesNotContain(m.
Contents
, c => c is FunctionResultContent);
150
Assert.DoesNotContain(m.
Contents
, c => c is FunctionCallContent);
151
Assert.DoesNotContain(m.
Contents
, c => c is FunctionResultContent);
ChatReduction\SummarizingChatReducerTests.cs (12)
107
Assert.DoesNotContain(msgs, m => m.
Contents
.Any(c => c is FunctionCallContent or FunctionResultContent or TestUserInputRequestContent or TestUserInputResponseContent));
122
Assert.Contains(m.
Contents
, c => c is FunctionCallContent);
123
Assert.Contains(m.
Contents
, c => c is TestUserInputRequestContent);
125
m => Assert.Contains(m.
Contents
, c => c is FunctionResultContent),
126
m => Assert.Contains(m.
Contents
, c => c is TestUserInputResponseContent),
203
Assert.DoesNotContain(msgList, m => m.
Contents
.Any(c => c is FunctionCallContent or FunctionResultContent or TestUserInputRequestContent or TestUserInputResponseContent));
219
Assert.Contains(resultList, m => m.
Contents
.Any(c => c is FunctionCallContent fc && fc.CallId == "call2"));
220
Assert.Contains(resultList, m => m.
Contents
.Any(c => c is FunctionResultContent fr && fr.CallId == "call2"));
221
Assert.DoesNotContain(resultList, m => m.
Contents
.Any(c => c is FunctionCallContent fc && fc.CallId == "call1"));
222
Assert.DoesNotContain(resultList, m => m.
Contents
.Any(c => c is FunctionResultContent fr && fr.CallId == "call1"));
223
Assert.DoesNotContain(resultList, m => m.
Contents
.Any(c => c is TestUserInputRequestContent));
224
Assert.DoesNotContain(resultList, m => m.
Contents
.Any(c => c is TestUserInputResponseContent));
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (5)
30
Assert.Equal(expectedMessage.
Contents
.Count, chatMessage.
Contents
.Count);
31
for (int j = 0; j < expectedMessage.
Contents
.Count; j++)
33
var expectedItem = expectedMessage.
Contents
[j];
34
var chatItem = chatMessage.
Contents
[j];
Microsoft.Extensions.DataIngestion.Tests (4)
Processors\AlternativeTextEnricherTests.cs (4)
50
Assert.Equal(2, materializedMessages[1].
Contents
.Count);
52
Assert.All(materializedMessages[1].
Contents
, content =>
137
Assert.Equal(batchSize, materializedMessages[1].
Contents
.Count);
139
Assert.All(materializedMessages[1].
Contents
, content =>