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)
729
_ => new
ChatFinishReason
(s),
101 references to ChatFinishReason
Microsoft.Extensions.AI (1)
ChatCompletion\OpenTelemetryChatClient.cs (1)
384
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)
314
ChatFinishReason
? finishReason = null;
721
private static
ChatFinishReason
? FromOpenAIFinishReason(OpenAI.Chat.ChatFinishReason? finishReason) =>
725
OpenAI.Chat.ChatFinishReason.Stop =>
ChatFinishReason
.Stop,
726
OpenAI.Chat.ChatFinishReason.Length =>
ChatFinishReason
.Length,
727
OpenAI.Chat.ChatFinishReason.ContentFilter =>
ChatFinishReason
.ContentFilter,
728
OpenAI.Chat.ChatFinishReason.ToolCalls or OpenAI.Chat.ChatFinishReason.FunctionCall =>
ChatFinishReason
.ToolCalls,
OpenAIResponsesChatClient.cs (6)
231
(functionCallInfos is not null ?
ChatFinishReason
.ToolCalls :
232
ChatFinishReason
.Stop);
362
/// <summary>Creates a <see cref="
ChatFinishReason
"/> from a <see cref="ResponseIncompleteStatusReason"/>.</summary>
363
private static
ChatFinishReason
? ToFinishReason(ResponseIncompleteStatusReason? statusReason) =>
364
statusReason == ResponseIncompleteStatusReason.ContentFilter ?
ChatFinishReason
.ContentFilter :
365
statusReason == ResponseIncompleteStatusReason.MaxOutputTokens ?
ChatFinishReason
.Length :
Microsoft.Extensions.AI.OpenAI.Tests (26)
OpenAIChatClientTests.cs (10)
169
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
255
Assert.Equal(i < 10 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
827
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
924
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1022
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1134
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
1218
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1327
Assert.Equal(i < 7 ? null :
ChatFinishReason
.ToolCalls, updates[i].FinishReason);
1475
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1590
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 (1)
272
Assert.Equal(i < updates.Count - 1 ? null :
ChatFinishReason
.Stop, updates[i].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)
44
FinishReason =
ChatFinishReason
.Stop,
80
FinishReason =
ChatFinishReason
.Stop,
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
51
FinishReason =
ChatFinishReason
.Stop,