240 instantiations of ChatResponseUpdate
Microsoft.Extensions.AI (1)
ChatCompletion\FunctionInvokingChatClient.cs (1)
631
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)
164
ChatResponseUpdate ruUpdate =
new
()
209
yield return new
ChatResponseUpdate
(ChatRole.Assistant, [hcitcc])
240
yield return new
ChatResponseUpdate
(ChatRole.Assistant, [hcitrc])
252
ChatResponseUpdate textUpdate =
new
(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text)
301
yield return
new
()
OpenAIChatClient.cs (2)
349
ChatResponseUpdate responseUpdate =
new
()
416
ChatResponseUpdate responseUpdate =
new
()
OpenAIResponsesChatClient.cs (1)
300
new
(lastRole, content is not null ? [content] : null)
Microsoft.Extensions.AI.OpenAI.Tests (10)
OpenAIConversionTests.cs (10)
1118
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant, "Hello")
1136
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant, "Hello, world!")
1165
var responseUpdate = new
ChatResponseUpdate
1204
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant, [functionCallContent])
1239
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant, [functionCall1, functionCall2])
1267
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant,
1315
var responseUpdate = new
ChatResponseUpdate
(inputRole, "Test message");
1341
var responseUpdate = new
ChatResponseUpdate
(ChatRole.Assistant, "Test")
1362
new
ChatResponseUpdate
(ChatRole.Assistant, "Hello, ")
1369
new
ChatResponseUpdate
(ChatRole.Assistant, "world!")
Microsoft.Extensions.AI.Tests (48)
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)
975
yield return new
ChatResponseUpdate
(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]) { MessageId = messageId };
978
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)
761
new
() { Contents = [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["text"] = "Input 1" })] },
762
new
() { Contents = [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["text"] = "Input 2" })] }
767
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 (10)
69
yield return new
ChatResponseUpdate
(ChatRole.Assistant, text)
75
yield return new
ChatResponseUpdate
80
yield return new
ChatResponseUpdate
371
yield return
new
(ChatRole.Assistant, "Assistant response text");
372
yield return
new
() { Contents = [new TextReasoningContent("This is reasoning")] };
373
yield return
new
() { Contents = [new FunctionCallContent("call-123", "GetWeather", new Dictionary<string, object?> { ["location"] = "Seattle" })] };
374
yield return
new
() { Contents = [new FunctionResultContent("call-123", "72°F and sunny")] };
375
yield return
new
() { Contents = [new DataContent(Convert.FromBase64String("aGVsbG8gd29ybGQ="), "image/png")] };
376
yield return
new
() { Contents = [new UriContent(new Uri("https://example.com/image.jpg"), "image/jpeg")] };
377
yield return
new
() { Contents = [new HostedFileContent("file-abc123")] };
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)
342 references to ChatResponseUpdate
Aspire.Dashboard (2)
Model\Assistant\AIHelpers.cs (2)
472
await foreach (
var
update in response.WithCancellation(responseCts.Token).ConfigureAwait(false))
503
public static IList<ChatMessage> GetMessages(
ChatResponseUpdate
update, Func<AIContent, bool>? filter = null)
Microsoft.Extensions.AI (53)
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 (7)
406
public override async IAsyncEnumerable<
ChatResponseUpdate
> GetStreamingResponseAsync(
427
List<
ChatResponseUpdate
> updates = []; // updates from the current response
493
await foreach (
var
update in base.GetStreamingResponseAsync(messages, options, cancellationToken))
497
Throw.InvalidOperationException($"The inner {nameof(IChatClient)} streamed a null {nameof(
ChatResponseUpdate
)}.");
561
var
updateToYield = updates[lastYieldedUpdateIndex];
583
var
updateToYield = updates[lastYieldedUpdateIndex];
630
private static
ChatResponseUpdate
ConvertToolResultMessageToUpdate(ChatMessage message, string? conversationId, string? messageId) =>
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)
162
public override async IAsyncEnumerable<
ChatResponseUpdate
> GetStreamingResponseAsync(
174
IAsyncEnumerable<
ChatResponseUpdate
> updates;
186
List<
ChatResponseUpdate
> trackedUpdates = [];
192
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)
193
/// 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)
116
[JsonSerializable(typeof(
ChatResponseUpdate
))]
117
[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 (23)
MicrosoftExtensionsAIChatExtensions.cs (7)
124
/// sequence of <see cref="
ChatResponseUpdate
"/> instances.
128
/// <returns>A sequence of converted <see cref="
ChatResponseUpdate
"/> instances.</returns>
131
this IAsyncEnumerable<
ChatResponseUpdate
> responseUpdates, [EnumeratorCancellation] CancellationToken cancellationToken = default)
135
await foreach (
var
update in responseUpdates.WithCancellation(cancellationToken).ConfigureAwait(false))
258
/// Creates a sequence of Microsoft.Extensions.AI <see cref="
ChatResponseUpdate
"/> instances from the specified
264
/// <returns>A sequence of converted <see cref="
ChatResponseUpdate
"/> instances.</returns>
266
public static IAsyncEnumerable<
ChatResponseUpdate
> AsChatResponseUpdatesAsync(
MicrosoftExtensionsAIResponsesExtensions.cs (3)
68
/// Creates a sequence of Microsoft.Extensions.AI <see cref="
ChatResponseUpdate
"/> instances from the specified
74
/// <returns>A sequence of converted <see cref="
ChatResponseUpdate
"/> instances.</returns>
76
public static IAsyncEnumerable<
ChatResponseUpdate
> AsChatResponseUpdatesAsync(
OpenAIAssistantsChatClient.cs (3)
73
public async IAsyncEnumerable<
ChatResponseUpdate
> GetStreamingResponseAsync(
164
ChatResponseUpdate
ruUpdate = new()
252
ChatResponseUpdate
textUpdate = new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text)
OpenAIChatClient.cs (4)
98
public IAsyncEnumerable<
ChatResponseUpdate
> GetStreamingResponseAsync(
325
internal static async IAsyncEnumerable<
ChatResponseUpdate
> FromOpenAIStreamingChatCompletionAsync(
349
ChatResponseUpdate
responseUpdate = new()
416
ChatResponseUpdate
responseUpdate = new()
OpenAIResponsesChatClient.cs (6)
245
public IAsyncEnumerable<
ChatResponseUpdate
> GetStreamingResponseAsync(
279
internal static async IAsyncEnumerable<
ChatResponseUpdate
> FromOpenAIStreamingResponseUpdatesAsync(
299
ChatResponseUpdate
CreateUpdate(AIContent? content = null) =>
364
var
update = CreateUpdate(ToUsageDetails(completedUpdate.Response) is { } usage ? new UsageContent(usage) : null);
422
var
mcpUpdate = CreateUpdate();
439
var
codeUpdate = CreateUpdate();
Microsoft.Extensions.AI.OpenAI.Tests (81)
OpenAIChatClientTests.cs (8)
232
List<
ChatResponseUpdate
> updates = [];
233
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
494
await foreach (
var
update in client.GetStreamingResponseAsync("hello", chatOptions))
649
await foreach (
var
update in client.GetStreamingResponseAsync("hello", chatOptions))
1322
List<
ChatResponseUpdate
> updates = [];
1323
await foreach (
var
update in client.GetStreamingResponseAsync("How old is Alice?", new()
1723
List<
ChatResponseUpdate
> updates = [];
1724
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
OpenAIConversionTests.cs (12)
788
List<
ChatResponseUpdate
> updates = [];
789
await foreach (
var
update in CreateUpdates().AsChatResponseUpdatesAsync())
1089
var asyncEnumerable = ((IAsyncEnumerable<
ChatResponseUpdate
>)null!).AsOpenAIStreamingChatCompletionUpdatesAsync();
1096
var updates = new List<
ChatResponseUpdate
>();
1118
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello")
1136
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Hello, world!")
1165
var
responseUpdate = new ChatResponseUpdate
1204
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCallContent])
1239
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, [functionCall1, functionCall2])
1267
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant,
1315
var
responseUpdate = new ChatResponseUpdate(inputRole, "Test message");
1341
var
responseUpdate = new ChatResponseUpdate(ChatRole.Assistant, "Test")
OpenAIResponseClientIntegrationTests.cs (4)
297
await foreach (
var
update in ChatClient.GetStreamingResponseAsync("What is the capital of France?", chatOptions))
320
await foreach (
var
update in ChatClient.GetStreamingResponseAsync("What is the capital of France?", chatOptions))
336
await foreach (
var
update in ChatClient.GetStreamingResponseAsync([], chatOptions))
361
await foreach (
var
update in chatClient.GetStreamingResponseAsync("What time is it?", chatOptions))
OpenAIResponseClientTests.cs (57)
294
List<
ChatResponseUpdate
> updates = [];
295
await foreach (
var
update in client.GetStreamingResponseAsync("Calculate the sum of the first 5 positive integers.", new()
427
List<
ChatResponseUpdate
> updates = [];
428
await foreach (
var
update in client.GetStreamingResponseAsync("Solve this problem step by step.", new()
470
var
assistantUpdate = updates.First(u => u.Role == ChatRole.Assistant && !string.IsNullOrEmpty(u.Text));
558
List<
ChatResponseUpdate
> updates = [];
559
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
795
List<
ChatResponseUpdate
> updates = [];
796
await foreach (
var
update in client.GetStreamingResponseAsync([new ChatMessage(ChatRole.User, "Search the web for the temperature today in Fremont")], chatOptions))
2507
List<
ChatResponseUpdate
> updates = [];
2508
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
2600
List<
ChatResponseUpdate
> updates = [];
2601
await foreach (
var
update in client.GetStreamingResponseAsync([], chatOptions))
2667
await foreach (
var
update in client.GetStreamingResponseAsync("Please book a hotel for me", chatOptions))
3463
List<
ChatResponseUpdate
> updates = [];
3464
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
3544
List<
ChatResponseUpdate
> updates = [];
3545
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
3625
List<
ChatResponseUpdate
> updates = [];
3626
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
3703
List<
ChatResponseUpdate
> updates = [];
3704
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
3900
List<
ChatResponseUpdate
> updates = [];
3901
await foreach (
var
update in client.GetStreamingResponseAsync("hello", new()
4782
List<
ChatResponseUpdate
> updates = [];
4783
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4817
List<
ChatResponseUpdate
> updates = [];
4818
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4852
List<
ChatResponseUpdate
> updates = [];
4853
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4890
List<
ChatResponseUpdate
> updates = [];
4891
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4928
List<
ChatResponseUpdate
> updates = [];
4929
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4934
var
refusalUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent ec && ec.ErrorCode == "Refusal"));
4986
List<
ChatResponseUpdate
> updates = [];
4987
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
4992
var
errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent));
5029
List<
ChatResponseUpdate
> updates = [];
5030
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
5035
var
errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent));
5072
List<
ChatResponseUpdate
> updates = [];
5073
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
5078
var
errorUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c is ErrorContent));
5115
List<
ChatResponseUpdate
> updates = [];
5116
await foreach (
var
update in client.GetStreamingResponseAsync("test"))
5121
var
annotatedUpdate = updates.FirstOrDefault(u => u.Contents.Any(c => c.Annotations?.Count > 0));
5482
List<
ChatResponseUpdate
> updates = [];
5492
await foreach (
var
update in client.GetStreamingResponseAsync("Generate an image of a dog", new ChatOptions
5503
var
createdUpdate = updates.First(u => u.CreatedAt.HasValue);
5508
var
toolCallUpdate = updates.FirstOrDefault(u =>
5515
var
partialImageUpdate = updates.FirstOrDefault(u =>
5521
var
completionUpdate = updates.FirstOrDefault(u =>
5599
List<
ChatResponseUpdate
> updates = [];
5610
await foreach (
var
update in client.GetStreamingResponseAsync("Generate an image of a sunset", new ChatOptions
5630
var
partialUpdate = partialImageUpdates.FirstOrDefault(u =>
5667
var
toolCallUpdate = updates.FirstOrDefault(u =>
Microsoft.Extensions.AI.Tests (46)
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)
967
async IAsyncEnumerable<
ChatResponseUpdate
> YieldInnerClientUpdates(
992
await foreach (
var
update in updates)
1040
async IAsyncEnumerable<
ChatResponseUpdate
> YieldInnerClientUpdates(
1070
await foreach (
var
update in updates)
ChatCompletion\FunctionInvokingChatClientTests.cs (2)
755
List<
ChatResponseUpdate
> updates;
770
foreach (
var
update in updates)
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 (4)
61
async static IAsyncEnumerable<
ChatResponseUpdate
> CallbackAsync(
146
await foreach (
var
update in chatClient.GetStreamingResponseAsync(messages, options))
367
async static IAsyncEnumerable<
ChatResponseUpdate
> CallbackAsync(
405
await foreach (
var
update in chatClient.GetStreamingResponseAsync(messages))
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]))