67 writes to Contents
Microsoft.Extensions.AI (3)
ChatCompletion\FunctionInvokingChatClient.cs (2)
561updateToYield.Contents = updatedContents; 634Contents = message.Contents,
ChatCompletion\ImageGeneratingChatClient.cs (1)
114modifiedUpdate.Contents = newContents;
Microsoft.Extensions.AI.Abstractions (2)
ChatCompletion\ChatResponse.cs (1)
151Contents = message.Contents,
ChatCompletion\ChatResponseUpdate.cs (1)
73Contents = Contents,
Microsoft.Extensions.AI.Abstractions.Tests (43)
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (37)
35new() { Contents = [new UsageContent(new() { InputTokenCount = 1, OutputTokenCount = 2 })] }, 36new() { Contents = [new UsageContent(new() { InputTokenCount = 4, OutputTokenCount = 5 })] }, 577updates.Add(new() { Contents = [new DataContent("data:image/png;base64,aGVsbG8=")] }); 607new() { Contents = [new TextReasoningContent("D")] }, 608new() { Contents = [new TextReasoningContent("E")] }, 609new() { Contents = [new TextReasoningContent("F")] }, 612new() { Contents = [new TextReasoningContent("I")] }, 613new() { Contents = [new TextReasoningContent("J")] }, 615new() { Contents = [new TextReasoningContent("L")] }, 618new() { Contents = [new TextReasoningContent("O")] }, 619new() { Contents = [new TextReasoningContent("P")] }, 642new() { Contents = [new TextReasoningContent("A") { ProtectedData = "1" }] }, 643new() { Contents = [new TextReasoningContent("B") { ProtectedData = "2" }] }, 644new() { Contents = [new TextReasoningContent("C")] }, 645new() { Contents = [new TextReasoningContent("D")] }, 646new() { Contents = [new TextReasoningContent("E") { ProtectedData = "3" }] }, 647new() { Contents = [new TextReasoningContent("F") { ProtectedData = "4" }] }, 648new() { Contents = [new TextReasoningContent("G")] }, 649new() { Contents = [new TextReasoningContent("H")] }, 682new() { Contents = [new TextContent("D") { Annotations = [new()] }] }, 683new() { Contents = [new TextContent("E") { Annotations = [new()] }] }, 684new() { Contents = [new TextContent("F") { Annotations = [new()] }] }, 685new() { Contents = [new TextContent("G") { Annotations = [] }] }, 686new() { Contents = [new TextContent("H") { Annotations = [] }] }, 687new() { Contents = [new TextContent("I") { Annotations = [new()] }] }, 688new() { Contents = [new TextContent("J") { Annotations = [new()] }] }, 690new() { Contents = [new TextContent("L") { Annotations = [new()] }] }, 693new() { Contents = [new TextContent("O") { Annotations = [new()] }] }, 694new() { Contents = [new TextContent("P") { Annotations = [new()] }] }, 721new() { Contents = [new UsageContent(new() { TotalTokenCount = 42 })] }, 843new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image1] }] }, 846new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image2] }] }, 849new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image3] }] }, 852new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image4] }] }, 897new() { Contents = [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image1] }] }, 900new() { Contents = [new ImageGenerationToolResultContent { ImageId = "", Outputs = [image2] }] }, 903new() { Contents = [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image3] }] },
ChatCompletion\ChatResponseUpdateTests.cs (6)
49update.Contents = newList; 51update.Contents = null; 90Contents = 119Contents = 184Contents = originalContents, 311Contents = sharedContents
Microsoft.Extensions.AI.OpenAI.Tests (1)
OpenAIConversionTests.cs (1)
1010Contents =
Microsoft.Extensions.AI.Tests (18)
ChatCompletion\DistributedCachingChatClientTest.cs (8)
252Contents = 265Contents = [new FunctionCallContent("someCallId", "someFn", new Dictionary<string, object?> { ["arg1"] = "value1" })], 269Contents = [new UsageContent(new() { InputTokenCount = 123, OutputTokenCount = 456, TotalTokenCount = 99999 })], 315new() { Role = ChatRole.Assistant, Contents = [new FunctionCallContent("callId1", "separator")] }, 368new() { Role = ChatRole.Assistant, Contents = [new TextContent("Hello")] }, 369new() { Role = ChatRole.Assistant, Contents = [new TextContent(" world, ")] }, 373Contents = 384Contents =
ChatCompletion\FunctionInvokingChatClientTests.cs (3)
760new() { Contents = [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] }, 761new() { Contents = [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] } 766updates = [new() { Contents = [new TextContent("OK bye")] }];
ChatCompletion\OpenTelemetryChatClientTests.cs (7)
82Contents = [new UsageContent(new() 372yield return new() { Contents = [new TextReasoningContent("This is reasoning")] }; 373yield return new() { Contents = [new FunctionCallContent("call-123", "GetWeather", new Dictionary<string, object?> { ["location"] = "Seattle" })] }; 374yield return new() { Contents = [new FunctionResultContent("call-123", "72°F and sunny")] }; 375yield return new() { Contents = [new DataContent(Convert.FromBase64String("aGVsbG8gd29ybGQ="), "image/png")] }; 376yield return new() { Contents = [new UriContent(new Uri("https://example.com/image.jpg"), "image/jpeg")] }; 377yield return new() { Contents = [new HostedFileContent("file-abc123")] };
115 references to Contents
Aspire.Dashboard (3)
Model\Assistant\AIHelpers.cs (3)
486foreach (var item in update.Contents.OfType<TextContent>()) 505var contentsList = filter is null ? update.Contents : update.Contents.Where(filter).ToList();
Microsoft.Extensions.AI (5)
ChatCompletion\FunctionInvokingChatClient.cs (3)
499_ = CopyFunctionCalls(update.Contents, ref functionCallContents); 503IList<AIContent> contents = update.Contents; 559if (TryReplaceFunctionCallsWithApprovalRequests(updateToYield.Contents, out var updatedContents))
ChatCompletion\ImageGeneratingChatClient.cs (2)
108var newContents = requestState.ReplaceImageGenerationFunctionResults(update.Contents); 110if (!ReferenceEquals(newContents, update.Contents))
Microsoft.Extensions.AI.Abstractions (6)
ChatCompletion\ChatResponse.cs (1)
136extra.Contents.Add(new UsageContent(usage));
ChatCompletion\ChatResponseExtensions.cs (3)
87var contentsList = filter is null ? update.Contents : update.Contents.Where(filter).ToList(); 538foreach (var content in update.Contents)
ChatCompletion\ChatResponseUpdate.cs (2)
73Contents = 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)
20Assert.Empty(update.Contents); 43Assert.Empty(update.Contents); 44update.Contents.Add(new TextContent("text")); 45Assert.Single(update.Contents); 47Assert.Same(update.Contents, update.Contents); 50Assert.Same(newList, update.Contents); 52Assert.NotNull(update.Contents); 53Assert.Empty(update.Contents); 101TextContent textContent = Assert.IsType<TextContent>(update.Contents[3]); 106((TextContent)update.Contents[3]).Text = "text-3"; 108Assert.Same(textContent, update.Contents[3]); 140Assert.Equal(5, result.Contents.Count); 142Assert.IsType<TextContent>(result.Contents[0]); 143Assert.Equal("text-1", ((TextContent)result.Contents[0]).Text); 145Assert.IsType<DataContent>(result.Contents[1]); 146Assert.Equal("data:image/png;base64,aGVsbG8=", ((DataContent)result.Contents[1]).Uri); 148Assert.IsType<FunctionCallContent>(result.Contents[2]); 149Assert.Equal("fc1", ((FunctionCallContent)result.Contents[2]).Name); 151Assert.IsType<DataContent>(result.Contents[3]); 152Assert.Equal("data"u8.ToArray(), ((DataContent)result.Contents[3]).Data.ToArray()); 154Assert.IsType<TextContent>(result.Contents[4]); 155Assert.Equal("text-2", ((TextContent)result.Contents[4]).Text); 213Assert.Same(original.Contents, clone.Contents); 242Assert.Empty(clone.Contents); // Contents property initializes to empty list 258Assert.Empty(clone.Contents); 323Assert.Same(original.Contents, clone.Contents); 326Assert.Equal(2, original.Contents.Count); 327Assert.Equal(2, clone.Contents.Count);
Microsoft.Extensions.AI.AzureAIInference (3)
AzureAIInferenceChatClient.cs (3)
179responseUpdate.Contents.Add(new TextContent(update)); 205responseUpdate.Contents.Add(new UsageContent(new() 239responseUpdate.Contents.Add(callContent);
Microsoft.Extensions.AI.AzureAIInference.Tests (2)
AzureAIInferenceChatClientTests.cs (2)
242Assert.Equal(i is < 10 or 11 ? 1 : 0, updates[i].Contents.Count); 1358FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(Assert.Single(updates[updates.Count - 1].Contents));
Microsoft.Extensions.AI.Integration.Tests (1)
ChatClientIntegrationTests.cs (1)
159UsageContent usage = chunks.SelectMany(c => c.Contents).OfType<UsageContent>().Single();
Microsoft.Extensions.AI.OpenAI (15)
MicrosoftExtensionsAIChatExtensions.cs (3)
143var usage = update.Contents.FirstOrDefault(c => c is UsageContent) is UsageContent usageContent ? 150var toolCallUpdates = update.Contents.OfType<FunctionCallContent>().Select((fcc, index) => 158new(OpenAIChatClient.ToOpenAIChatContent(update.Contents)),
OpenAIAssistantsChatClient.cs (5)
178ruUpdate.Contents.Add(new UsageContent(new() 193ruUpdate.Contents.Add(fcc); 281if (textUpdate.Contents.Count == 0) 284textUpdate.Contents.Add(new TextContent(string.Empty)); 287(((TextContent)textUpdate.Contents[0]).Annotations ??= []).Add(new CitationAnnotation
OpenAIChatClient.cs (5)
363ConvertContentParts(update.ContentUpdate, responseUpdate.Contents); 368responseUpdate.Contents.Add(new DataContent(audioUpdate.AudioBytesUpdate.ToMemory(), GetOutputAudioMimeType(options)) 403responseUpdate.Contents.Add(new UsageContent(FromOpenAIUsage(tokenUsage)) 435responseUpdate.Contents.Add(callContent); 443responseUpdate.Contents.Add(new ErrorContent(refusal.ToString()) { ErrorCode = "Refusal" });
OpenAIResponsesChatClient.cs (2)
402AddMcpToolCallContent(mtci, mcpUpdate.Contents); 423AddCodeInterpreterContents(cicri, codeUpdate.Contents);
Microsoft.Extensions.AI.OpenAI.Tests (33)
OpenAIChatClientTests.cs (4)
253Assert.Equal(i == 10 ? 0 : 1, updates[i].Contents.Count); 257UsageContent usage = updates.SelectMany(u => u.Contents).OfType<UsageContent>().Single(); 1345FunctionCallContent fcc = Assert.IsType<FunctionCallContent>(Assert.Single(updates[updates.Count - 1].Contents)); 1350UsageContent usage = updates.SelectMany(u => u.Contents).OfType<UsageContent>().Single();
OpenAIResponseClientTests.cs (29)
327Assert.Single(updates[i].Contents); 330var reasoning = Assert.IsType<TextReasoningContent>(updates[i].Contents.Single()); 337Assert.Single(updates[i].Contents); 342Assert.Empty(updates[i].Contents); 348UsageContent usage = updates.SelectMany(u => u.Contents).OfType<UsageContent>().Single(); 454Assert.Equal((i >= 4 && i <= 12) || i == 16 ? 1 : 0, updates[i].Contents.Count); 463UsageContent usage = updates.SelectMany(u => u.Contents).OfType<UsageContent>().Single(); 2111Assert.Equal((i >= 5 && i <= 13) || i == 17 ? 1 : 0, updates[i].Contents.Count); 2195Assert.Single(updates[i].Contents); 2205Assert.Empty(updates[i].Contents); 2211Assert.Single(updates[i].Contents); 4505var refusalUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent ec && ec.ErrorCode == "Refusal")); 4508var errorContent = refusalUpdate.Contents.OfType<ErrorContent>().First(); 4563var annotatedUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c.Annotations?.Count > 0)); 4565Assert.NotEmpty(annotatedUpdate.Contents.First().Annotations!); 4827u.Contents != null && u.Contents.Any(c => c is ImageGenerationToolCallContent)); 4829var toolCall = toolCallUpdate.Contents.OfType<ImageGenerationToolCallContent>().First(); 4834u.Contents != null && u.Contents.Any(c => c is ImageGenerationToolResultContent result && 4840u.Contents != null && u.Contents.Any(c => c is UsageContent)); 4842var usage = completionUpdate.Contents.OfType<UsageContent>().First(); 4941u.Contents != null && u.Contents.Any(c => c is ImageGenerationToolResultContent result && 4950u.Contents.OfType<ImageGenerationToolResultContent>().Any(result => 4987u.Contents != null && u.Contents.Any(c => c is ImageGenerationToolCallContent)); 4989var toolCall = toolCallUpdate.Contents.OfType<ImageGenerationToolCallContent>().First();
Microsoft.Extensions.AI.Tests (16)
ChatCompletion\DistributedCachingChatClientTest.cs (8)
345Assert.Collection(update.Contents, 355c => Assert.IsType<FunctionCallContent>(Assert.Single(c.Contents)), 424var content = Assert.IsType<TextContent>(Assert.Single(item.Contents)); 844Assert.Equal(expectedItem.Contents.Count, actualItem.Contents.Count); 846for (var itemIndex = 0; itemIndex < expectedItem.Contents.Count; itemIndex++) 848var expectedItemItem = expectedItem.Contents[itemIndex]; 849var actualItemItem = actualItem.Contents[itemIndex];
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (6)
727var functionCall = update.Contents.OfType<FunctionCallContent>().First(); 806Assert.Equal("Text 1", update.Contents.OfType<TextContent>().First().Text); 812Assert.Equal("Text 2", update.Contents.OfType<TextContent>().First().Text); 818var approvalRequest1 = update.Contents.OfType<FunctionApprovalRequestContent>().First(); 826var approvalRequest2 = update.Contents.OfType<FunctionApprovalRequestContent>().First(); 834var approvalRequest3 = update.Contents.OfType<FunctionApprovalRequestContent>().First();
ChatCompletion\ImageGeneratingChatClientTests.cs (2)
381Assert.Single(update.Contents); 383var imageToolCallContent = Assert.IsType<ImageGenerationToolCallContent>(update.Contents[0]);