114 instantiations of ChatResponseUpdate
Microsoft.Extensions.AI (1)
ChatCompletion\FunctionInvokingChatClient.cs (1)
409var toolResultUpdate = new ChatResponseUpdate
Microsoft.Extensions.AI.Abstractions (2)
ChatCompletion\ChatResponse.cs (2)
113extra = new ChatResponseUpdate 131updates[i] = new ChatResponseUpdate
Microsoft.Extensions.AI.Abstractions.Tests (59)
ChatCompletion\ChatClientExtensionsTests.cs (1)
146return YieldAsync([new ChatResponseUpdate(ChatRole.Assistant, "world")]);
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (52)
31new(ChatRole.Assistant, "Hello") { ResponseId = "someResponse", MessageId = "12345", CreatedAt = new DateTimeOffset(1, 2, 3, 4, 5, 6, TimeSpan.Zero), ModelId = "model123" }, 32new(new("human"), ", ") { AuthorName = "Someone", AdditionalProperties = new() { ["a"] = "b" } }, 33new(null, "world!") { CreatedAt = new DateTimeOffset(2, 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 })] }, 77new(null, "Hi! ") { CreatedAt = new DateTimeOffset(2023, 1, 1, 10, 0, 0, TimeSpan.Zero), AuthorName = "Assistant" }, 78new(ChatRole.Assistant, "Hello") { MessageId = "msg1", CreatedAt = new DateTimeOffset(2024, 1, 1, 10, 0, 0, TimeSpan.Zero), AuthorName = "Assistant" }, 79new(null, " from") { MessageId = "msg1", CreatedAt = new DateTimeOffset(2024, 1, 1, 10, 1, 0, TimeSpan.Zero) }, // Later CreatedAt should win 80new(null, " AI") { MessageId = "msg1", AuthorName = "AI Assistant" }, // Later AuthorName should win 83new(ChatRole.User, "How") { MessageId = "msg2", CreatedAt = new DateTimeOffset(2024, 1, 1, 11, 0, 0, TimeSpan.Zero), AuthorName = "User" }, 84new(null, " are") { MessageId = "msg2", CreatedAt = new DateTimeOffset(2024, 1, 1, 11, 1, 0, TimeSpan.Zero) }, 85new(null, " you?") { MessageId = "msg2", AuthorName = "Human User" }, // Later AuthorName should win 88new(ChatRole.Assistant, "I'm doing well,") { MessageId = "msg3", CreatedAt = new DateTimeOffset(2024, 1, 1, 12, 0, 0, TimeSpan.Zero) }, 89new(null, " thank you!") { MessageId = "msg3", CreatedAt = new DateTimeOffset(2024, 1, 1, 12, 2, 0, TimeSpan.Zero) }, // Later CreatedAt should win 92new(null, " How can I help?"), 166updates.Add(new(null, text)); 187updates.Add(new() { Contents = [new DataContent("data:image/png;base64,aGVsbG8=")] }); 214new(null, "A"), 215new(null, "B"), 216new(null, "C"), 217new() { Contents = [new TextReasoningContent("D")] }, 218new() { Contents = [new TextReasoningContent("E")] }, 219new() { Contents = [new TextReasoningContent("F")] }, 220new(null, "G"), 221new(null, "H"), 222new() { Contents = [new TextReasoningContent("I")] }, 223new() { Contents = [new TextReasoningContent("J")] }, 224new(null, "K"), 225new() { Contents = [new TextReasoningContent("L")] }, 226new(null, "M"), 227new(null, "N"), 228new() { Contents = [new TextReasoningContent("O")] }, 229new() { Contents = [new TextReasoningContent("P")] }, 252new(null, "A"), 253new(null, "B"), 254new(null, "C"), 255new() { Contents = [new TextContent("D") { Annotations = [new()] }] }, 256new() { Contents = [new TextContent("E") { Annotations = [new()] }] }, 257new() { Contents = [new TextContent("F") { Annotations = [new()] }] }, 258new() { Contents = [new TextContent("G") { Annotations = [] }] }, 259new() { Contents = [new TextContent("H") { Annotations = [] }] }, 260new() { Contents = [new TextContent("I") { Annotations = [new()] }] }, 261new() { Contents = [new TextContent("J") { Annotations = [new()] }] }, 262new(null, "K"), 263new() { Contents = [new TextContent("L") { Annotations = [new()] }] }, 264new(null, "M"), 265new(null, "N"), 266new() { Contents = [new TextContent("O") { Annotations = [new()] }] }, 267new() { Contents = [new TextContent("P") { Annotations = [new()] }] }, 292new(null, "Hello, "), 293new(null, "world!"), 294new() { Contents = [new UsageContent(new() { TotalTokenCount = 42 })] },
ChatCompletion\ChatResponseUpdateTests.cs (4)
16ChatResponseUpdate update = new(); 33ChatResponseUpdate update = new(); 87ChatResponseUpdate update = new() 115ChatResponseUpdate original = new()
ChatCompletion\DelegatingChatClientTests.cs (2)
61new(ChatRole.User, "Message 1"), 62new(ChatRole.User, "Message 2")
Microsoft.Extensions.AI.AzureAIInference (2)
AzureAIInferenceChatClient.cs (2)
166ChatResponseUpdate responseUpdate = new() 228var responseUpdate = new ChatResponseUpdate
Microsoft.Extensions.AI.Evaluation.Safety (1)
ContentSafetyChatClient.cs (1)
99yield return new ChatResponseUpdate(ChatRole.Assistant, annotationResult)
Microsoft.Extensions.AI.OpenAI (6)
OpenAIAssistantsChatClient.cs (3)
183ChatResponseUpdate ruUpdate = new() 219ChatResponseUpdate textUpdate = new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text) 268yield return new()
OpenAIChatClient.cs (2)
331ChatResponseUpdate responseUpdate = new() 398ChatResponseUpdate responseUpdate = new()
OpenAIResponsesChatClient.cs (1)
207new(lastRole, content is not null ? [content] : null)
Microsoft.Extensions.AI.OpenAI.Tests (10)
OpenAIConversionTests.cs (10)
572var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello") 590var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello, world!") 619var responseUpdate = new ChatResponseUpdate 658var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCallContent]) 693var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCall1, functionCall2]) 721var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, 769var responseUpdate = new ChatResponseUpdate(inputRole, "Test message"); 795var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Test") 816new ChatResponseUpdate(ChatRole.Assistant, "Hello, ") 823new ChatResponseUpdate(ChatRole.Assistant, "world!")
Microsoft.Extensions.AI.Tests (32)
ChatCompletion\ConfigureOptionsChatClientTests.cs (1)
38var expectedUpdates = Enumerable.Range(0, 3).Select(i => new ChatResponseUpdate()).ToArray();
ChatCompletion\DistributedCachingChatClientTest.cs (16)
249new() 262new() 267new() 313new(ChatRole.Assistant, "This"), 314new(ChatRole.Assistant, " becomes one chunk"), 315new() { Role = ChatRole.Assistant, Contents = [new FunctionCallContent("callId1", "separator")] }, 316new(ChatRole.Assistant, "... and this"), 317new(ChatRole.Assistant, " becomes another"), 318new(ChatRole.Assistant, " one."), 368new() { Role = ChatRole.Assistant, Contents = [new TextContent("Hello")] }, 369new() { Role = ChatRole.Assistant, Contents = [new TextContent(" world, ")] }, 370new() 381new() 436new(ChatRole.Assistant, "Chunk 1"), 484() => new(ChatRole.Assistant, "Chunk 1"), 523[() => new(ChatRole.Assistant, "A good result")]);
ChatCompletion\FunctionInvokingChatClientTests.cs (3)
743new() { Contents = [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] }, 744new() { Contents = [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] } 749updates = [new() { Contents = [new TextContent("OK bye")] }];
ChatCompletion\LoggingChatClientTests.cs (2)
108yield return new(ChatRole.Assistant, "blue "); 109yield return new(ChatRole.Assistant, "whale");
ChatCompletion\OpenTelemetryChatClientTests.cs (3)
72yield return new ChatResponseUpdate(ChatRole.Assistant, text) 78yield return new ChatResponseUpdate 83yield return new ChatResponseUpdate
ChatCompletion\ReducingChatClientTests.cs (2)
50var 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)
229 references to ChatResponseUpdate
Microsoft.Extensions.AI (43)
ChatCompletion\AnonymousDelegatingChatClient.cs (7)
31private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? _getStreamingResponseFunc; 80Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc) 129public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 136var updates = Channel.CreateBounded<ChatResponseUpdate>(1); 146await foreach (var update in InnerClient.GetStreamingResponseAsync(messages, options, cancellationToken)) 189static async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsyncViaGetResponseAsync(Task<ChatResponse> task) 192foreach (var update in response.ToChatResponseUpdates())
ChatCompletion\CachingChatClient.cs (12)
77public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 87private async IAsyncEnumerable<ChatResponseUpdate> GetCachedStreamingResponseAsync( 100foreach (var chunk in chatResponse.ToChatResponseUpdates()) 108List<ChatResponseUpdate> capturedItems = []; 109await foreach (var chunk in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 126foreach (var chunk in existingChunks) 135List<ChatResponseUpdate> capturedItems = []; 136await foreach (var chunk in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 166/// Returns a previously cached list of <see cref="ChatResponseUpdate"/> values, if available. 173protected abstract Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync(string key, CancellationToken cancellationToken); 188/// Stores a list of <see cref="ChatResponseUpdate"/> values in the underlying cache. 197protected 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)
26/// the object models used by <see cref="ChatMessage"/>, <see cref="ChatOptions"/>, <see cref="ChatResponse"/>, <see cref="ChatResponseUpdate"/>, 91protected override async Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync(string key, CancellationToken cancellationToken) 98return (IReadOnlyList<ChatResponseUpdate>?)JsonSerializer.Deserialize(existingJson, _jsonSerializerOptions.GetTypeInfo(typeof(IReadOnlyList<ChatResponseUpdate>))); 116protected override async Task WriteCacheStreamingAsync(string key, IReadOnlyList<ChatResponseUpdate> value, CancellationToken cancellationToken) 122var 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 (5)
323public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 342List<ChatResponseUpdate> updates = []; // updates from the current response 350await foreach (var update in base.GetStreamingResponseAsync(messages, options, cancellationToken)) 354Throw.InvalidOperationException($"The inner {nameof(IChatClient)} streamed a null {nameof(ChatResponseUpdate)}."); 409var toolResultUpdate = new ChatResponseUpdate
ChatCompletion\LoggingChatClient.cs (3)
100public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 115IAsyncEnumerator<ChatResponseUpdate> e; 133ChatResponseUpdate? update = null;
ChatCompletion\OpenTelemetryChatClient.cs (4)
163public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 175IAsyncEnumerable<ChatResponseUpdate> updates; 187List<ChatResponseUpdate> trackedUpdates = []; 193ChatResponseUpdate update;
ChatCompletion\ReducingChatClient.cs (2)
40public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 45await foreach (var update in base.GetStreamingResponseAsync(messages, options, cancellationToken).ConfigureAwait(false))
Microsoft.Extensions.AI.Abstractions (42)
ChatCompletion\ChatClientExtensions.cs (2)
131public static IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 151public static IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatCompletion\ChatResponse.cs (5)
106/// <summary>Creates an array of <see cref="ChatResponseUpdate" /> instances that represent this <see cref="ChatResponse" />.</summary> 107/// <returns>An array of <see cref="ChatResponseUpdate" /> instances that may be used to represent this <see cref="ChatResponse" />.</returns> 108public ChatResponseUpdate[] ToChatResponseUpdates() 110ChatResponseUpdate? extra = null; 125var updates = new ChatResponseUpdate[messageCount + (extra is not null ? 1 : 0)];
ChatCompletion\ChatResponseExtensions.cs (23)
20/// Provides extension methods for working with <see cref="ChatResponse"/> and <see cref="ChatResponseUpdate"/> instances. 49/// <param name="updates">The <see cref="ChatResponseUpdate"/> instances to convert to messages and add to the list.</param> 54/// method may use <see cref="ChatResponseUpdate.MessageId"/> to determine message boundaries, as well as coalesce 58public static void AddMessages(this IList<ChatMessage> list, IEnumerable<ChatResponseUpdate> updates) 63if (updates is ICollection<ChatResponseUpdate> { Count: 0 }) 73/// <param name="update">The <see cref="ChatResponseUpdate"/> instance to convert to a message and add to the list.</param> 78/// If the <see cref="ChatResponseUpdate"/> has no content, or all its content gets excluded by <paramref name="filter"/>, then 81public static void AddMessages(this IList<ChatMessage> list, ChatResponseUpdate update, Func<AIContent, bool>? filter = null) 101/// <param name="updates">The <see cref="ChatResponseUpdate"/> instances to convert to messages and add to the list.</param> 108/// method may use <see cref="ChatResponseUpdate.MessageId"/> to determine message boundaries, as well as coalesce 113this IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken = default) 121IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken) => 125/// <summary>Combines <see cref="ChatResponseUpdate"/> instances into a single <see cref="ChatResponse"/>.</summary> 131/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 136this IEnumerable<ChatResponseUpdate> updates) 142foreach (var update in updates) 152/// <summary>Combines <see cref="ChatResponseUpdate"/> instances into a single <see cref="ChatResponse"/>.</summary> 159/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 164this IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken = default) 171IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken) 175await foreach (var update in updates.WithCancellation(cancellationToken).ConfigureAwait(false)) 300/// <summary>Processes the <see cref="ChatResponseUpdate"/>, incorporating its contents into <paramref name="response"/>.</summary> 303private static void ProcessUpdate(ChatResponseUpdate update, ChatResponse response)
ChatCompletion\ChatResponseUpdate.cs (8)
19/// <see cref="ChatResponseUpdate"/> is so named because it represents updates 24/// The relationship between <see cref="ChatResponse"/> and <see cref="ChatResponseUpdate"/> is 43/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 49/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 57/// <summary>Initializes a new instance of the <see cref="ChatResponseUpdate"/> class.</summary> 93/// If a <see cref="ChatResponseUpdate"/> is created to represent some underlying object from another object 114/// This value is used when <see cref="ChatResponseExtensions.ToChatResponseAsync(IAsyncEnumerable{ChatResponseUpdate}, System.Threading.CancellationToken)"/> 115/// groups <see cref="ChatResponseUpdate"/> instances into <see cref="ChatMessage"/> instances.
ChatCompletion\DelegatingChatClient.cs (1)
47public virtual IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatCompletion\IChatClient.cs (1)
54IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
Utilities\AIJsonUtilities.Defaults.cs (2)
83[JsonSerializable(typeof(ChatResponseUpdate))] 84[JsonSerializable(typeof(IReadOnlyList<ChatResponseUpdate>))]
Microsoft.Extensions.AI.Abstractions.Tests (30)
ChatCompletion\ChatClientExtensionsTests.cs (4)
151await foreach (var update in client.GetStreamingResponseAsync("hello", expectedOptions, cts.Token)) 161private static async IAsyncEnumerable<ChatResponseUpdate> YieldAsync(params ChatResponseUpdate[] updates) 164foreach (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 (10)
21Assert.Throws<ArgumentNullException>("updates", () => ((List<ChatResponseUpdate>)null!).ToChatResponse()); 29ChatResponseUpdate[] updates = 73ChatResponseUpdate[] updates = 151List<ChatResponseUpdate> updates = []; 212ChatResponseUpdate[] updates = 250ChatResponseUpdate[] updates = 290ChatResponseUpdate[] updates = 307private static async IAsyncEnumerable<ChatResponseUpdate> YieldAsync(IEnumerable<ChatResponseUpdate> updates) 309foreach (ChatResponseUpdate update in updates)
ChatCompletion\ChatResponseUpdateTests.cs (5)
16ChatResponseUpdate update = new(); 33ChatResponseUpdate update = new(); 87ChatResponseUpdate update = new() 115ChatResponseUpdate original = new() 137ChatResponseUpdate? result = JsonSerializer.Deserialize(json, TestJsonSerializerContext.Default.ChatResponseUpdate);
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.AzureAIInference (3)
AzureAIInferenceChatClient.cs (3)
141public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 166ChatResponseUpdate responseUpdate = new() 228var responseUpdate = new ChatResponseUpdate
Microsoft.Extensions.AI.AzureAIInference.Tests (7)
AzureAIInferenceChatClientTests.cs (7)
221List<ChatResponseUpdate> updates = []; 222await foreach (var update in client.GetStreamingResponseAsync(messages, new() 272await foreach (var update in client.GetStreamingResponseAsync("hello", new ChatOptions 453await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 611await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 1335List<ChatResponseUpdate> updates = []; 1336await foreach (var update in client.GetStreamingResponseAsync("How old is Alice?", new()
Microsoft.Extensions.AI.Evaluation.Reporting (6)
ResponseCachingChatClient.cs (3)
60protected override async Task<IReadOnlyList<ChatResponseUpdate>?> ReadCacheStreamingAsync( 66IReadOnlyList<ChatResponseUpdate>? updates = 112IReadOnlyList<ChatResponseUpdate> value,
SimpleChatClient.cs (3)
54public override async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 59List<ChatResponseUpdate>? updates = null; 64await foreach (ChatResponseUpdate update in
Microsoft.Extensions.AI.Evaluation.Safety (2)
ContentSafetyChatClient.cs (2)
82public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 108await foreach (var update in
Microsoft.Extensions.AI.Integration.Tests (16)
CallCountingChatClient.cs (1)
26public override IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(
ChatClientIntegrationTests.cs (11)
107await foreach (var chunk in ChatClient.GetStreamingResponseAsync(chatHistory)) 142List<ChatResponseUpdate> chunks = []; 143await foreach (var chunk in response) 272await foreach (var chunk in response) 683await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 692await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 703await foreach (var update in chatClient.GetStreamingResponseAsync([message])) 861await foreach (var update in chatClient.GetStreamingResponseAsync("What's the biggest animal?")) 912await foreach (var update in chatClient.GetStreamingResponseAsync( 1283await foreach (var chunk in chatClient.GetStreamingResponseAsync(messages)) 1385public 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)
Microsoft.Extensions.AI.OpenAI (21)
MicrosoftExtensionsAIChatExtensions.cs (7)
115/// sequence of <see cref="ChatResponseUpdate"/> instances. 119/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 122this IAsyncEnumerable<ChatResponseUpdate> responseUpdates, [EnumeratorCancellation] CancellationToken cancellationToken = default) 126await foreach (var update in responseUpdates.WithCancellation(cancellationToken).ConfigureAwait(false)) 242/// Creates a sequence of Microsoft.Extensions.AI <see cref="ChatResponseUpdate"/> instances from the specified 248/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 250public static IAsyncEnumerable<ChatResponseUpdate> AsChatResponseUpdatesAsync(
MicrosoftExtensionsAIResponsesExtensions.cs (3)
48/// Creates a sequence of Microsoft.Extensions.AI <see cref="ChatResponseUpdate"/> instances from the specified 54/// <returns>A sequence of converted <see cref="ChatResponseUpdate"/> instances.</returns> 56public static IAsyncEnumerable<ChatResponseUpdate> AsChatResponseUpdatesAsync(
OpenAIAssistantsChatClient.cs (3)
88public async IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 183ChatResponseUpdate ruUpdate = new() 219ChatResponseUpdate textUpdate = new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text)
OpenAIChatClient.cs (4)
83public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 307internal static async IAsyncEnumerable<ChatResponseUpdate> FromOpenAIStreamingChatCompletionAsync( 331ChatResponseUpdate responseUpdate = new() 398ChatResponseUpdate responseUpdate = new()
OpenAIResponsesChatClient.cs (4)
178public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync( 191internal static async IAsyncEnumerable<ChatResponseUpdate> FromOpenAIStreamingResponseUpdatesAsync( 206ChatResponseUpdate CreateUpdate(AIContent? content = null) => 228var update = CreateUpdate(ToUsageDetails(completedUpdate.Response) is { } usage ? new UsageContent(usage) : null);
Microsoft.Extensions.AI.OpenAI.Tests (20)
OpenAIChatClientTests.cs (6)
233List<ChatResponseUpdate> updates = []; 234await foreach (var update in client.GetStreamingResponseAsync("hello", new() 495await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 650await foreach (var update in client.GetStreamingResponseAsync("hello", chatOptions)) 1307List<ChatResponseUpdate> updates = []; 1308await foreach (var update in client.GetStreamingResponseAsync("How old is Alice?", new()
OpenAIConversionTests.cs (12)
242List<ChatResponseUpdate> updates = []; 243await foreach (var update in CreateUpdates().AsChatResponseUpdatesAsync()) 543var asyncEnumerable = ((IAsyncEnumerable<ChatResponseUpdate>)null!).AsOpenAIStreamingChatCompletionUpdatesAsync(); 550var updates = new List<ChatResponseUpdate>(); 572var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello") 590var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello, world!") 619var responseUpdate = new ChatResponseUpdate 658var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCallContent]) 693var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCall1, functionCall2]) 721var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, 769var responseUpdate = new ChatResponseUpdate(inputRole, "Test message"); 795var responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Test")
OpenAIResponseClientTests.cs (2)
249List<ChatResponseUpdate> updates = []; 250await foreach (var update in client.GetStreamingResponseAsync("hello", new()
Microsoft.Extensions.AI.Tests (34)
ChatCompletion\ConfigureOptionsChatClientTests.cs (3)
89static async IAsyncEnumerable<ChatResponseUpdate> YieldUpdates(ChatResponseUpdate[] updates) 91foreach (var update in updates)
ChatCompletion\DistributedCachingChatClientTest.cs (13)
247List<ChatResponseUpdate> actualUpdate = 260List<ChatResponseUpdate> expectedCachedResponse = 311List<ChatResponseUpdate> expectedResponse = 344ChatResponseUpdate update = Assert.Single(await ToListAsync(result2)); 366List<ChatResponseUpdate> expectedResponse = 416var item = Assert.Single(items); 434List<ChatResponseUpdate> expectedResponse = 482return ToAsyncEnumerableAsync<ChatResponseUpdate>(Task.CompletedTask, 521return ToAsyncEnumerableAsync<ChatResponseUpdate>( 833private static async Task AssertResponsesEqualAsync(IReadOnlyList<ChatResponseUpdate> expected, IAsyncEnumerable<ChatResponseUpdate> actual) 837foreach (var expectedItem in expected) 841var actualItem = actualEnumerator.Current;
ChatCompletion\FunctionInvokingChatClientTests.cs (2)
737List<ChatResponseUpdate> updates; 752foreach (var update in updates)
ChatCompletion\LoggingChatClientTests.cs (2)
105static async IAsyncEnumerable<ChatResponseUpdate> GetUpdatesAsync() 117await foreach (var update in client.GetStreamingResponseAsync(
ChatCompletion\OpenTelemetryChatClientTests.cs (2)
64async static IAsyncEnumerable<ChatResponseUpdate> CallbackAsync( 139await foreach (var update in chatClient.GetStreamingResponseAsync(messages, options))
ChatCompletion\ReducingChatClientTests.cs (2)
72var updates = new List<ChatResponseUpdate>(); 73await 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.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]))