| File: RelevanceTruthAndCompletenessRating.cs | Web Access |
| Project: src\src\Libraries\Microsoft.Extensions.AI.Evaluation.Quality\Microsoft.Extensions.AI.Evaluation.Quality.csproj (Microsoft.Extensions.AI.Evaluation.Quality) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.Extensions.AI.Evaluation.Quality.JsonSerialization; using Microsoft.Extensions.AI.Evaluation.Quality.Utilities; namespace Microsoft.Extensions.AI.Evaluation.Quality; internal sealed class RelevanceTruthAndCompletenessRating { public static RelevanceTruthAndCompletenessRating Inconclusive { get; } = new RelevanceTruthAndCompletenessRating( relevance: 0, relevanceReasoning: string.Empty, relevanceReasons: [], truth: 0, truthReasoning: string.Empty, truthReasons: [], completeness: 0, completenessReasoning: string.Empty, completenessReasons: []); [JsonRequired] public int Relevance { get; set; } [JsonRequired] public string RelevanceReasoning { get; set; } [JsonRequired] public string[] RelevanceReasons { get; set; } [JsonRequired] public int Truth { get; set; } [JsonRequired] public string TruthReasoning { get; set; } [JsonRequired] public string[] TruthReasons { get; set; } [JsonRequired] public int Completeness { get; set; } [JsonRequired] public string CompletenessReasoning { get; set; } [JsonRequired] public string[] CompletenessReasons { get; set; } private const int MinValue = 1; private const int MaxValue = 5; public bool IsInconclusive => Relevance < MinValue || Relevance > MaxValue || Truth < MinValue || Truth > MaxValue || Completeness < MinValue || Completeness > MaxValue; [JsonConstructor] public RelevanceTruthAndCompletenessRating( int relevance, string relevanceReasoning, string[] relevanceReasons, int truth, string truthReasoning, string[] truthReasons, int completeness, string completenessReasoning, string[] completenessReasons) { (Relevance, RelevanceReasoning, RelevanceReasons, Truth, TruthReasoning, TruthReasons, Completeness, CompletenessReasoning, CompletenessReasons) = (relevance, relevanceReasoning, relevanceReasons ?? [], truth, truthReasoning, truthReasons ?? [], completeness, completenessReasoning, completenessReasons ?? []); } public static RelevanceTruthAndCompletenessRating FromJson(string jsonResponse) { ReadOnlySpan<char> trimmed = JsonOutputFixer.TrimMarkdownDelimiters(jsonResponse); return JsonSerializer.Deserialize(trimmed, SerializerContext.Default.RelevanceTruthAndCompletenessRating)!; } }