36 instantiations of ChatFinishReason
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatFinishReason.cs (5)
66
public static ChatFinishReason Stop { get; } =
new
("stop");
69
public static ChatFinishReason Length { get; } =
new
("length");
72
public static ChatFinishReason ToolCalls { get; } =
new
("tool_calls");
75
public static ChatFinishReason ContentFilter { get; } =
new
("content_filter");
83
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.OpenAI (1)
OpenAIChatClient.cs (1)
840
_ => new
ChatFinishReason
(s),
105 references to ChatFinishReason
Microsoft.Extensions.AI (5)
ChatCompletion\OpenTelemetryChatClient.cs (1)
444
if (response.FinishReason is
ChatFinishReason
finishReason)
Common\OtelMessageSerializer.cs (4)
39
IEnumerable<ChatMessage> messages,
ChatFinishReason
? chatFinishReason = null, JsonSerializerOptions? customContentSerializerOptions = null)
45
chatFinishReason ==
ChatFinishReason
.Length ? "length" :
46
chatFinishReason ==
ChatFinishReason
.ContentFilter ? "content_filter" :
47
chatFinishReason ==
ChatFinishReason
.ToolCalls ? "tool_call" :
Microsoft.Extensions.AI.Abstractions (22)
ChatCompletion\ChatFinishReason.cs (20)
15
public readonly struct ChatFinishReason : IEquatable<
ChatFinishReason
>
17
/// <summary>Initializes a new instance of the <see cref="
ChatFinishReason
"/> struct with a string that describes the reason.</summary>
31
public override bool Equals([NotNullWhen(true)] object? obj) => obj is
ChatFinishReason
other && Equals(other);
34
public bool Equals(
ChatFinishReason
other) => StringComparer.OrdinalIgnoreCase.Equals(Value, other.Value);
45
public static bool operator ==(
ChatFinishReason
left,
ChatFinishReason
right)
56
public static bool operator !=(
ChatFinishReason
left,
ChatFinishReason
right)
65
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model encountering a natural stop point or provided stop sequence.</summary>
66
public static
ChatFinishReason
Stop { get; } = new("stop");
68
/// <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>
69
public static
ChatFinishReason
Length { get; } = new("length");
71
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model requesting the use of a tool that was defined in the request.</summary>
72
public static
ChatFinishReason
ToolCalls { get; } = new("tool_calls");
74
/// <summary>Gets a <see cref="
ChatFinishReason
"/> representing the model filtering content, whether for safety, prohibited content, sensitive content, or other such issues.</summary>
75
public static
ChatFinishReason
ContentFilter { get; } = new("content_filter");
77
/// <summary>Provides a <see cref="JsonConverter{ChatFinishReason}"/> for serializing <see cref="
ChatFinishReason
"/> instances.</summary>
79
public sealed class Converter : JsonConverter<
ChatFinishReason
>
82
public override
ChatFinishReason
Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
86
public override void Write(Utf8JsonWriter writer,
ChatFinishReason
value, JsonSerializerOptions options) =>
ChatCompletion\ChatResponse.cs (1)
85
public
ChatFinishReason
? FinishReason { get; set; }
ChatCompletion\ChatResponseUpdate.cs (1)
155
public
ChatFinishReason
? FinishReason { get; set; }
Microsoft.Extensions.AI.Abstractions.Tests (28)
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 (12)
65
response.FinishReason =
ChatFinishReason
.ContentFilter;
66
Assert.Equal(
ChatFinishReason
.ContentFilter, response.FinishReason);
93
FinishReason =
ChatFinishReason
.ContentFilter,
111
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
130
FinishReason =
ChatFinishReason
.ContentFilter,
149
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
215
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
245
FinishReason =
ChatFinishReason
.ContentFilter,
258
Assert.Equal(
ChatFinishReason
.ContentFilter, update0.FinishReason);
287
FinishReason =
ChatFinishReason
.ContentFilter,
300
Assert.Equal(
ChatFinishReason
.ContentFilter, update0.FinishReason);
309
Assert.Equal(
ChatFinishReason
.ContentFilter, update1.FinishReason);
ChatCompletion\ChatResponseUpdateTests.cs (8)
80
update.FinishReason =
ChatFinishReason
.ContentFilter;
81
Assert.Equal(
ChatFinishReason
.ContentFilter, update.FinishReason);
133
FinishReason =
ChatFinishReason
.ContentFilter,
166
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
196
FinishReason =
ChatFinishReason
.ContentFilter,
230
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
259
FinishReason =
ChatFinishReason
.ContentFilter,
451
Assert.Equal(
ChatFinishReason
.ContentFilter, result.FinishReason);
Microsoft.Extensions.AI.OpenAI (14)
MicrosoftExtensionsAIChatExtensions.cs (2)
293
/// <summary>Converts the <see cref="Microsoft.Extensions.AI.
ChatFinishReason
"/> to a <see cref="ChatFinishReason"/>.</summary>
294
private static ChatFinishReason ToChatFinishReason(Microsoft.Extensions.AI.
ChatFinishReason
? finishReason) =>
OpenAIChatClient.cs (6)
355
ChatFinishReason
? finishReason = null;
832
private static
ChatFinishReason
? FromOpenAIFinishReason(OpenAI.Chat.ChatFinishReason? finishReason) =>
836
OpenAI.Chat.ChatFinishReason.Stop =>
ChatFinishReason
.Stop,
837
OpenAI.Chat.ChatFinishReason.Length =>
ChatFinishReason
.Length,
838
OpenAI.Chat.ChatFinishReason.ContentFilter =>
ChatFinishReason
.ContentFilter,
839
OpenAI.Chat.ChatFinishReason.ToolCalls or OpenAI.Chat.ChatFinishReason.FunctionCall =>
ChatFinishReason
.ToolCalls,
OpenAIResponsesChatClient.cs (6)
453
(anyFunctions ?
ChatFinishReason
.ToolCalls :
454
ChatFinishReason
.Stop);
946
/// <summary>Creates a <see cref="
ChatFinishReason
"/> from a <see cref="ResponseIncompleteStatusReason"/>.</summary>
947
private static
ChatFinishReason
? AsFinishReason(ResponseIncompleteStatusReason? statusReason) =>
948
statusReason == ResponseIncompleteStatusReason.ContentFilter ?
ChatFinishReason
.ContentFilter :
949
statusReason == ResponseIncompleteStatusReason.MaxOutputTokens ?
ChatFinishReason
.Length :
Microsoft.Extensions.AI.OpenAI.Tests (32)
OpenAIChatClientTests.cs (11)
170
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
256
Assert.Equal(i < 10 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
304
Assert.Equal(
ChatFinishReason
.Stop, updates[2].FinishReason);
876
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
973
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1071
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1183
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
1268
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1377
Assert.Equal(i < 7 ? null :
ChatFinishReason
.ToolCalls, updates[i].FinishReason);
1525
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
1645
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
OpenAIConversionTests.cs (15)
896
Assert.Equal(
ChatFinishReason
.Length, response.FinishReason);
927
Assert.Equal(
ChatFinishReason
.ToolCalls, response.FinishReason);
1528
FinishReason =
ChatFinishReason
.Stop,
1596
FinishReason =
ChatFinishReason
.ToolCalls
1625
(
ChatFinishReason
.Stop, OpenAI.Chat.ChatFinishReason.Stop),
1626
(
ChatFinishReason
.Length, OpenAI.Chat.ChatFinishReason.Length),
1627
(
ChatFinishReason
.ContentFilter, OpenAI.Chat.ChatFinishReason.ContentFilter),
1628
(
ChatFinishReason
.ToolCalls, OpenAI.Chat.ChatFinishReason.ToolCalls)
1717
FinishReason =
ChatFinishReason
.Stop,
1909
(
ChatFinishReason
.Stop, OpenAI.Chat.ChatFinishReason.Stop),
1910
(
ChatFinishReason
.Length, OpenAI.Chat.ChatFinishReason.Length),
1911
(
ChatFinishReason
.ContentFilter, OpenAI.Chat.ChatFinishReason.ContentFilter),
1912
(
ChatFinishReason
.ToolCalls, OpenAI.Chat.ChatFinishReason.ToolCalls)
1949
FinishReason =
ChatFinishReason
.Stop
2012
FinishReason =
ChatFinishReason
.Stop
OpenAIResponseClientTests.cs (6)
343
Assert.Equal(i < updates.Count - 1 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
875
Assert.Equal(i < updates.Count - 1 ? null :
ChatFinishReason
.Stop, updates[i].FinishReason);
1115
Assert.Equal(i >= 4 ?
ChatFinishReason
.Stop : null, updates[i].FinishReason);
2519
Assert.Equal(
ChatFinishReason
.Stop, response.FinishReason);
3251
Assert.Equal(
ChatFinishReason
.Stop, updates[i].FinishReason);
5768
Assert.Equal(
ChatFinishReason
.Length, response.FinishReason);
Microsoft.Extensions.AI.Tests (4)
ChatCompletion\DistributedCachingChatClientTest.cs (2)
396
FinishReason =
ChatFinishReason
.Length,
422
Assert.Equal(
ChatFinishReason
.Length, item.FinishReason);
ChatCompletion\OpenTelemetryChatClientTests.cs (2)
44
FinishReason =
ChatFinishReason
.Stop,
82
FinishReason =
ChatFinishReason
.Stop,