Added the Model Comparison assistant for blind comparisons of two models (#1009)

Co-authored-by: Thorsten Sommer <SommerEngineering@users.noreply.github.com>
This commit is contained in:
Dominic NeuburgandThorsten Sommer authored and GitHub committed 2026-11-14 14:11:34 +01:00
1 parent 12f26445ba
commit b7255694cd
221 files changed
+19989 -90

No files matched your search

@@ -30,6 +30,7 @@ public enum ConfigurableAssistant
VISUAL_BRIEFING_ASSISTANT,
BATCH_PROCESSING_ASSISTANT,
BEYOND_FACTS_LAB_ASSISTANT,
MODEL_COMPARISON_ASSISTANT,
// ReSharper disable InconsistentNaming
I18N_ASSISTANT,
@@ -222,7 +222,12 @@ public sealed class Data
/// Gets the managed settings of the BeyondFacts Lab.
/// </summary>
public DataBeyondFactsLab BeyondFactsLab { get; set; } = new(x => x.BeyondFactsLab);
/// <summary>
/// Gets the options of the Model Comparison assistant.
/// </summary>
public DataModelComparison ModelComparison { get; set; } = new(x => x.ModelComparison);
public DataLegalCheck LegalCheck { get; set; } = new();
public DataSynonyms Synonyms { get; set; } = new();
@@ -0,0 +1,68 @@
using System.Linq.Expressions;
using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
/// <summary>
/// Stores the options of the Model Comparison assistant, which an organization may manage except for the preset.
/// </summary>
/// <param name="configSelection">The managed-configuration selector.</param>
public sealed class DataModelComparison(Expression<Func<Data, DataModelComparison>>? configSelection = null)
{
/// <summary>
/// The value of a model setting which preselects no model at all.
/// </summary>
/// <remarks>
/// An empty text already means the provider which the whole app preselects, as in every other assistant, so
/// "no model" needs a value of its own. It is the ID of Provider.NONE, an empty GUID, which a configuration
/// plugin can set as well, since the plugin reads these settings as GUIDs. ConfigurationProviderSelection
/// offers the same value for its entry without a provider.
/// </remarks>
public static readonly string NO_MODEL = Provider.NONE.Id;
/// <summary>
/// Initializes unmanaged options of the Model Comparison assistant.
/// </summary>
public DataModelComparison() : this(null)
{
}
/// <summary>
/// Gets or sets whether the options below apply. Without them, new presets and comparison series start with the
/// provider of the whole app as their first model and without a judge.
/// </summary>
public bool PreselectOptions { get; set; } = ManagedConfiguration.Register(configSelection, value => value.PreselectOptions, false);
/// <summary>
/// Gets or sets the minimum confidence which every model of a comparison needs, the judge included.
/// </summary>
public ConfidenceLevel MinimumProviderConfidence { get; set; } = ManagedConfiguration.Register(configSelection, value => value.MinimumProviderConfidence, ConfidenceLevel.NONE);
/// <summary>
/// Gets or sets the model which every new preset and every new comparison series starts with as its first model,
/// e.g., the model the user works with every day and wants to test new models against.
/// </summary>
/// <remarks>
/// NO_MODEL preselects none, and an empty text the provider which the whole app preselects.
/// </remarks>
public string PreselectedProvider { get; set; } = ManagedConfiguration.Register(configSelection, value => value.PreselectedProvider, NO_MODEL);
/// <summary>
/// Gets or sets the judge which every new preset and every new comparison series starts with. A preselected
/// judge also switches the judge on.
/// </summary>
/// <remarks>
/// NO_MODEL preselects none and leaves the judge off, and an empty text the provider which the whole app preselects.
/// </remarks>
public string PreselectedJudgeProvider { get; set; } = ManagedConfiguration.Register(configSelection, value => value.PreselectedJudgeProvider, NO_MODEL);
/// <summary>
/// Gets or sets the ID of the preset which the mode Answer Variance opens with, or an empty text for none.
/// </summary>
/// <remarks>
/// Not managed: the presets belong to the user alone, as files of the data directory, so no organization can
/// know their IDs.
/// </remarks>
public string PreselectedPresetId { get; set; } = string.Empty;
}