38 instantiations of ChatFinishReason
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatFinishReason.cs (5)
69public static ChatFinishReason Stop { get; } = new("stop"); 72public static ChatFinishReason Length { get; } = new("length"); 75public static ChatFinishReason ToolCalls { get; } = new("tool_calls"); 78public static ChatFinishReason ContentFilter { get; } = new("content_filter"); 86new(reader.GetString()!);
Microsoft.Extensions.AI.Abstractions.Tests (30)
ChatCompletion\ChatFinishReasonTests.cs (30)
15Assert.Equal("abc", new ChatFinishReason("abc").Value); 21Assert.Throws<ArgumentNullException>("value", () => new ChatFinishReason(null!)); 22Assert.Throws<ArgumentException>("value", () => new ChatFinishReason(" ")); 28Assert.True(new ChatFinishReason("abc").Equals(new ChatFinishReason("ABC"))); 29Assert.True(new ChatFinishReason("abc").Equals((object)new ChatFinishReason("ABC"))); 30Assert.True(new ChatFinishReason("abc") == new ChatFinishReason("ABC")); 31Assert.Equal(new ChatFinishReason("abc").GetHashCode(), new ChatFinishReason("ABC").GetHashCode()); 32Assert.False(new ChatFinishReason("abc") != new ChatFinishReason("ABC")); 34Assert.False(new ChatFinishReason("abc").Equals(new ChatFinishReason("def"))); 35Assert.False(new ChatFinishReason("abc").Equals((object)new ChatFinishReason("def"))); 36Assert.False(new ChatFinishReason("abc").Equals(null)); 37Assert.False(new ChatFinishReason("abc").Equals("abc")); 38Assert.False(new ChatFinishReason("abc") == new ChatFinishReason("def")); 39Assert.True(new ChatFinishReason("abc") != new ChatFinishReason("def")); 40Assert.NotEqual(new ChatFinishReason("abc").GetHashCode(), new ChatFinishReason("def").GetHashCode()); // not guaranteed due to possible hash code collisions 55Assert.Equal("test", new ChatFinishReason("test").Value); 56Assert.Equal("test", new ChatFinishReason("test").ToString()); 58Assert.Equal("TEST", new ChatFinishReason("TEST").Value); 59Assert.Equal("TEST", new ChatFinishReason("TEST").ToString()); 68ChatFinishReason role = new("abc");
Microsoft.Extensions.AI.AzureAIInference (1)
AzureAIInferenceChatClient.cs (1)
274new(s);
Microsoft.Extensions.AI.Ollama (1)
OllamaChatClient.cs (1)
251_ => new ChatFinishReason(response.DoneReason),
Microsoft.Extensions.AI.OpenAI (1)
OpenAIChatClient.cs (1)
731_ => new ChatFinishReason(s),
90 references to ChatFinishReason
Microsoft.Extensions.AI (1)
ChatCompletion\OpenTelemetryChatClient.cs (1)
379if (response.FinishReason is ChatFinishReason finishReason)
Microsoft.Extensions.AI.Abstractions (22)
ChatCompletion\ChatFinishReason.cs (20)
15public 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> 34public override bool Equals([NotNullWhen(true)] object? obj) => obj is ChatFinishReason other && Equals(other); 37public bool Equals(ChatFinishReason other) => StringComparer.OrdinalIgnoreCase.Equals(Value, other.Value); 48public static bool operator ==(ChatFinishReason left, ChatFinishReason right) 59public 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> 69public 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> 72public 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> 75public 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> 78public static ChatFinishReason ContentFilter { get; } = new("content_filter"); 80/// <summary>Provides a <see cref="JsonConverter{ChatFinishReason}"/> for serializing <see cref="ChatFinishReason"/> instances.</summary> 82public sealed class Converter : JsonConverter<ChatFinishReason> 85public override ChatFinishReason Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => 89public override void Write(Utf8JsonWriter writer, ChatFinishReason value, JsonSerializerOptions options) =>
ChatCompletion\ChatResponse.cs (1)
104public ChatFinishReason? FinishReason { get; set; }
ChatCompletion\ChatResponseUpdate.cs (1)
152public ChatFinishReason? FinishReason { get; set; }
Microsoft.Extensions.AI.Abstractions.Tests (18)
ChatCompletion\ChatFinishReasonTests.cs (8)
46Assert.Equal("stop", ChatFinishReason.Stop.Value); 47Assert.Equal("length", ChatFinishReason.Length.Value); 48Assert.Equal("tool_calls", ChatFinishReason.ToolCalls.Value); 49Assert.Equal("content_filter", ChatFinishReason.ContentFilter.Value); 61Assert.Equal("stop", default(ChatFinishReason).Value); 62Assert.Equal("stop", default(ChatFinishReason).ToString()); 68ChatFinishReason role = new("abc"); 72ChatFinishReason? result = JsonSerializer.Deserialize(json, TestJsonSerializerContext.Default.ChatFinishReason);
ChatCompletion\ChatResponseTests.cs (6)
65response.FinishReason = ChatFinishReason.ContentFilter; 66Assert.Equal(ChatFinishReason.ContentFilter, response.FinishReason); 92FinishReason = ChatFinishReason.ContentFilter, 109Assert.Equal(ChatFinishReason.ContentFilter, result.FinishReason); 134FinishReason = ChatFinishReason.ContentFilter, 147Assert.Equal(ChatFinishReason.ContentFilter, update0.FinishReason);
ChatCompletion\ChatResponseUpdateTests.cs (4)
80update.FinishReason = ChatFinishReason.ContentFilter; 81Assert.Equal(ChatFinishReason.ContentFilter, update.FinishReason); 131FinishReason = ChatFinishReason.ContentFilter, 162Assert.Equal(ChatFinishReason.ContentFilter, result.FinishReason);
Microsoft.Extensions.AI.AzureAIInference (6)
AzureAIInferenceChatClient.cs (6)
138ChatFinishReason? finishReason = default; 268private static ChatFinishReason? ToFinishReason(CompletionsFinishReason? finishReason) => 270finishReason == CompletionsFinishReason.Stopped ? ChatFinishReason.Stop : 271finishReason == CompletionsFinishReason.TokenLimitReached ? ChatFinishReason.Length : 272finishReason == CompletionsFinishReason.ContentFiltered ? ChatFinishReason.ContentFilter : 273finishReason == CompletionsFinishReason.ToolCalls ? ChatFinishReason.ToolCalls :
Microsoft.Extensions.AI.AzureAIInference.Tests (6)
AzureAIInferenceChatClientTests.cs (6)
148Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 229Assert.Equal(i < 10 ? null : ChatFinishReason.Stop, updates[i].FinishReason); 538Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 672Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 787Assert.Equal(ChatFinishReason.ToolCalls, response.FinishReason); 882Assert.Equal(i < 7 ? null : ChatFinishReason.ToolCalls, updates[i].FinishReason);
Microsoft.Extensions.AI.Ollama (3)
OllamaChatClient.cs (3)
245private static ChatFinishReason? ToFinishReason(OllamaChatResponse response) => 249"length" => ChatFinishReason.Length, 250"stop" => ChatFinishReason.Stop,
Microsoft.Extensions.AI.Ollama.Tests (5)
OllamaChatClientTests.cs (5)
127Assert.Equal(ChatFinishReason.Length, response.FinishReason); 197Assert.Equal(i < updates.Count - 1 ? null : ChatFinishReason.Length, updates[i].FinishReason); 296Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 384Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 481Assert.Equal(ChatFinishReason.Stop, response.FinishReason);
Microsoft.Extensions.AI.OpenAI (13)
OpenAIChatClient.cs (6)
244ChatFinishReason? finishReason = null; 723private static ChatFinishReason? FromOpenAIFinishReason(OpenAI.Chat.ChatFinishReason? finishReason) => 727OpenAI.Chat.ChatFinishReason.Stop => ChatFinishReason.Stop, 728OpenAI.Chat.ChatFinishReason.Length => ChatFinishReason.Length, 729OpenAI.Chat.ChatFinishReason.ContentFilter => ChatFinishReason.ContentFilter, 730OpenAI.Chat.ChatFinishReason.ToolCalls or OpenAI.Chat.ChatFinishReason.FunctionCall => ChatFinishReason.ToolCalls,
OpenAIResponseChatClient.cs (7)
126response.FinishReason ??= ChatFinishReason.ToolCalls; 183(functionCallInfos is not null ? ChatFinishReason.ToolCalls : ChatFinishReason.Stop), 297/// <summary>Creates a <see cref="ChatFinishReason"/> from a <see cref="ResponseIncompleteStatusReason"/>.</summary> 298private static ChatFinishReason? ToFinishReason(ResponseIncompleteStatusReason? statusReason) => 299statusReason == ResponseIncompleteStatusReason.ContentFilter ? ChatFinishReason.ContentFilter : 300statusReason == ResponseIncompleteStatusReason.MaxOutputTokens ? ChatFinishReason.Length :
Microsoft.Extensions.AI.OpenAI.Tests (11)
OpenAIChatClientTests.cs (10)
172Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 263Assert.Equal(i < 10 ? null : ChatFinishReason.Stop, updates[i].FinishReason); 434Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 534Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 635Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 751Assert.Equal(ChatFinishReason.ToolCalls, response.FinishReason); 838Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 953Assert.Equal(i < 7 ? null : ChatFinishReason.ToolCalls, updates[i].FinishReason); 1101Assert.Equal(ChatFinishReason.Stop, response.FinishReason); 1219Assert.Equal(ChatFinishReason.Stop, response.FinishReason);
OpenAIResponseClientTests.cs (1)
275Assert.Equal(i < updates.Count - 1 ? null : ChatFinishReason.Stop, updates[i].FinishReason);
Microsoft.Extensions.AI.Tests (4)
ChatCompletion\DistributedCachingChatClientTest.cs (2)
365FinishReason = ChatFinishReason.Length, 391Assert.Equal(ChatFinishReason.Length, item.FinishReason);
ChatCompletion\OpenTelemetryChatClientTests.cs (2)
44FinishReason = ChatFinishReason.Stop, 80FinishReason = ChatFinishReason.Stop,
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
51FinishReason = ChatFinishReason.Stop,