90 writes to Contents
Microsoft.AspNetCore.Components.AI (1)
Engine\UIAgent.cs (1)
116
Contents
= [.. message.Contents]
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (2)
626
updateToYield.
Contents
= updatedContents;
714
Contents
= message.Contents,
ChatCompletion\ImageGeneratingChatClient.cs (1)
115
modifiedUpdate.
Contents
= newContents;
Microsoft.Extensions.AI.Abstractions (3)
ChatCompletion\ChatResponse.cs (1)
149
Contents
= message.Contents,
ChatCompletion\ChatResponseUpdate.cs (1)
73
Contents
= Contents,
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponseUpdate.g.cs (1)
122
Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
= value!,
Microsoft.Extensions.AI.Abstractions.Tests (57)
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (49)
35
new() {
Contents
= [new UsageContent(new() { InputTokenCount = 1, OutputTokenCount = 2 })] },
36
new() {
Contents
= [new UsageContent(new() { InputTokenCount = 4, OutputTokenCount = 5 })] },
662
updates.Add(new() {
Contents
= [new DataContent("data:image/png;base64,aGVsbG8=")] });
692
new() {
Contents
= [new TextReasoningContent("D")] },
693
new() {
Contents
= [new TextReasoningContent("E")] },
694
new() {
Contents
= [new TextReasoningContent("F")] },
697
new() {
Contents
= [new TextReasoningContent("I")] },
698
new() {
Contents
= [new TextReasoningContent("J")] },
700
new() {
Contents
= [new TextReasoningContent("L")] },
703
new() {
Contents
= [new TextReasoningContent("O")] },
704
new() {
Contents
= [new TextReasoningContent("P")] },
727
new() {
Contents
= [new TextReasoningContent("A") { ProtectedData = "1" }] },
728
new() {
Contents
= [new TextReasoningContent("B") { ProtectedData = "2" }] },
729
new() {
Contents
= [new TextReasoningContent("C")] },
730
new() {
Contents
= [new TextReasoningContent("D")] },
731
new() {
Contents
= [new TextReasoningContent("E") { ProtectedData = "3" }] },
732
new() {
Contents
= [new TextReasoningContent("F") { ProtectedData = "4" }] },
733
new() {
Contents
= [new TextReasoningContent("G")] },
734
new() {
Contents
= [new TextReasoningContent("H")] },
767
new() {
Contents
= [new TextContent("D") { Annotations = [new()] }] },
768
new() {
Contents
= [new TextContent("E") { Annotations = [new()] }] },
769
new() {
Contents
= [new TextContent("F") { Annotations = [new()] }] },
770
new() {
Contents
= [new TextContent("G") { Annotations = [] }] },
771
new() {
Contents
= [new TextContent("H") { Annotations = [] }] },
772
new() {
Contents
= [new TextContent("I") { Annotations = [new()] }] },
773
new() {
Contents
= [new TextContent("J") { Annotations = [new()] }] },
775
new() {
Contents
= [new TextContent("L") { Annotations = [new()] }] },
778
new() {
Contents
= [new TextContent("O") { Annotations = [new()] }] },
779
new() {
Contents
= [new TextContent("P") { Annotations = [new()] }] },
806
new() {
Contents
= [new UsageContent(new() { TotalTokenCount = 42 })] },
934
new() {
Contents
= [new ImageGenerationToolResultContent("img1") { Outputs = [image1] }] },
937
new() {
Contents
= [new ImageGenerationToolResultContent("img2") { Outputs = [image2] }] },
940
new() {
Contents
= [new ImageGenerationToolResultContent("img1") { Outputs = [image3] }] },
943
new() {
Contents
= [new ImageGenerationToolResultContent("img2") { Outputs = [image4] }] },
988
new() {
Contents
= [new ImageGenerationToolResultContent("id-1") { Outputs = [image1] }] },
991
new() {
Contents
= [new ImageGenerationToolResultContent("id-2") { Outputs = [image2] }] },
994
new() {
Contents
= [new ImageGenerationToolResultContent("id-3") { Outputs = [image3] }] },
1023
new() {
Contents
= [new WebSearchToolCallContent("ws1") { Queries = ["first query"] }] },
1029
new() {
Contents
= [new WebSearchToolCallContent("ws1") { Queries = ["second query"], RawRepresentation = rawRepresentation, AdditionalProperties = additionalProps }] },
1032
new() {
Contents
= [new WebSearchToolCallContent("ws2") { Queries = ["AI safety"] }] },
1035
new() {
Contents
= [new WebSearchToolCallContent("ws1")] },
1067
new() {
Contents
= [new WebSearchToolCallContent("ws1")] },
1068
new() {
Contents
= [new WebSearchToolCallContent("ws1") { Queries = ["query from second"] }] },
1086
new() {
Contents
= [new WebSearchToolCallContent("ws1") { Queries = ["q1"] }] },
1087
new() {
Contents
= [new WebSearchToolCallContent("ws2") { Queries = ["q2"] }] },
1088
new() {
Contents
= [new WebSearchToolCallContent("ws3") { Queries = ["q3"] }] },
1120
new() {
Contents
= [inProgress] },
1123
new() {
Contents
= [new WebSearchToolCallContent("ws1") { Queries = ["dotnet extensions"] }] },
1127
new() {
Contents
= [new FunctionCallContent("fc1", "SearchTool", new Dictionary<string, object?> { ["q"] = "test" })] },
ChatCompletion\ChatResponseUpdateTests.cs (7)
49
update.
Contents
= newList;
51
update.
Contents
= null;
90
Contents
=
119
Contents
=
182
Contents
=
254
Contents
= originalContents,
381
Contents
= sharedContents
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponseUpdate.g.cs (1)
120
Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
= value!,
Microsoft.Extensions.AI.OpenAI.Tests (1)
OpenAIConversionTests.cs (1)
1744
Contents
=
Microsoft.Extensions.AI.Tests (25)
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)
1192
new() {
Contents
= [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] },
1193
new() {
Contents
= [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] }
1198
updates = [new() {
Contents
= [new TextContent("OK bye")] }];
ChatCompletion\OpenTelemetryChatClientTests.cs (13)
87
Contents
= [new UsageContent(new()
423
yield return new() {
Contents
= [new TextReasoningContent("This is reasoning")] };
424
yield return new() {
Contents
= [new FunctionCallContent("call-123", "GetWeather", new Dictionary<string, object?> { ["location"] = "Seattle" })] };
425
yield return new() {
Contents
= [new FunctionResultContent("call-123", "72°F and sunny")] };
426
yield return new() {
Contents
= [new DataContent(Convert.FromBase64String("aGVsbG8gd29ybGQ="), "image/png")] };
427
yield return new() {
Contents
= [new UriContent(new Uri("https://example.com/image.jpg"), "image/jpeg")] };
428
yield return new() {
Contents
= [new HostedFileContent("file-abc123")] };
677
yield return new() {
Contents
= [new CodeInterpreterToolCallContent("ci-call-1") { Inputs = [new TextContent("print('hello')")] }] };
678
yield return new() {
Contents
= [new CodeInterpreterToolResultContent("ci-call-1") { Outputs = [new TextContent("hello")] }] };
679
yield return new() {
Contents
= [new ImageGenerationToolCallContent("img-123")] };
682
Contents
=
690
yield return new() {
Contents
= [new McpServerToolCallContent("mcp-call-1", "myTool", "myServer") { Arguments = new Dictionary<string, object?> { ["param1"] = "value1" } }] };
691
yield return new() {
Contents
= [new McpServerToolResultContent("mcp-call-1") { Outputs = [new TextContent("Tool result")] }] };
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponseUpdate.g.cs (1)
120
Setter = static (obj, value) => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
= value!,
186 references to Contents
Aspire.Dashboard (3)
Model\Assistant\AIHelpers.cs (3)
334
foreach (var item in update.
Contents
.OfType<TextContent>())
353
var contentsList = filter is null ? update.
Contents
: update.
Contents
.Where(filter).ToList();
Microsoft.AspNetCore.Components.AI (8)
Engine\UIAgent.cs (1)
135
var contentTypes = string.Join(", ", update.
Contents
.Select(c => c.GetType().Name));
Pipeline\BlockMappingContext.cs (5)
21
_handled = new bool[update.
Contents
.Count];
32
public UnhandledContentsEnumerable UnhandledContents => new(Update.
Contents
, _handled);
40
var contents = Update.
Contents
;
67
_handledCount >= Update.
Contents
.Count && (Update.
Contents
.Count > 0 || _updateHandled);
Pipeline\BlockMappingPipeline.cs (2)
42
var contentTypes = string.Join(", ", update.
Contents
.Select(c => c.GetType().Name));
43
BlockMappingPipelineLog.ProcessingUpdate(_logger, update.Role?.Value, update.
Contents
.Count, contentTypes);
Microsoft.Extensions.AI (6)
ChatCompletion\FunctionInvokingChatClient.cs (4)
551
_ = CopyFunctionCalls(update.
Contents
, ref functionCallContents);
555
IList<AIContent> contents = update.
Contents
;
624
if (TryReplaceFunctionCallsWithApprovalRequests(updateToYield.
Contents
, approvalRequiredFunctions, out var updatedContents))
980
IList<AIContent> contents = updates[i].
Contents
;
ChatCompletion\ImageGeneratingChatClient.cs (2)
109
var newContents = requestState.ReplaceImageGenerationFunctionResults(update.
Contents
);
111
if (!ReferenceEquals(newContents, update.
Contents
))
Microsoft.Extensions.AI.Abstractions (7)
ChatCompletion\ChatResponse.cs (1)
134
extra.
Contents
.Add(new UsageContent(usage));
ChatCompletion\ChatResponseExtensions.cs (3)
87
var contentsList = filter is null ? update.
Contents
: update.
Contents
.Where(filter).ToList();
620
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
"/>.
Generated\Basic.CompilerLog.Util\Basic.CompilerLog.Util.Impl.BasicGeneratedFilesAnalyzerReference\JsonContext.ChatResponseUpdate.g.cs (1)
121
Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
,
Microsoft.Extensions.AI.Abstractions.Tests (46)
ChatCompletion\ChatResponseUpdateTests.cs (45)
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]);
142
Assert.Equal(5, result.
Contents
.Count);
144
Assert.IsType<TextContent>(result.
Contents
[0]);
145
Assert.Equal("text-1", ((TextContent)result.
Contents
[0]).Text);
147
Assert.IsType<DataContent>(result.
Contents
[1]);
148
Assert.Equal("data:image/png;base64,aGVsbG8=", ((DataContent)result.
Contents
[1]).Uri);
150
Assert.IsType<FunctionCallContent>(result.
Contents
[2]);
151
Assert.Equal("fc1", ((FunctionCallContent)result.
Contents
[2]).Name);
153
Assert.IsType<DataContent>(result.
Contents
[3]);
154
Assert.Equal("data"u8.ToArray(), ((DataContent)result.
Contents
[3]).Data.ToArray());
156
Assert.IsType<TextContent>(result.
Contents
[4]);
157
Assert.Equal("text-2", ((TextContent)result.
Contents
[4]).Text);
206
Assert.Equal(5, result.
Contents
.Count);
208
Assert.IsType<TextContent>(result.
Contents
[0]);
209
Assert.Equal("text-1", ((TextContent)result.
Contents
[0]).Text);
211
Assert.IsType<DataContent>(result.
Contents
[1]);
212
Assert.Equal("data:image/png;base64,aGVsbG8=", ((DataContent)result.
Contents
[1]).Uri);
214
Assert.IsType<FunctionCallContent>(result.
Contents
[2]);
215
Assert.Equal("fc1", ((FunctionCallContent)result.
Contents
[2]).Name);
217
Assert.IsType<DataContent>(result.
Contents
[3]);
218
Assert.Equal("data"u8.ToArray(), ((DataContent)result.
Contents
[3]).Data.ToArray());
220
Assert.IsType<TextContent>(result.
Contents
[4]);
221
Assert.Equal("text-2", ((TextContent)result.
Contents
[4]).Text);
283
Assert.Same(original.
Contents
, clone.
Contents
);
312
Assert.Empty(clone.
Contents
); // Contents property initializes to empty list
328
Assert.Empty(clone.
Contents
);
393
Assert.Same(original.
Contents
, clone.
Contents
);
396
Assert.Equal(2, original.
Contents
.Count);
397
Assert.Equal(2, clone.
Contents
.Count);
438
Assert.Equal(2, result.
Contents
.Count);
439
var textContent = Assert.IsType<TextContent>(result.
Contents
[0]);
441
var dataContent = Assert.IsType<DataContent>(result.
Contents
[1]);
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponseUpdate.g.cs (1)
119
Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
,
Microsoft.Extensions.AI.Integration.Tests (1)
ChatClientIntegrationTests.cs (1)
149
UsageContent usage = chunks.SelectMany(c => c.
Contents
).OfType<UsageContent>().Single();
Microsoft.Extensions.AI.OpenAI (16)
MicrosoftExtensionsAIChatExtensions.cs (3)
148
var usage = update.
Contents
.FirstOrDefault(c => c is UsageContent) is UsageContent usageContent ?
155
var toolCallUpdates = update.
Contents
.OfType<FunctionCallContent>().Select((fcc, index) =>
165
new(OpenAIChatClient.ToOpenAIChatContent(update.
Contents
)),
OpenAIAssistantsChatClient.cs (5)
181
ruUpdate.
Contents
.Add(new UsageContent(new()
196
ruUpdate.
Contents
.Add(fcc);
282
if (textUpdate.
Contents
.Count == 0)
285
textUpdate.
Contents
.Add(new TextContent(string.Empty));
288
(((TextContent)textUpdate.
Contents
[0]).Annotations ??= []).Add(new CitationAnnotation
OpenAIChatClient.cs (6)
390
ConvertContentParts(update.ContentUpdate, responseUpdate.
Contents
);
397
responseUpdate.
Contents
.Add(new TextReasoningContent(reasoningText));
402
responseUpdate.
Contents
.Add(new DataContent(audioUpdate.AudioBytesUpdate.ToMemory(), GetOutputAudioMimeType(options))
437
responseUpdate.
Contents
.Add(new UsageContent(FromOpenAIUsage(tokenUsage))
469
responseUpdate.
Contents
.Add(callContent);
477
responseUpdate.
Contents
.Add(new ErrorContent(refusal.ToString()) { ErrorCode = "Refusal" });
OpenAIResponsesChatClient.cs (2)
523
AddMcpToolCallContent(mtci, mcpUpdate.
Contents
);
621
toolCallUpdate.
Contents
.Add(new ToolResultContent(outputItemDoneUpdate.Item.Id) { RawRepresentation = outputItemDoneUpdate.Item });
Microsoft.Extensions.AI.OpenAI.Tests (81)
OpenAIChatClientTests.cs (5)
255
Assert.Equal(i == 10 ? 0 : 1, updates[i].
Contents
.Count);
259
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
1348
FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(Assert.Single(updates[updates.Count - 1].
Contents
));
1353
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
1967
string reasoningText = string.Concat(updates.SelectMany(u => u.
Contents
).OfType<TextReasoningContent>().Select(r => r.Text));
OpenAIConversionTests.cs (15)
1019
FunctionCallContent? fcc = updates[0].
Contents
.OfType<FunctionCallContent>().FirstOrDefault();
1025
McpServerToolCallContent? mcpToolCallContent = updates[1].
Contents
.OfType<McpServerToolCallContent>().FirstOrDefault();
1032
McpServerToolResultContent? mcpToolResultContent = updates[1].
Contents
.OfType<McpServerToolResultContent>().FirstOrDefault();
1039
ToolApprovalRequestContent? approvalRequest = updates[2].
Contents
.OfType<ToolApprovalRequestContent>().FirstOrDefault();
1050
ToolApprovalResponseContent? approvalResponse = updates[3].
Contents
.OfType<ToolApprovalResponseContent>().FirstOrDefault();
1066
WebSearchToolCallContent? wsToolCall = updates[4].
Contents
.OfType<WebSearchToolCallContent>().FirstOrDefault();
1072
WebSearchToolResultContent? wsToolResult = updates[5].
Contents
.OfType<WebSearchToolResultContent>().FirstOrDefault();
1078
ToolCallContent? fsToolCall = updates[6].
Contents
.OfType<ToolCallContent>().FirstOrDefault();
1083
ToolResultContent? fsToolResult = updates[6].
Contents
.OfType<ToolResultContent>().FirstOrDefault();
1089
ToolCallContent? cuToolCall = updates[7].
Contents
.OfType<ToolCallContent>().FirstOrDefault();
1095
ToolResultContent? cuToolResult = updates[8].
Contents
.OfType<ToolResultContent>().FirstOrDefault();
1101
AIContent? apCallContent = updates[9].
Contents
.FirstOrDefault(c => c.RawRepresentation == applyPatchItem);
1106
AIContent? apOutputContent = updates[10].
Contents
.FirstOrDefault(c => c.RawRepresentation == applyPatchOutputItem);
1142
Assert.Empty(updates[0].
Contents
.OfType<ToolApprovalResponseContent>());
1145
AIContent? genericContent = updates[0].
Contents
.FirstOrDefault(c => c.RawRepresentation == mcpApprovalResponse);
OpenAIResponseClientTests.cs (61)
325
Assert.Single(updates[i].
Contents
);
328
var reasoning = Assert.IsType<TextReasoningContent>(updates[i].
Contents
.Single());
335
Assert.Single(updates[i].
Contents
);
340
Assert.Empty(updates[i].
Contents
);
346
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
458
Assert.Single(u.
Contents
);
460
var reasoning = Assert.IsType<TextReasoningContent>(u.
Contents
.Single());
465
var allReasoningText = string.Concat(reasoningUpdates.Select(u => u.
Contents
.OfType<TextReasoningContent>().First().Text));
473
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
567
var reasoningContents = updates.SelectMany(u => u.
Contents
).OfType<TextReasoningContent>().ToList();
768
Assert.Equal((i >= 4 && i <= 12) || i == 16 ? 1 : 0, updates[i].
Contents
.Count);
777
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
1008
Assert.Equal(i >= 3 ? 1 : 0, updates[i].
Contents
.Count);
1013
ToolCallContent content = Assert.IsType<ToolCallContent>(Assert.Single(updates[3].
Contents
));
1019
UsageContent usage = Assert.IsType<UsageContent>(Assert.Single(updates[4].
Contents
));
3148
Assert.Equal((i >= 5 && i <= 13) || i == 17 ? 1 : 0, updates[i].
Contents
.Count);
3232
Assert.Single(updates[i].
Contents
);
3242
Assert.Empty(updates[i].
Contents
);
3248
Assert.Single(updates[i].
Contents
);
3702
u.
Contents
!= null && u.
Contents
.Any(c => c is CodeInterpreterToolCallContent)).ToList();
3711
var content = update.
Contents
.OfType<CodeInterpreterToolCallContent>().First();
3730
u.
Contents
!= null && u.
Contents
.Any(c => c is CodeInterpreterToolResultContent)).ToList();
5800
var refusalUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent ec && ec.ErrorCode == "Refusal"));
5803
var errorContent = refusalUpdate.
Contents
.OfType<ErrorContent>().First();
5858
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
5861
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
5901
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
5904
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
5944
var errorUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c is ErrorContent));
5947
var errorContent = errorUpdate.
Contents
.OfType<ErrorContent>().First();
5987
var annotatedUpdate = updates.FirstOrDefault(u => u.
Contents
.Any(c => c.Annotations?.Count > 0));
5989
Assert.NotEmpty(annotatedUpdate.
Contents
.First().Annotations!);
6063
var functionCallUpdate = updates.FirstOrDefault(u => u.
Contents
.OfType<FunctionCallContent>().Any());
6066
var fcc = functionCallUpdate.
Contents
.OfType<FunctionCallContent>().Single();
6071
var functionResultUpdate = updates.FirstOrDefault(u => u.
Contents
.OfType<FunctionResultContent>().Any());
6074
var frc = functionResultUpdate.
Contents
.OfType<FunctionResultContent>().Single();
6097
UsageContent usage = updates.SelectMany(u => u.
Contents
).OfType<UsageContent>().Single();
6486
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolCallContent));
6488
var toolCall = toolCallUpdate.
Contents
.OfType<ImageGenerationToolCallContent>().First();
6493
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolResultContent result &&
6499
u.
Contents
!= null && u.
Contents
.Any(c => c is UsageContent));
6501
var usage = completionUpdate.
Contents
.OfType<UsageContent>().First();
6599
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolResultContent result &&
6608
u.
Contents
.OfType<ImageGenerationToolResultContent>().Any(result =>
6645
u.
Contents
!= null && u.
Contents
.Any(c => c is ImageGenerationToolCallContent));
6647
var toolCall = toolCallUpdate.
Contents
.OfType<ImageGenerationToolCallContent>().First();
7268
var wsCallUpdates = updates.Where(u => u.
Contents
.OfType<WebSearchToolCallContent>().Any()).ToList();
7271
var wsCallInProgress = wsCallUpdates[0].
Contents
.OfType<WebSearchToolCallContent>().Single();
7276
var wsCallDone = wsCallUpdates[1].
Contents
.OfType<WebSearchToolCallContent>().Single();
7282
var wsResultUpdate = updates.FirstOrDefault(u => u.
Contents
.OfType<WebSearchToolResultContent>().Any());
7284
var wsResult = wsResultUpdate.
Contents
.OfType<WebSearchToolResultContent>().First();
7294
var textUpdates = updates.Where(u => u.
Contents
.OfType<TextContent>().Any()).ToList();
8937
var functionCallUpdate = updates.FirstOrDefault(u => u.
Contents
.OfType<FunctionCallContent>().Any());
8939
var call = functionCallUpdate.
Contents
.OfType<FunctionCallContent>().Single();
Microsoft.Extensions.AI.Tests (18)
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)
1503
var functionCall = update.
Contents
.OfType<FunctionCallContent>().First();
1585
Assert.Equal("Text 1", update.
Contents
.OfType<TextContent>().First().Text);
1591
Assert.Equal("Text 2", update.
Contents
.OfType<TextContent>().First().Text);
1597
var approvalRequest1 = update.
Contents
.OfType<ToolApprovalRequestContent>().First();
1605
var approvalRequest2 = update.
Contents
.OfType<ToolApprovalRequestContent>().First();
1613
var approvalRequest3 = update.
Contents
.OfType<ToolApprovalRequestContent>().First();
ChatCompletion\ImageGeneratingChatClientTests.cs (3)
381
Assert.Single(update.
Contents
);
383
var imageToolCallContent = Assert.IsType<ImageGenerationToolCallContent>(update.
Contents
[0]);
508
var contents = updates[0].
Contents
;
Generated\361d1da7f942c932\TestJsonSerializerContext.ChatResponseUpdate.g.cs (1)
119
Getter = static obj => ((global::Microsoft.Extensions.AI.ChatResponseUpdate)obj).
Contents
,