67 writes to Contents
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (2)
564
updateToYield.
Contents
= updatedContents;
637
Contents
= message.Contents,
ChatCompletion\ImageGeneratingChatClient.cs (1)
114
modifiedUpdate.
Contents
= newContents;
Microsoft.Extensions.AI.Abstractions (2)
ChatCompletion\ChatResponse.cs (1)
151
Contents
= message.Contents,
ChatCompletion\ChatResponseUpdate.cs (1)
73
Contents
= Contents,
Microsoft.Extensions.AI.Abstractions.Tests (43)
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (37)
36
new() {
Contents
= [new UsageContent(new() { InputTokenCount = 1, OutputTokenCount = 2 })] },
37
new() {
Contents
= [new UsageContent(new() { InputTokenCount = 4, OutputTokenCount = 5 })] },
578
updates.Add(new() {
Contents
= [new DataContent("data:image/png;base64,aGVsbG8=")] });
608
new() {
Contents
= [new TextReasoningContent("D")] },
609
new() {
Contents
= [new TextReasoningContent("E")] },
610
new() {
Contents
= [new TextReasoningContent("F")] },
613
new() {
Contents
= [new TextReasoningContent("I")] },
614
new() {
Contents
= [new TextReasoningContent("J")] },
616
new() {
Contents
= [new TextReasoningContent("L")] },
619
new() {
Contents
= [new TextReasoningContent("O")] },
620
new() {
Contents
= [new TextReasoningContent("P")] },
643
new() {
Contents
= [new TextReasoningContent("A") { ProtectedData = "1" }] },
644
new() {
Contents
= [new TextReasoningContent("B") { ProtectedData = "2" }] },
645
new() {
Contents
= [new TextReasoningContent("C")] },
646
new() {
Contents
= [new TextReasoningContent("D")] },
647
new() {
Contents
= [new TextReasoningContent("E") { ProtectedData = "3" }] },
648
new() {
Contents
= [new TextReasoningContent("F") { ProtectedData = "4" }] },
649
new() {
Contents
= [new TextReasoningContent("G")] },
650
new() {
Contents
= [new TextReasoningContent("H")] },
683
new() {
Contents
= [new TextContent("D") { Annotations = [new()] }] },
684
new() {
Contents
= [new TextContent("E") { Annotations = [new()] }] },
685
new() {
Contents
= [new TextContent("F") { Annotations = [new()] }] },
686
new() {
Contents
= [new TextContent("G") { Annotations = [] }] },
687
new() {
Contents
= [new TextContent("H") { Annotations = [] }] },
688
new() {
Contents
= [new TextContent("I") { Annotations = [new()] }] },
689
new() {
Contents
= [new TextContent("J") { Annotations = [new()] }] },
691
new() {
Contents
= [new TextContent("L") { Annotations = [new()] }] },
694
new() {
Contents
= [new TextContent("O") { Annotations = [new()] }] },
695
new() {
Contents
= [new TextContent("P") { Annotations = [new()] }] },
722
new() {
Contents
= [new UsageContent(new() { TotalTokenCount = 42 })] },
844
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image1] }] },
847
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image2] }] },
850
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image3] }] },
853
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image4] }] },
898
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image1] }] },
901
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = "", Outputs = [image2] }] },
904
new() {
Contents
= [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image3] }] },
ChatCompletion\ChatResponseUpdateTests.cs (6)
49
update.
Contents
= newList;
51
update.
Contents
= null;
90
Contents
=
119
Contents
=
184
Contents
= originalContents,
311
Contents
= sharedContents
Microsoft.Extensions.AI.OpenAI.Tests (1)
OpenAIConversionTests.cs (1)
1127
Contents
=
Microsoft.Extensions.AI.Tests (18)
ChatCompletion\DistributedCachingChatClientTest.cs (8)
253
Contents
=
266
Contents
= [new FunctionCallContent("someCallId", "someFn", new Dictionary<string, object?> { ["arg1"] = "value1" })],
270
Contents
= [new UsageContent(new() { InputTokenCount = 123, OutputTokenCount = 456, TotalTokenCount = 99999 })],
316
new() { Role = ChatRole.Assistant,
Contents
= [new FunctionCallContent("callId1", "separator")] },
369
new() { Role = ChatRole.Assistant,
Contents
= [new TextContent("Hello")] },
370
new() { Role = ChatRole.Assistant,
Contents
= [new TextContent(" world, ")] },
374
Contents
=
385
Contents
=
ChatCompletion\FunctionInvokingChatClientTests.cs (3)
761
new() {
Contents
= [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] },
762
new() {
Contents
= [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] }
767
updates = [new() {
Contents
= [new TextContent("OK bye")] }];
ChatCompletion\OpenTelemetryChatClientTests.cs (7)
82
Contents
= [new UsageContent(new()
372
yield return new() {
Contents
= [new TextReasoningContent("This is reasoning")] };
373
yield return new() {
Contents
= [new FunctionCallContent("call-123", "GetWeather", new Dictionary<string, object?> { ["location"] = "Seattle" })] };
374
yield return new() {
Contents
= [new FunctionResultContent("call-123", "72°F and sunny")] };
375
yield return new() {
Contents
= [new DataContent(Convert.FromBase64String("aGVsbG8gd29ybGQ="), "image/png")] };
376
yield return new() {
Contents
= [new UriContent(new Uri("https://example.com/image.jpg"), "image/jpeg")] };
377
yield return new() {
Contents
= [new HostedFileContent("file-abc123")] };
123 references to Contents
Aspire.Dashboard (3)
Model\Assistant\AIHelpers.cs (3)
486
foreach (var item in update.
Contents
.OfType<TextContent>())
505
var contentsList = filter is null ? update.
Contents
: update.
Contents
.Where(filter).ToList();
Microsoft.Extensions.AI (5)
ChatCompletion\FunctionInvokingChatClient.cs (3)
502
_ = CopyFunctionCalls(update.
Contents
, ref functionCallContents);
506
IList<AIContent> contents = update.
Contents
;
562
if (TryReplaceFunctionCallsWithApprovalRequests(updateToYield.
Contents
, out var updatedContents))
ChatCompletion\ImageGeneratingChatClient.cs (2)
108
var newContents = requestState.ReplaceImageGenerationFunctionResults(update.
Contents
);
110
if (!ReferenceEquals(newContents, update.
Contents
))
Microsoft.Extensions.AI.Abstractions (6)
ChatCompletion\ChatResponse.cs (1)
136
extra.
Contents
.Add(new UsageContent(usage));
ChatCompletion\ChatResponseExtensions.cs (3)
87
var contentsList = filter is null ? update.
Contents
: update.
Contents
.Where(filter).ToList();
538
foreach (var content in update.
Contents
)
ChatCompletion\ChatResponseUpdate.cs (2)
73
Contents =
Contents
,
96
/// This property concatenates the text of all <see cref="TextContent"/> objects in <see cref="
Contents
"/>.
Microsoft.Extensions.AI.Abstractions.Tests (31)
ChatCompletion\ChatResponseUpdateTests.cs (31)
20
Assert.Empty(update.
Contents
);
43
Assert.Empty(update.
Contents
);
44
update.
Contents
.Add(new TextContent("text"));
45
Assert.Single(update.
Contents
);
47
Assert.Same(update.
Contents
, update.
Contents
);
50
Assert.Same(newList, update.
Contents
);
52
Assert.NotNull(update.
Contents
);
53
Assert.Empty(update.
Contents
);
101
TextContent textContent = Assert.IsType<TextContent>(update.
Contents
[3]);
106
((TextContent)update.
Contents
[3]).Text = "text-3";
108
Assert.Same(textContent, update.
Contents
[3]);
140
Assert.Equal(5, result.
Contents
.Count);
142
Assert.IsType<TextContent>(result.
Contents
[0]);
143
Assert.Equal("text-1", ((TextContent)result.
Contents
[0]).Text);
145
Assert.IsType<DataContent>(result.
Contents
[1]);
146
Assert.Equal("data:image/png;base64,aGVsbG8=", ((DataContent)result.
Contents
[1]).Uri);
148
Assert.IsType<FunctionCallContent>(result.
Contents
[2]);
149
Assert.Equal("fc1", ((FunctionCallContent)result.
Contents
[2]).Name);
151
Assert.IsType<DataContent>(result.
Contents
[3]);
152
Assert.Equal("data"u8.ToArray(), ((DataContent)result.
Contents
[3]).Data.ToArray());
154
Assert.IsType<TextContent>(result.
Contents
[4]);
155
Assert.Equal("text-2", ((TextContent)result.
Contents
[4]).Text);
213
Assert.Same(original.
Contents
, clone.
Contents
);
242
Assert.Empty(clone.
Contents
); // Contents property initializes to empty list
258
Assert.Empty(clone.
Contents
);
323
Assert.Same(original.
Contents
, clone.
Contents
);
326
Assert.Equal(2, original.
Contents
.Count);
327
Assert.Equal(2, clone.
Contents
.Count);
Microsoft.Extensions.AI.Integration.Tests (1)
ChatClientIntegrationTests.cs (1)
159
UsageContent usage = chunks.SelectMany(c => c.
Contents
).OfType<UsageContent>().Single();
Microsoft.Extensions.AI.OpenAI (15)
MicrosoftExtensionsAIChatExtensions.cs (3)
143
var usage = update.
Contents
.FirstOrDefault(c => c is UsageContent) is UsageContent usageContent ?
150
var toolCallUpdates = update.
Contents
.OfType<FunctionCallContent>().Select((fcc, index) =>
160
new(OpenAIChatClient.ToOpenAIChatContent(update.
Contents
)),
OpenAIAssistantsChatClient.cs (5)
178
ruUpdate.
Contents
.Add(new UsageContent(new()
193
ruUpdate.
Contents
.Add(fcc);
281
if (textUpdate.
Contents
.Count == 0)
284
textUpdate.
Contents
.Add(new TextContent(string.Empty));
287
(((TextContent)textUpdate.
Contents
[0]).Annotations ??= []).Add(new CitationAnnotation
OpenAIChatClient.cs (5)
363
ConvertContentParts(update.ContentUpdate, responseUpdate.
Contents
);
368
responseUpdate.
Contents
.Add(new DataContent(audioUpdate.AudioBytesUpdate.ToMemory(), GetOutputAudioMimeType(options))
403
responseUpdate.
Contents
.Add(new UsageContent(FromOpenAIUsage(tokenUsage))
435
responseUpdate.
Contents
.Add(callContent);
443
responseUpdate.
Contents
.Add(new ErrorContent(refusal.ToString()) { ErrorCode = "Refusal" });
OpenAIResponsesChatClient.cs (2)
417
AddMcpToolCallContent(mtci, mcpUpdate.
Contents
);
434
AddCodeInterpreterContents(cicri, codeUpdate.
Contents
);
Microsoft.Extensions.AI.OpenAI.Tests (46)
OpenAIChatClientTests.cs (4)
253
Assert.Equal(i == 10 ? 0 : 1, updates[i].
Contents
.Count);
257
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
1345
FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(Assert.Single(updates[updates.Count - 1].
Contents
));
1350
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
OpenAIResponseClientTests.cs (42)
326
Assert.Single(updates[i].
Contents
);
329
var reasoning = Assert.IsType<TextReasoningContent>(updates[i].
Contents
.Single());
336
Assert.Single(updates[i].
Contents
);
341
Assert.Empty(updates[i].
Contents
);
347
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
459
Assert.Single(u.
Contents
);
461
var reasoning = Assert.IsType<TextReasoningContent>(u.
Contents
.Single());
466
var allReasoningText = string.Concat(reasoningUpdates.Select(u => u.
Contents
.OfType<TextReasoningContent>().First().Text));
474
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
580
Assert.Equal((i >= 4 && i <= 12) || i == 16 ? 1 : 0, updates[i].
Contents
.Count);
589
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
811
Assert.Equal(i >= 3 ? 1 : 0, updates[i].
Contents
.Count);
816
AIContent content = Assert.Single(updates[3].
Contents
);
819
UsageContent usage = Assert.IsType<UsageContent>(Assert.Single(updates[4].
Contents
));
2461
Assert.Equal((i >= 5 && i <= 13) || i == 17 ? 1 : 0, updates[i].
Contents
.Count);
2545
Assert.Single(updates[i].
Contents
);
2555
Assert.Empty(updates[i].
Contents
);
2561
Assert.Single(updates[i].
Contents
);
4852
var refusalUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent ec && ec.ErrorCode == "Refusal"));
4855
var errorContent = refusalUpdate.
Contents
.OfType<ErrorContent>().First();
4910
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
4913
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
4953
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
4956
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
4996
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
4999
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
5039
var annotatedUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c.Annotations?.Count > 0));
5041
Assert.NotEmpty(annotatedUpdate.
Contents
.First().Annotations!);
5301
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolCallContent));
5303
var toolCall = toolCallUpdate.
Contents
.OfType<ImageGenerationToolCallContent>().First();
5308
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolResultContent result &&
5314
u.
Contents
!= null && u.
Contents
.Any(c => c is UsageContent));
5316
var usage = completionUpdate.
Contents
.OfType<UsageContent>().First();
5414
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolResultContent result &&
5423
u.
Contents
.OfType<ImageGenerationToolResultContent>().Any(result =>
5460
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolCallContent));
5462
var toolCall = toolCallUpdate.
Contents
.OfType<ImageGenerationToolCallContent>().First();
Microsoft.Extensions.AI.Tests (16)
ChatCompletion\DistributedCachingChatClientTest.cs (8)
346
Assert.Collection(update.
Contents
,
356
c => Assert.IsType<FunctionCallContent>(Assert.Single(c.
Contents
)),
425
var content = Assert.IsType<TextContent>(Assert.Single(item.
Contents
));
842
Assert.Equal(expectedItem.
Contents
.Count, actualItem.
Contents
.Count);
844
for (var itemIndex = 0; itemIndex < expectedItem.
Contents
.Count; itemIndex++)
846
var expectedItemItem = expectedItem.
Contents
[itemIndex];
847
var actualItemItem = actualItem.
Contents
[itemIndex];
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (6)
727
var functionCall = update.
Contents
.OfType<FunctionCallContent>().First();
806
Assert.Equal("Text 1", update.
Contents
.OfType<TextContent>().First().Text);
812
Assert.Equal("Text 2", update.
Contents
.OfType<TextContent>().First().Text);
818
var approvalRequest1 = update.
Contents
.OfType<FunctionApprovalRequestContent>().First();
826
var approvalRequest2 = update.
Contents
.OfType<FunctionApprovalRequestContent>().First();
834
var approvalRequest3 = update.
Contents
.OfType<FunctionApprovalRequestContent>().First();
ChatCompletion\ImageGeneratingChatClientTests.cs (2)
381
Assert.Single(update.
Contents
);
383
var imageToolCallContent = Assert.IsType<ImageGenerationToolCallContent>(update.
Contents
[0]);