Add confidence levels (#140)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2024-09-11 23:08:02 +02:00
1 parent 222c1e929f
commit 4722c1baa1
44 files changed
+564 -60

No files matched your search

@@ -136,4 +136,10 @@ public static class ConfigurationSelectDataFactory
foreach (var profile in profiles.GetAllProfiles())
yield return new(profile.Name, profile.Id);
}
public static IEnumerable<ConfigurationSelectData<ConfidenceSchemes>> GetConfidenceSchemesData()
{
foreach (var scheme in Enum.GetValues<ConfidenceSchemes>())
yield return new(scheme.GetListDescription(), scheme);
}
}
@@ -16,6 +16,11 @@ public sealed class Data
/// </summary>
public List<Provider> Providers { get; init; } = [];
/// <summary>
/// Settings concerning the LLM providers.
/// </summary>
public DataLLMProviders LLMProviders { get; init; } = new();
/// <summary>
/// List of configured profiles.
/// </summary>
@@ -0,0 +1,21 @@
using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
public sealed class DataLLMProviders
{
/// <summary>
/// Should we show the provider confidence level?
/// </summary>
public bool ShowProviderConfidence { get; set; } = true;
/// <summary>
/// Which confidence scheme to use.
/// </summary>
public ConfidenceSchemes ConfidenceScheme { get; set; } = ConfidenceSchemes.TRUST_USA_EUROPE;
/// <summary>
/// Provide custom confidence levels for each LLM provider.
/// </summary>
public Dictionary<Providers, ConfidenceLevel> CustomConfidenceScheme { get; set; } = new();
}
@@ -1,6 +1,7 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using AIStudio.Provider;
using AIStudio.Settings.DataModel;
// ReSharper disable NotAccessedPositionalProperty.Local
@@ -160,4 +161,57 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger)
preselection = this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedProfile);
return preselection != default ? preselection : Profile.NO_PROFILE;
}
public ConfidenceLevel GetConfiguredConfidenceLevel(Providers provider)
{
if(provider is Providers.NONE)
return ConfidenceLevel.NONE;
switch (this.ConfigurationData.LLMProviders.ConfidenceScheme)
{
case ConfidenceSchemes.TRUST_USA_EUROPE:
return provider switch
{
Providers.SELF_HOSTED => ConfidenceLevel.HIGH,
Providers.FIREWORKS => ConfidenceLevel.UNTRUSTED,
_ => ConfidenceLevel.MEDIUM,
};
case ConfidenceSchemes.TRUST_USA:
return provider switch
{
Providers.SELF_HOSTED => ConfidenceLevel.HIGH,
Providers.FIREWORKS => ConfidenceLevel.UNTRUSTED,
Providers.MISTRAL => ConfidenceLevel.LOW,
_ => ConfidenceLevel.MEDIUM,
};
case ConfidenceSchemes.TRUST_EUROPE:
return provider switch
{
Providers.SELF_HOSTED => ConfidenceLevel.HIGH,
Providers.FIREWORKS => ConfidenceLevel.UNTRUSTED,
Providers.MISTRAL => ConfidenceLevel.MEDIUM,
_ => ConfidenceLevel.LOW,
};
case ConfidenceSchemes.LOCAL_TRUST_ONLY:
return provider switch
{
Providers.SELF_HOSTED => ConfidenceLevel.HIGH,
Providers.FIREWORKS => ConfidenceLevel.UNTRUSTED,
_ => ConfidenceLevel.VERY_LOW,
};
case ConfidenceSchemes.CUSTOM:
return this.ConfigurationData.LLMProviders.CustomConfidenceScheme.GetValueOrDefault(provider, ConfidenceLevel.UNKNOWN);
default:
return ConfidenceLevel.UNKNOWN;
}
}
}