37 instantiations of ChatFinishReason
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatFinishReason.cs (5)
69
public static ChatFinishReason Stop { get; } =
new
("stop");
72
public static ChatFinishReason Length { get; } =
new
("length");
75
public static ChatFinishReason ToolCalls { get; } =
new
("tool_calls");
78
public static ChatFinishReason ContentFilter { get; } =
new
("content_filter");
86
new
(reader.GetString()!);
Microsoft.Extensions.AI.Abstractions.Tests (30)
ChatCompletion\ChatFinishReasonTests.cs (30)
15
Assert.Equal("abc", new
ChatFinishReason
("abc").Value);
21
Assert.Throws<ArgumentNullException>("value", () => new
ChatFinishReason
(null!));
22
Assert.Throws<ArgumentException>("value", () => new
ChatFinishReason
(" "));
28
Assert.True(new
ChatFinishReason
("abc").Equals(new
ChatFinishReason
("ABC")));
29
Assert.True(new
ChatFinishReason
("abc").Equals((object)new
ChatFinishReason
("ABC")));
30
Assert.True(new
ChatFinishReason
("abc") == new
ChatFinishReason
("ABC"));
31
Assert.Equal(new
ChatFinishReason
("abc").GetHashCode(), new
ChatFinishReason
("ABC").GetHashCode());
32
Assert.False(new
ChatFinishReason
("abc") != new
ChatFinishReason
("ABC"));
34
Assert.False(new
ChatFinishReason
("abc").Equals(new
ChatFinishReason
("def")));
35
Assert.False(new
ChatFinishReason
("abc").Equals((object)new
ChatFinishReason
("def")));
36
Assert.False(new
ChatFinishReason
("abc").Equals(null));
37
Assert.False(new
ChatFinishReason
("abc").Equals("abc"));
38
Assert.False(new
ChatFinishReason
("abc") == new
ChatFinishReason
("def"));
39
Assert.True(new
ChatFinishReason
("abc") != new
ChatFinishReason
("def"));
40
Assert.NotEqual(new
ChatFinishReason
("abc").GetHashCode(), new
ChatFinishReason
("def").GetHashCode()); // not guaranteed due to possible hash code collisions
55
Assert.Equal("test", new
ChatFinishReason
("test").Value);
56
Assert.Equal("test", new
ChatFinishReason
("test").ToString());
58
Assert.Equal("TEST", new
ChatFinishReason
("TEST").Value);
59
Assert.Equal("TEST", new
ChatFinishReason
("TEST").ToString());
68
ChatFinishReason role =
new
("abc");
Microsoft.Extensions.AI.AzureAIInference (1)
AzureAIInferenceChatClient.cs (1)
284
new
(s);
Microsoft.Extensions.AI.OpenAI (1)
OpenAIChatClient.cs (1)
719
_ => new
ChatFinishReason
(s),
107 references to ChatFinishReason
Microsoft.Extensions.AI (5)
ChatCompletion\OpenTelemetryChatClient.cs (5)
220
private static string SerializeChatMessages(IEnumerable<ChatMessage> messages,
ChatFinishReason
? chatFinishReason = null)
226
chatFinishReason ==
ChatFinishReason
.Length ? "length" :
227
chatFinishReason ==
ChatFinishReason
.ContentFilter ? "content_filter" :
228
chatFinishReason ==
ChatFinishReason
.ToolCalls ? "tool_call" :
439
if (response.FinishReason is
ChatFinishReason
finishReason)
Microsoft.Extensions.AI.Abstractions (22)
ChatCompletion\ChatFinishReason.cs (20)
15
public readonly struct ChatFinishReason : IEquatable<
ChatFinishReason
>
20
/// <summary>Initializes a new instance of the <see cref="
ChatFinishReason
"/> struct with a string that describes the reason.</summary>
34
public override bool Equals([NotNullWhen(true)] object? obj) => obj is
ChatFinishReason
other && Equals(other);
37
public bool Equals(
ChatFinishReason
other) => StringComparer.OrdinalIgnoreCase.Equals(Value, other.Value);
48
public static bool operator ==(
ChatFinishReason
left,
ChatFinishReason
right)
59
public static bool operator !=(
ChatFinishReason
left,
ChatFinishReason
right)
68
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model encountering a natural stop point or provided stop sequence.</summary>
69
public static
ChatFinishReason
Stop { get; } = new("stop");
71
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model reaching the maximum length allowed for the request and/or response (typically in terms of tokens).</summary>
72
public static
ChatFinishReason
Length { get; } = new("length");
74
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model requesting the use of a tool that was defined in the request.</summary>
75
public static
ChatFinishReason
ToolCalls { get; } = new("tool_calls");
77
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model filtering content, whether for safety, prohibited content, sensitive content, or other such issues.</summary>
78
public static
ChatFinishReason
ContentFilter { get; } = new("content_filter");
80
/// <summary>Provides a <see cref="JsonConverter{ChatFinishReason}"/> for serializing <see cref="
ChatFinishReason
"/> instances.</summary>
82
public sealed class Converter : JsonConverter<
ChatFinishReason
>
85
public override
ChatFinishReason
Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
89
public override void Write(Utf8JsonWriter writer,
ChatFinishReason
value, JsonSerializerOptions options) =>
ChatCompletion\ChatResponse.cs (1)
86
public
ChatFinishReason
? FinishReason { get; set; }
ChatCompletion\ChatResponseUpdate.cs (1)
136
public
ChatFinishReason
? FinishReason { get; set; }
Microsoft.Extensions.AI.Abstractions.Tests (21)
ChatCompletion\ChatFinishReasonTests.cs (8)
46
Assert.Equal("stop",
ChatFinishReason
.Stop.Value);
47
Assert.Equal("length",
ChatFinishReason
.Length.Value);
48
Assert.Equal("tool_calls",
ChatFinishReason
.ToolCalls.Value);
49
Assert.Equal("content_filter",
ChatFinishReason
.ContentFilter.Value);
61
Assert.Equal("stop", default(
ChatFinishReason
).Value);
62
Assert.Equal("stop", default(
ChatFinishReason
).ToString());
68
ChatFinishReason
role = new("abc");
72
ChatFinishReason
? result = JsonSerializer.Deserialize(json, TestJsonSerializerContext.Default.ChatFinishReason);
ChatCompletion\ChatResponseTests.cs (9)
65
response.FinishReason =
ChatFinishReason
.ContentFilter;
66
Assert.Equal(
ChatFinishReason
.ContentFilter, response.FinishReason);
92
FinishReason =
ChatFinishReason
.ContentFilter,
109
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
134
FinishReason =
ChatFinishReason
.ContentFilter,
147
Assert.Equal(
ChatFinishReason
.ContentFilter, update0.FinishReason);
176
FinishReason =
ChatFinishReason
.ContentFilter,
189
Assert.Equal(
ChatFinishReason
.ContentFilter, update0.FinishReason);
198
Assert.Equal(
ChatFinishReason
.ContentFilter, update1.FinishReason);
ChatCompletion\ChatResponseUpdateTests.cs (4)
80
update.FinishReason =
ChatFinishReason
.ContentFilter;
81
Assert.Equal(
ChatFinishReason
.ContentFilter, update.FinishReason);
131
FinishReason =
ChatFinishReason
.ContentFilter,
162
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
Microsoft.Extensions.AI.AzureAIInference (6)
AzureAIInferenceChatClient.cs (6)
148
ChatFinishReason
? finishReason = default;
278
private static
ChatFinishReason
? ToFinishReason(CompletionsFinishReason? finishReason) =>
280
finishReason == CompletionsFinishReason.Stopped ?
ChatFinishReason
.Stop :
281
finishReason == CompletionsFinishReason.TokenLimitReached ?
ChatFinishReason
.Length :
282
finishReason == CompletionsFinishReason.ContentFiltered ?
ChatFinishReason
.ContentFilter :
283
finishReason == CompletionsFinishReason.ToolCalls ?
ChatFinishReason
.ToolCalls :
Microsoft.Extensions.AI.AzureAIInference.Tests (6)
AzureAIInferenceChatClientTests.cs (6)
162
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
243
Assert.Equal(i < 10 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
1011
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1145
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1260
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
1355
Assert.Equal(i < 7 ? null :
ChatFinishReason
.ToolCalls, updates[i].FinishReason);
Microsoft.Extensions.AI.OpenAI (14)
MicrosoftExtensionsAIChatExtensions.cs (2)
266
/// <summary>Converts the <see cref="Microsoft.Extensions.AI.
ChatFinishReason
"/> to a <see cref="ChatFinishReason"/>.</summary>
267
private static ChatFinishReason ToChatFinishReason(Microsoft.Extensions.AI.
ChatFinishReason
? finishReason) =>
OpenAIChatClient.cs (6)
304
ChatFinishReason
? finishReason = null;
711
private static
ChatFinishReason
? FromOpenAIFinishReason(OpenAI.Chat.ChatFinishReason? finishReason) =>
715
OpenAI.Chat.ChatFinishReason.Stop =>
ChatFinishReason
.Stop,
716
OpenAI.Chat.ChatFinishReason.Length =>
ChatFinishReason
.Length,
717
OpenAI.Chat.ChatFinishReason.ContentFilter =>
ChatFinishReason
.ContentFilter,
718
OpenAI.Chat.ChatFinishReason.ToolCalls or OpenAI.Chat.ChatFinishReason.FunctionCall =>
ChatFinishReason
.ToolCalls,
OpenAIResponsesChatClient.cs (6)
250
(anyFunctions ?
ChatFinishReason
.ToolCalls :
251
ChatFinishReason
.Stop);
372
/// <summary>Creates a <see cref="
ChatFinishReason
"/> from a <see cref="ResponseIncompleteStatusReason"/>.</summary>
373
private static
ChatFinishReason
? ToFinishReason(ResponseIncompleteStatusReason? statusReason) =>
374
statusReason == ResponseIncompleteStatusReason.ContentFilter ?
ChatFinishReason
.ContentFilter :
375
statusReason == ResponseIncompleteStatusReason.MaxOutputTokens ?
ChatFinishReason
.Length :
Microsoft.Extensions.AI.OpenAI.Tests (28)
OpenAIChatClientTests.cs (10)
167
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
253
Assert.Equal(i < 10 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
809
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
906
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1004
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1116
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
1200
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1309
Assert.Equal(i < 7 ? null :
ChatFinishReason
.ToolCalls, updates[i].FinishReason);
1457
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1572
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
OpenAIConversionTests.cs (15)
220
Assert.Equal(
ChatFinishReason
.Length, response.FinishReason);
251
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
406
FinishReason =
ChatFinishReason
.Stop,
474
FinishReason =
ChatFinishReason
.ToolCalls
503
(
ChatFinishReason
.Stop, OpenAI.Chat.ChatFinishReason.Stop),
504
(
ChatFinishReason
.Length, OpenAI.Chat.ChatFinishReason.Length),
505
(
ChatFinishReason
.ContentFilter, OpenAI.Chat.ChatFinishReason.ContentFilter),
506
(
ChatFinishReason
.ToolCalls, OpenAI.Chat.ChatFinishReason.ToolCalls)
595
FinishReason =
ChatFinishReason
.Stop,
787
(
ChatFinishReason
.Stop, OpenAI.Chat.ChatFinishReason.Stop),
788
(
ChatFinishReason
.Length, OpenAI.Chat.ChatFinishReason.Length),
789
(
ChatFinishReason
.ContentFilter, OpenAI.Chat.ChatFinishReason.ContentFilter),
790
(
ChatFinishReason
.ToolCalls, OpenAI.Chat.ChatFinishReason.ToolCalls)
827
FinishReason =
ChatFinishReason
.Stop
891
FinishReason =
ChatFinishReason
.Stop
OpenAIResponseClientTests.cs (3)
342
Assert.Equal(i < updates.Count - 1 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
452
Assert.Equal(i < updates.Count - 1 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
1464
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
Microsoft.Extensions.AI.Tests (4)
ChatCompletion\DistributedCachingChatClientTest.cs (2)
395
FinishReason =
ChatFinishReason
.Length,
421
Assert.Equal(
ChatFinishReason
.Length, item.FinishReason);
ChatCompletion\OpenTelemetryChatClientTests.cs (2)
41
FinishReason =
ChatFinishReason
.Stop,
77
FinishReason =
ChatFinishReason
.Stop,
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
51
FinishReason =
ChatFinishReason
.Stop,