250 instantiations of ChatResponseUpdate
Microsoft.Extensions.AI (1)
ChatCompletion\FunctionInvokingChatClient.cs (1)
688new()
Microsoft.Extensions.AI.Abstractions (3)
ChatCompletion\ChatResponse.cs (2)
130extra = new ChatResponseUpdate 148updates[i] = new ChatResponseUpdate
ChatCompletion\ChatResponseUpdate.cs (1)
70new()
Microsoft.Extensions.AI.Abstractions.Tests (168)
ChatCompletion\ChatClientExtensionsTests.cs (2)
146return YieldAsync([new ChatResponseUpdate(ChatRole.Assistant, "world")]); 233return YieldAsync([new ChatResponseUpdate(ChatRole.Assistant, "world")]);
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (155)
31new(ChatRole.Assistant, "Hello") { ResponseId = "someResponse", MessageId = "12345", CreatedAt = new DateTimeOffset(2024, 2, 3, 4, 5, 6, TimeSpan.Zero), ModelId = "model123" }, 32new(ChatRole.Assistant, ", ") { AuthorName = "Someone", AdditionalProperties = new() { ["a"] = "b" } }, 33new(null, "world!") { CreatedAt = new DateTimeOffset(2025, 2, 3, 4, 5, 6, TimeSpan.Zero), ConversationId = "123", AdditionalProperties = new() { ["c"] = "d" } }, 35new() { Contents = [new UsageContent(new() { InputTokenCount = 1, OutputTokenCount = 2 })] }, 36new() { Contents = [new UsageContent(new() { InputTokenCount = 4, OutputTokenCount = 5 })] }, 75new(null, "!") { MessageId = "1" }, 76new(ChatRole.Assistant, "a") { MessageId = "1" }, 77new(ChatRole.Assistant, "b") { MessageId = "2" }, 78new(ChatRole.User, "c") { MessageId = "2" }, 79new(ChatRole.User, "d") { MessageId = "2" }, 80new(ChatRole.Assistant, "e") { MessageId = "3" }, 81new(ChatRole.Tool, "f") { MessageId = "4" }, 82new(ChatRole.Tool, "g") { MessageId = "4" }, 83new(ChatRole.Tool, "h") { MessageId = "5" }, 84new(new("human"), "i") { MessageId = "6" }, 85new(new("human"), "j") { MessageId = "7" }, 86new(new("human"), "k") { MessageId = "7" }, 87new(null, "l") { MessageId = "7" }, 88new(null, "m") { MessageId = "8" }, 133new(ChatRole.Assistant, "Hello ") { AuthorName = "Alice" }, 134new(null, "from ") { AuthorName = "Alice" }, 135new(null, "Alice!"), 138new(null, "Hi ") { AuthorName = "Bob" }, 139new(null, "from ") { AuthorName = "Bob" }, 140new(null, "Bob!"), 143new(ChatRole.Assistant, "Greetings ") { AuthorName = "Charlie" }, 144new(null, "from Charlie!") { AuthorName = "Charlie" }, 147new(null, "Alice again!") { AuthorName = "Alice" }, 150new(null, " Still Alice.") { AuthorName = "" }, 151new(null, " And more."), 186new(ChatRole.Assistant, "A") { MessageId = "1", AuthorName = "Alice" }, 187new(null, "B") { MessageId = "1", AuthorName = "Alice" }, 190new(null, "C") { MessageId = "1", AuthorName = "Bob" }, 193new(null, "D") { MessageId = "2", AuthorName = "Bob" }, 194new(null, "E") { MessageId = "2", AuthorName = "Bob" }, 197new(ChatRole.User, "F") { MessageId = "2", AuthorName = "Bob" }, 200new(ChatRole.Tool, "G") { MessageId = "3", AuthorName = "Charlie" }, 201new(null, "H") { MessageId = "3", AuthorName = "Charlie" }, 245new(ChatRole.Assistant, "Hello") { AuthorName = "Assistant" }, 248new(null, " world") { AuthorName = "" }, 251new(null, "!"), 254new(null, " How") { AuthorName = "" }, 255new(null, " are") { AuthorName = "" }, 258new(null, " you?") { AuthorName = null }, 280new(ChatRole.Assistant, "Hello") { MessageId = "1" }, 281new(null, " there") { MessageId = "1" }, 284new(null, " I'm Bob") { MessageId = "1", AuthorName = "Bob" }, 285new(null, " speaking") { MessageId = "1", AuthorName = "Bob" }, 288new(null, "Now Alice") { MessageId = "1", AuthorName = "Alice" }, 315new(ChatRole.Assistant, "Hello"), 316new(null, " there"), 319new(null, " from") { MessageId = "msg1" }, 320new(null, " AI") { MessageId = "msg1" }, 323new(null, "Next message") { MessageId = "msg2" }, 350new(ChatRole.Assistant, "Hello") { MessageId = "msg1" }, 351new(null, " world") { MessageId = "msg1" }, 354new(null, "!") { MessageId = "" }, 357new(null, " How"), 360new(null, " are") { MessageId = "" }, 361new(null, " you?"), 383new(null, "Hello") { MessageId = "1" }, 384new(null, " there") { MessageId = "1" }, 387new(ChatRole.Assistant, " from") { MessageId = "1" }, 388new(null, " AI") { MessageId = "1" }, 391new(ChatRole.User, "User message") { MessageId = "1" }, 418new(new ChatRole("agent1"), "Hello") { MessageId = "1" }, 419new(null, " from") { MessageId = "1" }, 420new(new ChatRole("agent1"), " agent1") { MessageId = "1" }, 423new(new ChatRole("agent2"), "Hi") { MessageId = "1" }, 424new(null, " from") { MessageId = "1" }, 425new(new ChatRole("agent2"), " agent2") { MessageId = "1" }, 428new(ChatRole.Assistant, "Assistant here") { MessageId = "1" }, 456new(ChatRole.Assistant, "First message") { MessageId = "msg1", AdditionalProperties = new() { ["key1"] = "value1" } }, 457new(null, " part 2") { MessageId = "msg1", AdditionalProperties = new() { ["key2"] = "value2" } }, 460new(ChatRole.User, "Second message") { MessageId = "msg2", AdditionalProperties = new() { ["key1"] = "different_value1" } }, 461new(null, " part 2") { MessageId = "msg2", AdditionalProperties = new() { ["key3"] = "value3" } }, 464new(ChatRole.Assistant, "Third message") { MessageId = "msg3" }, 508new(ChatRole.Assistant, "Hello") { MessageId = "msg1", AdditionalProperties = new() { ["messageKey"] = "messageValue" } }, 511new() { AdditionalProperties = new() { ["responseKey"] = "responseValue" } }, 541new(null, "Hi! ") { CreatedAt = new DateTimeOffset(2023, 1, 1, 10, 0, 0, TimeSpan.Zero), AuthorName = "Assistant" }, 542new(ChatRole.Assistant, "Hello") { MessageId = "msg1", CreatedAt = new DateTimeOffset(2024, 1, 1, 10, 0, 0, TimeSpan.Zero), AuthorName = "Assistant" }, 543new(null, " from") { MessageId = "msg1", CreatedAt = new DateTimeOffset(2024, 1, 1, 10, 1, 0, TimeSpan.Zero) }, // Later CreatedAt should not overwrite first 544new(null, " AI") { MessageId = "msg1", AuthorName = "Assistant" }, // Keep same AuthorName to avoid creating new message 547new(null, "More text") { MessageId = "msg2", CreatedAt = new DateTimeOffset(2024, 1, 1, 10, 2, 0, TimeSpan.Zero), AuthorName = "Assistant" }, 550new(ChatRole.User, "How") { MessageId = "msg3", CreatedAt = new DateTimeOffset(2024, 1, 1, 11, 0, 0, TimeSpan.Zero), AuthorName = "User" }, 551new(null, " are") { MessageId = "msg3", CreatedAt = new DateTimeOffset(2024, 1, 1, 11, 1, 0, TimeSpan.Zero) }, 552new(null, " you?") { MessageId = "msg3", AuthorName = "User" }, // Keep same AuthorName 555new(ChatRole.Assistant, "I'm doing well,") { MessageId = "msg4", CreatedAt = new DateTimeOffset(2024, 1, 1, 12, 0, 0, TimeSpan.Zero) }, 556new(null, " thank you!") { MessageId = "msg4", CreatedAt = new DateTimeOffset(2024, 1, 1, 12, 2, 0, TimeSpan.Zero) }, // Later CreatedAt should not overwrite first 559new(null, " How can I help?"), 641updates.Add(new(null, text)); 662updates.Add(new() { Contents = [new DataContent("data:image/png;base64,aGVsbG8=")] }); 689new(null, "A"), 690new(null, "B"), 691new(null, "C"), 692new() { Contents = [new TextReasoningContent("D")] }, 693new() { Contents = [new TextReasoningContent("E")] }, 694new() { Contents = [new TextReasoningContent("F")] }, 695new(null, "G"), 696new(null, "H"), 697new() { Contents = [new TextReasoningContent("I")] }, 698new() { Contents = [new TextReasoningContent("J")] }, 699new(null, "K"), 700new() { Contents = [new TextReasoningContent("L")] }, 701new(null, "M"), 702new(null, "N"), 703new() { Contents = [new TextReasoningContent("O")] }, 704new() { Contents = [new TextReasoningContent("P")] }, 727new() { Contents = [new TextReasoningContent("A") { ProtectedData = "1" }] }, 728new() { Contents = [new TextReasoningContent("B") { ProtectedData = "2" }] }, 729new() { Contents = [new TextReasoningContent("C")] }, 730new() { Contents = [new TextReasoningContent("D")] }, 731new() { Contents = [new TextReasoningContent("E") { ProtectedData = "3" }] }, 732new() { Contents = [new TextReasoningContent("F") { ProtectedData = "4" }] }, 733new() { Contents = [new TextReasoningContent("G")] }, 734new() { Contents = [new TextReasoningContent("H")] }, 764new(null, "A"), 765new(null, "B"), 766new(null, "C"), 767new() { Contents = [new TextContent("D") { Annotations = [new()] }] }, 768new() { Contents = [new TextContent("E") { Annotations = [new()] }] }, 769new() { Contents = [new TextContent("F") { Annotations = [new()] }] }, 770new() { Contents = [new TextContent("G") { Annotations = [] }] }, 771new() { Contents = [new TextContent("H") { Annotations = [] }] }, 772new() { Contents = [new TextContent("I") { Annotations = [new()] }] }, 773new() { Contents = [new TextContent("J") { Annotations = [new()] }] }, 774new(null, "K"), 775new() { Contents = [new TextContent("L") { Annotations = [new()] }] }, 776new(null, "M"), 777new(null, "N"), 778new() { Contents = [new TextContent("O") { Annotations = [new()] }] }, 779new() { Contents = [new TextContent("P") { Annotations = [new()] }] }, 804new(null, "Hello, "), 805new(null, "world!"), 806new() { Contents = [new UsageContent(new() { TotalTokenCount = 42 })] }, 834new(ChatRole.Tool, "a") { MessageId = "4", CreatedAt = early }, 837new(null, "b") { CreatedAt = unixEpoch }, 840new(null, "c") { CreatedAt = beforeEpoch }, 843new(null, "d") { CreatedAt = middle }, 846new(null, "e") { CreatedAt = early }, 849new(null, "f") { CreatedAt = late }, 852new(null, "g") { CreatedAt = unixEpoch }, 855new(null, "h") { CreatedAt = null }, 903new(ChatRole.Assistant, "a") { CreatedAt = first }, 904new(null, "b") { CreatedAt = second }, 930new(null, "Let's generate"), 931new(null, " some images"), 934new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image1] }] }, 937new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image2] }] }, 940new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img1", Outputs = [image3] }] }, 943new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img2", Outputs = [image4] }] }, 946new(null, "Here are those generated images"), 988new() { Contents = [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image1] }] }, 991new() { Contents = [new ImageGenerationToolResultContent { ImageId = "", Outputs = [image2] }] }, 994new() { Contents = [new ImageGenerationToolResultContent { ImageId = null, Outputs = [image3] }] },
ChatCompletion\ChatResponseUpdateTests.cs (9)
16ChatResponseUpdate update = new(); 33ChatResponseUpdate update = new(); 87ChatResponseUpdate update = new() 115ChatResponseUpdate original = new() 180var original = new ChatResponseUpdate 221var original = new ChatResponseUpdate 249var original = new ChatResponseUpdate(); 273var original = new ChatResponseUpdate 308var original = new ChatResponseUpdate
ChatCompletion\DelegatingChatClientTests.cs (2)
61new(ChatRole.User, "Message 1"), 62new(ChatRole.User, "Message 2")
Microsoft.Extensions.AI.Evaluation.Safety (1)
ContentSafetyChatClient.cs (1)
100yield return new ChatResponseUpdate(ChatRole.Assistant, annotationResult)
Microsoft.Extensions.AI.OpenAI (8)
OpenAIAssistantsChatClient.cs (5)
167ChatResponseUpdate ruUpdate = new() 212yield return new ChatResponseUpdate(ChatRole.Assistant, [hcitcc]) 243yield return new ChatResponseUpdate(ChatRole.Assistant, [hcitrc]) 255ChatResponseUpdate textUpdate = new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text) 304yield return new()
OpenAIChatClient.cs (2)
364ChatResponseUpdate responseUpdate = new() 438ChatResponseUpdate responseUpdate = new()
OpenAIResponsesChatClient.cs (1)
317new(lastRole, content is not null ? [content] : null)
Microsoft.Extensions.AI.OpenAI.Tests (10)
OpenAIConversionTests.cs (10)
1163var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello") 1181var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello, world!") 1210var responseUpdate = new ChatResponseUpdate 1249var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCallContent]) 1284var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCall1, functionCall2]) 1312var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, 1360var responseUpdate = new ChatResponseUpdate(inputRole, "Test message"); 1386var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Test") 1407new ChatResponseUpdate(ChatRole.Assistant, "Hello, ") 1414new ChatResponseUpdate(ChatRole.Assistant, "world!")
Microsoft.Extensions.AI.Tests (58)
ChatCompletion\ConfigureOptionsChatClientTests.cs (1)
38var expectedUpdates = Enumerable.Range(0, 3).Select(i => new ChatResponseUpdate()).ToArray();
ChatCompletion\DistributedCachingChatClientTest.cs (16)
250new() 263new() 268new() 314new(ChatRole.Assistant, "This"), 315new(ChatRole.Assistant, " becomes one chunk"), 316new() { Role = ChatRole.Assistant, Contents = [new FunctionCallContent("callId1", "separator")] }, 317new(ChatRole.Assistant, "... and this"), 318new(ChatRole.Assistant, " becomes another"), 319new(ChatRole.Assistant, " one."), 369new() { Role = ChatRole.Assistant, Contents = [new TextContent("Hello")] }, 370new() { Role = ChatRole.Assistant, Contents = [new TextContent(" world, ")] }, 371new() 382new() 437new(ChatRole.Assistant, "Chunk 1"), 485() => new(ChatRole.Assistant, "Chunk 1"), 524[() => new(ChatRole.Assistant, "A good result")]);
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (7)
972yield return new ChatResponseUpdate(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]) { MessageId = messageId }; 975new ChatResponseUpdate( 1048yield return new ChatResponseUpdate(ChatRole.Assistant, [new TextContent("Text 1")]) { MessageId = messageId }; 1050yield return new ChatResponseUpdate(ChatRole.Assistant, [new TextContent("Text 2")]) { MessageId = messageId }; 1052yield return new ChatResponseUpdate(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]) { MessageId = messageId }; 1054yield return new ChatResponseUpdate( 1061yield return new ChatResponseUpdate(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func3")]) { MessageId = messageId };
ChatCompletion\FunctionInvokingChatClientTests.cs (3)
1192new() { Contents = [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] }, 1193new() { Contents = [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] } 1198updates = [new() { Contents = [new TextContent("OK bye")] }];
ChatCompletion\ImageGeneratingChatClientTests.cs (2)
229yield return new(ChatRole.Assistant, "test"); 359yield return new ChatResponseUpdate(ChatRole.Assistant,
ChatCompletion\LoggingChatClientTests.cs (2)
108yield return new(ChatRole.Assistant, "blue "); 109yield return new(ChatRole.Assistant, "whale");
ChatCompletion\OpenTelemetryChatClientTests.cs (20)
71yield return new ChatResponseUpdate(ChatRole.Assistant, text) 77yield return new ChatResponseUpdate 82yield return new ChatResponseUpdate 422yield return new(ChatRole.Assistant, "Assistant response text"); 423yield return new() { Contents = [new TextReasoningContent("This is reasoning")] }; 424yield return new() { Contents = [new FunctionCallContent("call-123", "GetWeather", new Dictionary<string, object?> { ["location"] = "Seattle" })] }; 425yield return new() { Contents = [new FunctionResultContent("call-123", "72°F and sunny")] }; 426yield return new() { Contents = [new DataContent(Convert.FromBase64String("aGVsbG8gd29ybGQ="), "image/png")] }; 427yield return new() { Contents = [new UriContent(new Uri("https://example.com/image.jpg"), "image/jpeg")] }; 428yield return new() { Contents = [new HostedFileContent("file-abc123")] }; 676yield return new(ChatRole.Assistant, "Processing with tools..."); 677yield return new() { Contents = [new CodeInterpreterToolCallContent { CallId = "ci-call-1", Inputs = [new TextContent("print('hello')")] }] }; 678yield return new() { Contents = [new CodeInterpreterToolResultContent { CallId = "ci-call-1", Outputs = [new TextContent("hello")] }] }; 679yield return new() { Contents = [new ImageGenerationToolCallContent { ImageId = "img-123" }] }; 680yield return new() { Contents = [new ImageGenerationToolResultContent { ImageId = "img-123", Outputs = [new UriContent(new Uri("https://example.com/image.png"), "image/png")] }] }; 681yield return new() { Contents = [new McpServerToolCallContent("mcp-call-1", "myTool", "myServer") { Arguments = new Dictionary<string, object?> { ["param1"] = "value1" } }] }; 682yield return new() { Contents = [new McpServerToolResultContent("mcp-call-1") { Output = [new TextContent("Tool result")] }] }; 908yield return new ChatResponseUpdate(ChatRole.Assistant, "First") { ResponseId = "id1", ModelId = "responsemodel" }; 910yield return new ChatResponseUpdate(ChatRole.Assistant, "Second") { ResponseId = "id1" }; 912yield return new ChatResponseUpdate(ChatRole.Assistant, "Third") { ResponseId = "id1" };
ChatCompletion\ReducingChatClientTests.cs (2)
51var expectedUpdates = new[] { new ChatResponseUpdate(ChatRole.Assistant, "It's"), new ChatResponseUpdate(null, " sunny!") };
ChatCompletion\UseDelegateChatClientTests.cs (5)
51return YieldUpdates(new ChatResponseUpdate(null, "world")); 133return YieldUpdates(new ChatResponseUpdate(null, "hello")); 154yield return new(null, " world"); 193return YieldUpdates(new ChatResponseUpdate(null, "streaming hello")); 225yield return new(null, " world (streaming)");
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
73yield return new(ChatRole.Assistant, output)
361 references to ChatResponseUpdate
Aspire.Dashboard (2)
Model\Assistant\AIHelpers.cs (2)
320await foreach (var update in response.WithCancellation(responseCts.Token).ConfigureAwait(false)) 351public static IList<ChatMessage> GetMessages(ChatResponseUpdate update, Func<AIContent, bool>? filter = null)
Microsoft.Extensions.AI (54)
ChatCompletion\AnonymousDelegatingChatClient.cs (10)
29private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? _getStreamingResponseFunc; 78Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc) 127public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 134var updates = Channel.CreateBounded<ChatResponseUpdate>(1); 144await foreach (var update in InnerClient.GetStreamingResponseAsync(messages, options, cancellationToken)) 165static async IAsyncEnumerable<ChatResponseUpdate> ReadAllAsync( 166ChannelReader<ChatResponseUpdate> channel, [EnumeratorCancellation] CancellationToken cancellationToken) 170while (channel.TryRead(out var update)) 187static async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsyncViaGetResponseAsync(Task<ChatResponse> task) 190foreach (var update in response.ToChatResponseUpdates())
ChatCompletion\CachingChatClient.cs (12)
74public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 84private async IAsyncEnumerable<ChatResponseUpdate> GetCachedStreamingResponseAsync( 97foreach (var chunk in chatResponse.ToChatResponseUpdates()) 105List<ChatResponseUpdate> capturedItems = []; 106await foreach (var chunk in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 123foreach (var chunk in existingChunks) 132List<ChatResponseUpdate> capturedItems = []; 133await foreach (var chunk in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 163/// Returns a previously cached list of <see cref="ChatResponseUpdate"/> values, if available. 170protected abstract Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync(string key, CancellationToken cancellationToken); 185/// Stores a list of <see cref="ChatResponseUpdate"/> values in the underlying cache. 194protected abstract Task WriteCacheStreamingAsync(string key, IReadOnlyList<ChatResponseUpdate> value, CancellationToken cancellationToken);
ChatCompletion\ChatClientBuilder.cs (1)
144Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ConfigureOptionsChatClient.cs (2)
42public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 45await foreach (var update in base.GetStreamingResponseAsync(messages, Configure(options), cancellationToken))
ChatCompletion\DistributedCachingChatClient.cs (6)
24/// the object models used by <see cref="ChatMessage"/>, <see cref="ChatOptions"/>, <see cref="ChatResponse"/>, <see cref="ChatResponseUpdate"/>, 86protected override async Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync(string key, CancellationToken cancellationToken) 93return (IReadOnlyList<ChatResponseUpdate>?)JsonSerializer.Deserialize(existingJson, JsonSerializerOptions.GetTypeInfo(typeof(IReadOnlyList<ChatResponseUpdate>))); 111protected override async Task WriteCacheStreamingAsync(string key, IReadOnlyList<ChatResponseUpdate> value, CancellationToken cancellationToken) 117var newJson = JsonSerializer.SerializeToUtf8Bytes(value, JsonSerializerOptions.GetTypeInfo(typeof(IReadOnlyList<ChatResponseUpdate>)));
ChatCompletion\DistributedCachingChatClientBuilderExtensions.cs (1)
29/// the object models used by <see cref="ChatMessage"/>, <see cref="ChatOptions"/>, <see cref="ChatResponse"/>, <see cref="ChatResponseUpdate"/>,
ChatCompletion\FunctionInvokingChatClient.cs (8)
419public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 439List<ChatResponseUpdate> updates = []; // updates from the current response 522await foreach (var update in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 526Throw.InvalidOperationException($"The inner {nameof(IChatClient)} streamed a null {nameof(ChatResponseUpdate)}."); 603var updateToYield = updates[lastYieldedUpdateIndex]; 634var updateToYield = updates[lastYieldedUpdateIndex]; 687private static ChatResponseUpdate ConvertToolResultMessageToUpdate(ChatMessage message, string? conversationId, string? messageId) => 928private static void MarkServerHandledFunctionCalls(List<ChatResponseUpdate> updates, List<FunctionCallContent>? functionCallContents)
ChatCompletion\ImageGeneratingChatClient.cs (3)
95public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 106await foreach (var update in base.GetStreamingResponseAsync(processedMessages, processedOptions, cancellationToken)) 114var modifiedUpdate = update.Clone();
ChatCompletion\LoggingChatClient.cs (3)
100public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 115IAsyncEnumerator<ChatResponseUpdate> e; 133ChatResponseUpdate? update = null;
ChatCompletion\OpenTelemetryChatClient.cs (4)
179public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 192IAsyncEnumerable<ChatResponseUpdate> updates; 204List<ChatResponseUpdate> trackedUpdates = []; 219ChatResponseUpdate update;
ChatCompletion\ReducingChatClient.cs (2)
41public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 46await foreach (var update in base.GetStreamingResponseAsync(messages, options, cancellationToken).ConfigureAwait(false))
ToolReduction\ToolReducingChatClient.cs (2)
49public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 54await foreach (var update in base.GetStreamingResponseAsync(messages, options, cancellationToken).ConfigureAwait(false))
Microsoft.Extensions.AI.Abstractions (45)
ChatCompletion\ChatClientExtensions.cs (2)
131public static IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 151public static IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatCompletion\ChatOptions.cs (1)
199/// can be resumed if interrupted. This means that a continuation token obtained from the <see cref="ChatResponseUpdate.ContinuationToken"/>
ChatCompletion\ChatResponse.cs (5)
123/// <summary>Creates an array of <see cref="ChatResponseUpdate" /> instances that represent this <see cref="ChatResponse" />.</summary> 124/// <returns>An array of <see cref="ChatResponseUpdate" /> instances that can be used to represent this <see cref="ChatResponse" />.</returns> 125public ChatResponseUpdate[] ToChatResponseUpdates() 127ChatResponseUpdate? extra = null; 142var updates = new ChatResponseUpdate[messageCount + (extra is not null ? 1 : 0)];
ChatCompletion\ChatResponseExtensions.cs (23)
21/// Provides extension methods for working with <see cref="ChatResponse"/> and <see cref="ChatResponseUpdate"/> instances. 50/// <param name="updates">The <see cref="ChatResponseUpdate"/> instances to convert to messages and add to the list.</param> 55/// method may use <see cref="ChatResponseUpdate.MessageId"/> to determine message boundaries, as well as coalesce 59public static void AddMessages(this IList<ChatMessage> list, IEnumerable<ChatResponseUpdate> updates) 64if (updates is ICollection<ChatResponseUpdate> { Count: 0 }) 74/// <param name="update">The <see cref="ChatResponseUpdate"/> instance to convert to a message and add to the list.</param> 79/// If the <see cref="ChatResponseUpdate"/> has no content, or all its content gets excluded by <paramref name="filter"/>, then 82public static void AddMessages(this IList<ChatMessage> list, ChatResponseUpdate update, Func<AIContent, bool>? filter = null) 102/// <param name="updates">The <see cref="ChatResponseUpdate"/> instances to convert to messages and add to the list.</param> 109/// method may use <see cref="ChatResponseUpdate.MessageId"/> to determine message boundaries, as well as coalesce 114this IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken = default) 122IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken) => 126/// <summary>Combines <see cref="ChatResponseUpdate"/> instances into a single <see cref="ChatResponse"/>.</summary> 132/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 137this IEnumerable<ChatResponseUpdate> updates) 143foreach (var update in updates) 153/// <summary>Combines <see cref="ChatResponseUpdate"/> instances into a single <see cref="ChatResponse"/>.</summary> 160/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 165this IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken = default) 172IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken) 176await foreach (var update in updates.WithCancellation(cancellationToken).ConfigureAwait(false)) 482/// <summary>Processes the <see cref="ChatResponseUpdate"/>, incorporating its contents into <paramref name="response"/>.</summary> 485private static void ProcessUpdate(ChatResponseUpdate update, ChatResponse response)
ChatCompletion\ChatResponseUpdate.cs (10)
18/// <see cref="ChatResponseUpdate"/> is so named because it represents updates 23/// The relationship between <see cref="ChatResponse"/> and <see cref="ChatResponseUpdate"/> is 24/// codified in the <see cref="ChatResponseExtensions.ToChatResponseAsync(IAsyncEnumerable{ChatResponseUpdate}, System.Threading.CancellationToken)"/> and 39/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 45/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 53/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 69public ChatResponseUpdate Clone() => 112/// If a <see cref="ChatResponseUpdate"/> is created to represent some underlying object from another object 133/// This value is used when <see cref="ChatResponseExtensions.ToChatResponseAsync(IAsyncEnumerable{ChatResponseUpdate}, System.Threading.CancellationToken)"/> 134/// groups <see cref="ChatResponseUpdate"/> instances into <see cref="ChatMessage"/> instances.
ChatCompletion\DelegatingChatClient.cs (1)
48public virtual IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatCompletion\IChatClient.cs (1)
54IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
Utilities\AIJsonUtilities.Defaults.cs (2)
118[JsonSerializable(typeof(ChatResponseUpdate))] 119[JsonSerializable(typeof(IReadOnlyList<ChatResponseUpdate>))]
Microsoft.Extensions.AI.Abstractions.Tests (57)
ChatCompletion\ChatClientExtensionsTests.cs (5)
151await foreach (var update in client.GetStreamingResponseAsync("hello", expectedOptions, cts.Token)) 238await foreach (var update in client.GetStreamingResponseAsync([], expectedChatOptions, cts.Token)) 247private static async IAsyncEnumerable<ChatResponseUpdate> YieldAsync(params ChatResponseUpdate[] updates) 250foreach (var update in updates)
ChatCompletion\ChatResponseTests.cs (7)
139ChatResponseUpdate[] updates = response.ToChatResponseUpdates(); 143ChatResponseUpdate update0 = updates[0]; 152ChatResponseUpdate update1 = updates[1]; 181ChatResponseUpdate[] updates = response.ToChatResponseUpdates(); 185ChatResponseUpdate update0 = updates[0]; 194ChatResponseUpdate update1 = updates[1]; 203ChatResponseUpdate update2 = updates[2];
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (26)
21Assert.Throws<ArgumentNullException>("updates", () => ((List<ChatResponseUpdate>)null!).ToChatResponse()); 29ChatResponseUpdate[] updates = 73ChatResponseUpdate[] updates = 129ChatResponseUpdate[] updates = 182ChatResponseUpdate[] updates = 241ChatResponseUpdate[] updates = 276ChatResponseUpdate[] updates = 311ChatResponseUpdate[] updates = 346ChatResponseUpdate[] updates = 379ChatResponseUpdate[] updates = 414ChatResponseUpdate[] updates = 452ChatResponseUpdate[] updates = 504ChatResponseUpdate[] updates = 537ChatResponseUpdate[] updates = 626List<ChatResponseUpdate> updates = []; 687ChatResponseUpdate[] updates = 725ChatResponseUpdate[] updates = 762ChatResponseUpdate[] updates = 802ChatResponseUpdate[] updates = 830ChatResponseUpdate[] updates = 901ChatResponseUpdate[] updates = 928ChatResponseUpdate[] updates = 985ChatResponseUpdate[] updates = 1010private static async IAsyncEnumerable<ChatResponseUpdate> YieldAsync(IEnumerable<ChatResponseUpdate> updates) 1012foreach (ChatResponseUpdate update in updates)
ChatCompletion\ChatResponseUpdateTests.cs (15)
16ChatResponseUpdate update = new(); 33ChatResponseUpdate update = new(); 87ChatResponseUpdate update = new() 115ChatResponseUpdate original = new() 137ChatResponseUpdate? result = JsonSerializer.Deserialize(json, TestJsonSerializerContext.Default.ChatResponseUpdate); 180var original = new ChatResponseUpdate 196var clone = original.Clone(); 221var original = new ChatResponseUpdate 228var clone = original.Clone(); 249var original = new ChatResponseUpdate(); 252var clone = original.Clone(); 273var original = new ChatResponseUpdate 282var clone = original.Clone(); 308var original = new ChatResponseUpdate 315var clone = original.Clone();
ChatCompletion\DelegatingChatClientTests.cs (1)
59ChatResponseUpdate[] expectedResults =
TestChatClient.cs (2)
22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
TestJsonSerializerContext.cs (1)
18[JsonSerializable(typeof(ChatResponseUpdate))]
Microsoft.Extensions.AI.Evaluation.Reporting (6)
ResponseCachingChatClient.cs (3)
64protected override async Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync( 70IReadOnlyList<ChatResponseUpdate>? updates = 122IReadOnlyList<ChatResponseUpdate> value,
SimpleChatClient.cs (3)
58public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 63List<ChatResponseUpdate>? updates = null; 68await foreach (ChatResponseUpdate update in
Microsoft.Extensions.AI.Evaluation.Safety (2)
ContentSafetyChatClient.cs (2)
83public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 109await foreach (var update in
Microsoft.Extensions.AI.Integration.Tests (20)
CallCountingChatClient.cs (1)
26public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatClientIntegrationTests.cs (11)
116await foreach (var chunk in ChatClient.GetStreamingResponseAsync(chatHistory)) 151List<ChatResponseUpdate> chunks = []; 152await foreach (var chunk in response) 281await foreach (var chunk in response) 692await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 701await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 712await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 870await foreach (var update in chatClient.GetStreamingResponseAsync("What's the biggest animal?")) 921await foreach (var update in chatClient.GetStreamingResponseAsync( 1293await foreach (var chunk in chatClient.GetStreamingResponseAsync(messages)) 1395public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
PromptBasedFunctionCallingChatClient.cs (2)
137public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 141foreach (var update in response.ToChatResponseUpdates())
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestChatClient.cs (2)
22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
ToolReductionTests.cs (4)
404return EmptyAsyncEnumerable<ChatResponseUpdate>(); 410await foreach (var _ in client.GetStreamingResponseAsync( 647public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 652public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) =>
Microsoft.Extensions.AI.OpenAI (22)
MicrosoftExtensionsAIChatExtensions.cs (7)
128/// sequence of <see cref="ChatResponseUpdate"/> instances. 132/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 136this IAsyncEnumerable<ChatResponseUpdate> responseUpdates, [EnumeratorCancellation] CancellationToken cancellationToken = default) 140await foreach (var update in responseUpdates.WithCancellation(cancellationToken).ConfigureAwait(false)) 266/// Creates a sequence of Microsoft.Extensions.AI <see cref="ChatResponseUpdate"/> instances from the specified 272/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 275public static IAsyncEnumerable<ChatResponseUpdate> AsChatResponseUpdatesAsync(
MicrosoftExtensionsAIResponsesExtensions.cs (3)
71/// Creates a sequence of Microsoft.Extensions.AI <see cref="ChatResponseUpdate"/> instances from the specified 77/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 79public static IAsyncEnumerable<ChatResponseUpdate> AsChatResponseUpdatesAsync(
OpenAIAssistantsChatClient.cs (3)
76public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 167ChatResponseUpdate ruUpdate = new() 255ChatResponseUpdate textUpdate = new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text)
OpenAIChatClient.cs (4)
106public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 340internal static async IAsyncEnumerable<ChatResponseUpdate> FromOpenAIStreamingChatCompletionAsync( 364ChatResponseUpdate responseUpdate = new() 438ChatResponseUpdate responseUpdate = new()
OpenAIResponsesChatClient.cs (5)
260public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 296internal static async IAsyncEnumerable<ChatResponseUpdate> FromOpenAIStreamingResponseUpdatesAsync( 316ChatResponseUpdate CreateUpdate(AIContent? content = null) => 381var update = CreateUpdate(ToUsageDetails(completedUpdate.Response) is { } usage ? new UsageContent(usage) : null); 448var mcpUpdate = CreateUpdate();
Microsoft.Extensions.AI.OpenAI.Tests (95)
OpenAIChatClientTests.cs (11)
234List<ChatResponseUpdate> updates = []; 235await foreach (var update in client.GetStreamingResponseAsync("hello", new() 496await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 651await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 1324List<ChatResponseUpdate> updates = []; 1325await foreach (var update in client.GetStreamingResponseAsync("How old is Alice?", new() 1725List<ChatResponseUpdate> updates = []; 1726await foreach (var update in client.GetStreamingResponseAsync("hello", new() 1959List<ChatResponseUpdate> updates = []; 1960await foreach (var update in client.GetStreamingResponseAsync("hello")) 2023await foreach (var update in client.GetStreamingResponseAsync("hello"))
OpenAIConversionTests.cs (12)
833List<ChatResponseUpdate> updates = []; 834await foreach (var update in CreateUpdates().AsChatResponseUpdatesAsync()) 1134var asyncEnumerable = ((IAsyncEnumerable<ChatResponseUpdate>)null!).AsOpenAIStreamingChatCompletionUpdatesAsync(); 1141var updates = new List<ChatResponseUpdate>(); 1163var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello") 1181var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello, world!") 1210var responseUpdate = new ChatResponseUpdate 1249var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCallContent]) 1284var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCall1, functionCall2]) 1312var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, 1360var responseUpdate = new ChatResponseUpdate(inputRole, "Test message"); 1386var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Test")
OpenAIResponseClientIntegrationTests.cs (5)
302await foreach (var update in ChatClient.GetStreamingResponseAsync("What is the capital of France?", chatOptions)) 325await foreach (var update in ChatClient.GetStreamingResponseAsync("What is the capital of France?", chatOptions)) 341await foreach (var update in ChatClient.GetStreamingResponseAsync([], chatOptions)) 366await foreach (var update in chatClient.GetStreamingResponseAsync("What time is it?", chatOptions)) 715await foreach (var update in ChatClient.GetStreamingResponseAsync(deserializedHistory, chatOptions))
OpenAIResponseClientTests.cs (67)
296List<ChatResponseUpdate> updates = []; 297await foreach (var update in client.GetStreamingResponseAsync("Calculate the sum of the first 5 positive integers.", new() 429List<ChatResponseUpdate> updates = []; 430await foreach (var update in client.GetStreamingResponseAsync("Solve this problem step by step.", new() 472var assistantUpdate = updates.First(u => u.Role == ChatRole.Assistant && !string.IsNullOrEmpty(u.Text)); 555List<ChatResponseUpdate> updates = []; 556await foreach (var update in client.GetStreamingResponseAsync("Solve this problem step by step.", new() 660List<ChatResponseUpdate> updates = []; 661await foreach (var update in client.GetStreamingResponseAsync("hello", new() 904List<ChatResponseUpdate> updates = []; 905await foreach (var update in client.GetStreamingResponseAsync([new ChatMessage(ChatRole.User, "Search the web for the temperature today in Fremont")], chatOptions)) 2618List<ChatResponseUpdate> updates = []; 2619await foreach (var update in client.GetStreamingResponseAsync("hello", new() 2711List<ChatResponseUpdate> updates = []; 2712await foreach (var update in client.GetStreamingResponseAsync([], chatOptions)) 2778await foreach (var update in client.GetStreamingResponseAsync("Please book a hotel for me", chatOptions)) 3197List<ChatResponseUpdate> updates = []; 3198await foreach (var update in client.GetStreamingResponseAsync("Calculate the sum of numbers from 1 to 10 using Python", new() 3215foreach (var update in codeInterpreterCallUpdates) 3694List<ChatResponseUpdate> updates = []; 3695await foreach (var update in client.GetStreamingResponseAsync("hello", new() 3775List<ChatResponseUpdate> updates = []; 3776await foreach (var update in client.GetStreamingResponseAsync("hello", new() 3856List<ChatResponseUpdate> updates = []; 3857await foreach (var update in client.GetStreamingResponseAsync("hello", new() 3934List<ChatResponseUpdate> updates = []; 3935await foreach (var update in client.GetStreamingResponseAsync("hello", new() 4131List<ChatResponseUpdate> updates = []; 4132await foreach (var update in client.GetStreamingResponseAsync("hello", new() 5013List<ChatResponseUpdate> updates = []; 5014await foreach (var update in client.GetStreamingResponseAsync("test")) 5048List<ChatResponseUpdate> updates = []; 5049await foreach (var update in client.GetStreamingResponseAsync("test")) 5083List<ChatResponseUpdate> updates = []; 5084await foreach (var update in client.GetStreamingResponseAsync("test")) 5121List<ChatResponseUpdate> updates = []; 5122await foreach (var update in client.GetStreamingResponseAsync("test")) 5159List<ChatResponseUpdate> updates = []; 5160await foreach (var update in client.GetStreamingResponseAsync("test")) 5165var refusalUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent ec && ec.ErrorCode == "Refusal")); 5217List<ChatResponseUpdate> updates = []; 5218await foreach (var update in client.GetStreamingResponseAsync("test")) 5223var errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent)); 5260List<ChatResponseUpdate> updates = []; 5261await foreach (var update in client.GetStreamingResponseAsync("test")) 5266var errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent)); 5303List<ChatResponseUpdate> updates = []; 5304await foreach (var update in client.GetStreamingResponseAsync("test")) 5309var errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent)); 5346List<ChatResponseUpdate> updates = []; 5347await foreach (var update in client.GetStreamingResponseAsync("test")) 5352var annotatedUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c.Annotations?.Count > 0)); 5421List<ChatResponseUpdate> updates = []; 5422await foreach (var update in client.GetStreamingResponseAsync("test")) 5428var functionCallUpdate = updates.FirstOrDefault(u => u.Contents.OfType<FunctionCallContent>().Any()); 5436var functionResultUpdate = updates.FirstOrDefault(u => u.Contents.OfType<FunctionResultContent>().Any()); 5824List<ChatResponseUpdate> updates = []; 5834await foreach (var update in client.GetStreamingResponseAsync("Generate an image of a dog", new ChatOptions 5845var createdUpdate = updates.First(u => u.CreatedAt.HasValue); 5850var toolCallUpdate = updates.FirstOrDefault(u => 5857var partialImageUpdate = updates.FirstOrDefault(u => 5863var completionUpdate = updates.FirstOrDefault(u => 5941List<ChatResponseUpdate> updates = []; 5952await foreach (var update in client.GetStreamingResponseAsync("Generate an image of a sunset", new ChatOptions 5972var partialUpdate = partialImageUpdates.FirstOrDefault(u => 6009var toolCallUpdate = updates.FirstOrDefault(u => 6132await foreach (var update in client.GetStreamingResponseAsync("hello"))
Microsoft.Extensions.AI.Tests (51)
ChatCompletion\ConfigureOptionsChatClientTests.cs (3)
89static async IAsyncEnumerable<ChatResponseUpdate> YieldUpdates(ChatResponseUpdate[] updates) 91foreach (var update in updates)
ChatCompletion\DistributedCachingChatClientTest.cs (13)
248List<ChatResponseUpdate> actualUpdate = 261List<ChatResponseUpdate> expectedCachedResponse = 312List<ChatResponseUpdate> expectedResponse = 345ChatResponseUpdate update = Assert.Single(await ToListAsync(result2)); 367List<ChatResponseUpdate> expectedResponse = 417var item = Assert.Single(items); 435List<ChatResponseUpdate> expectedResponse = 483return ToAsyncEnumerableAsync<ChatResponseUpdate>(Task.CompletedTask, 522return ToAsyncEnumerableAsync<ChatResponseUpdate>( 831private static async Task AssertResponsesEqualAsync(IReadOnlyList<ChatResponseUpdate> expected, IAsyncEnumerable<ChatResponseUpdate> actual) 835foreach (var expectedItem in expected) 839var actualItem = actualEnumerator.Current;
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (4)
964async IAsyncEnumerable<ChatResponseUpdate> YieldInnerClientUpdates( 989await foreach (var update in updates) 1040async IAsyncEnumerable<ChatResponseUpdate> YieldInnerClientUpdates( 1070await foreach (var update in updates)
ChatCompletion\FunctionInvokingChatClientTests.cs (3)
1186List<ChatResponseUpdate> updates; 1201foreach (var update in updates) 1756await foreach (var update in client.GetStreamingResponseAsync(
ChatCompletion\ImageGeneratingChatClientTests.cs (6)
226static async IAsyncEnumerable<ChatResponseUpdate> GetUpdatesAsync() 241await foreach (var update in client.GetStreamingResponseAsync([new(ChatRole.User, "test")], chatOptions)) 356async IAsyncEnumerable<ChatResponseUpdate> GetUpdatesAsync() 372var updates = new List<ChatResponseUpdate>(); 373await foreach (var responseUpdate in client.GetStreamingResponseAsync([new(ChatRole.User, "test")], chatOptions)) 380var update = updates[0];
ChatCompletion\LoggingChatClientTests.cs (2)
105static async IAsyncEnumerable<ChatResponseUpdate> GetUpdatesAsync() 117await foreach (var update in client.GetStreamingResponseAsync(
ChatCompletion\OpenTelemetryChatClientTests.cs (8)
63async static IAsyncEnumerable<ChatResponseUpdate> CallbackAsync( 149await foreach (var update in chatClient.GetStreamingResponseAsync(messages, options)) 418async static IAsyncEnumerable<ChatResponseUpdate> CallbackAsync( 456await foreach (var update in chatClient.GetStreamingResponseAsync(messages)) 672async static IAsyncEnumerable<ChatResponseUpdate> CallbackAsync( 701await foreach (var update in chatClient.GetStreamingResponseAsync(messages)) 904async static IAsyncEnumerable<ChatResponseUpdate> CallbackAsync( 923await foreach (var update in chatClient.GetStreamingResponseAsync([new(ChatRole.User, "Hello")], new ChatOptions { ModelId = "mymodel" }))
ChatCompletion\ReducingChatClientTests.cs (2)
73var updates = new List<ChatResponseUpdate>(); 74await foreach (var update in client.GetStreamingResponseAsync(originalMessages))
ChatCompletion\UseDelegateChatClientTests.cs (7)
146static async IAsyncEnumerable<ChatResponseUpdate> Impl( 149await foreach (var update in innerClient.GetStreamingResponseAsync(messages, options, cancellationToken)) 217static async IAsyncEnumerable<ChatResponseUpdate> Impl( 220await foreach (var update in innerClient.GetStreamingResponseAsync(messages, options, cancellationToken)) 239private static async IAsyncEnumerable<ChatResponseUpdate> YieldUpdates(params ChatResponseUpdate[] updates) 241foreach (var update in updates)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestChatClient.cs (2)
22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
TestJsonSerializerContext.cs (1)
15[JsonSerializable(typeof(IReadOnlyList<ChatResponseUpdate>))]
Microsoft.Extensions.DataIngestion.Tests (2)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestChatClient.cs (2)
22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
57public virtual async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
Microsoft.ML.GenAI.LLaMA (1)
Llama3CausalLMChatClient.cs (1)
46public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
Microsoft.ML.GenAI.Phi (1)
Phi3\Phi3CausalLMChatClient.cs (1)
51public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
Microsoft.ML.GenAI.Samples (2)
MEAI\Llama3_1.cs (1)
49await foreach (var response in client.GetStreamingResponseAsync([chatMessage]))
MEAI\Phi3.cs (1)
39await foreach (var response in client.GetStreamingResponseAsync([chatMessage]))