From 370de3a2aeffc64e7d0d6aec1716430db1a95e6d Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Wed, 18 Dec 2024 21:42:03 +0100 Subject: [PATCH] Added allowed LLM provider setting (data protection) --- .../Assistants/ERI/AllowedLLMProviders.cs | 9 +++++++++ .../ERI/AllowedLLMProvidersExtensions.cs | 16 ++++++++++++++++ .../Assistants/ERI/AssistantERI.razor | 11 +++++++++++ .../Assistants/ERI/AssistantERI.razor.cs | 11 +++++++++++ .../Settings/DataModel/DataERI.cs | 5 +++++ 5 files changed, 52 insertions(+) create mode 100644 app/MindWork AI Studio/Assistants/ERI/AllowedLLMProviders.cs create mode 100644 app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs diff --git a/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProviders.cs b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProviders.cs new file mode 100644 index 00000000..7bc8f0d2 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProviders.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Assistants.ERI; + +public enum AllowedLLMProviders +{ + NONE, + + ANY, + SELF_HOSTED, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs new file mode 100644 index 00000000..a0066d99 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs @@ -0,0 +1,16 @@ +namespace AIStudio.Assistants.ERI; + +public static class AllowedLLMProvidersExtensions +{ + public static string Name(this AllowedLLMProviders provider) + { + return provider switch + { + AllowedLLMProviders.NONE => "Please select what kind of LLM provider are allowed for this data source", + AllowedLLMProviders.ANY => "Any LLM provider is allowed: users might choose a cloud-based or a self-hosted provider", + AllowedLLMProviders.SELF_HOSTED => "Self-hosted LLM providers are allowed: users cannot choose any cloud-based provider", + + _ => "Unknown option was selected" + }; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor index 84bf6e8c..875b6823 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor @@ -123,6 +123,17 @@ } + + Data protection settings + + + + @foreach (var option in Enum.GetValues()) + { + @option.Name() + } + + Data retrieval settings diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index 1f971234..1b0ff5a3 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -55,6 +55,7 @@ public partial class AssistantERI : AssistantBaseCore this.selectedAuthenticationMethods = []; this.authDescription = string.Empty; this.selectedOperatingSystem = OperatingSystem.NONE; + this.allowedLLMProviders = AllowedLLMProviders.NONE; this.retrievalDescription = string.Empty; this.additionalLibraries = string.Empty; } @@ -80,6 +81,7 @@ public partial class AssistantERI : AssistantBaseCore this.authDescription = this.SettingsManager.ConfigurationData.ERI.PreselectedAuthDescription; this.selectedOperatingSystem = this.SettingsManager.ConfigurationData.ERI.PreselectedOperatingSystem; + this.allowedLLMProviders = this.SettingsManager.ConfigurationData.ERI.PreselectedAllowedLLMProviders; this.retrievalDescription = this.SettingsManager.ConfigurationData.ERI.PreselectedRetrievalDescription; this.additionalLibraries = this.SettingsManager.ConfigurationData.ERI.PreselectedAdditionalLibraries; return true; @@ -101,6 +103,7 @@ public partial class AssistantERI : AssistantBaseCore private IEnumerable selectedAuthenticationMethods = new HashSet(); private string authDescription = string.Empty; private OperatingSystem selectedOperatingSystem = OperatingSystem.NONE; + private AllowedLLMProviders allowedLLMProviders = AllowedLLMProviders.NONE; private string retrievalDescription = string.Empty; private string additionalLibraries = string.Empty; @@ -284,6 +287,14 @@ public partial class AssistantERI : AssistantBaseCore return null; } + private string? ValidateAllowedLLMProviders(AllowedLLMProviders provider) + { + if(provider == AllowedLLMProviders.NONE) + return "Please select which types of LLMs users are allowed to use with the data from this ERI server."; + + return null; + } + private string AuthDescriptionTitle() { const string TITLE = "Describe how you planned the authentication process"; diff --git a/app/MindWork AI Studio/Settings/DataModel/DataERI.cs b/app/MindWork AI Studio/Settings/DataModel/DataERI.cs index 3a10c6cd..64e835f5 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataERI.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataERI.cs @@ -77,6 +77,11 @@ public sealed class DataERI /// public OperatingSystem PreselectedOperatingSystem { get; set; } = OperatingSystem.NONE; + /// + /// Do you want to preselect which LLM providers are allowed? + /// + public AllowedLLMProviders PreselectedAllowedLLMProviders { get; set; } = AllowedLLMProviders.NONE; + /// /// Do you want to preselect a retrieval description? ///