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