mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-05-18 18:12:15 +00:00
Streamline chat provider selection logic.
This commit is contained in:
parent
6155442039
commit
4fd293389e
@ -4696,6 +4696,12 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T13933
|
|||||||
-- Preselect aspects for the LLM to focus on when generating slides, such as bullet points or specific topics to emphasize.
|
-- Preselect aspects for the LLM to focus on when generating slides, such as bullet points or specific topics to emphasize.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1528169602"] = "Preselect aspects for the LLM to focus on when generating slides, such as bullet points or specific topics to emphasize."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1528169602"] = "Preselect aspects for the LLM to focus on when generating slides, such as bullet points or specific topics to emphasize."
|
||||||
|
|
||||||
|
-- Slide Planner Assistant options are preselected
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1549358578"] = "Slide Planner Assistant options are preselected"
|
||||||
|
|
||||||
|
-- No Slide Planner Assistant options are preselected
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1694374279"] = "No Slide Planner Assistant options are preselected"
|
||||||
|
|
||||||
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
-- Choose whether the assistant should use the app default profile, no profile, or a specific profile.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T1766361623"] = "Choose whether the assistant should use the app default profile, no profile, or a specific profile."
|
||||||
|
|
||||||
@ -4705,9 +4711,6 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T20146
|
|||||||
-- Which audience organizational level should be preselected?
|
-- Which audience organizational level should be preselected?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T216511105"] = "Which audience organizational level should be preselected?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T216511105"] = "Which audience organizational level should be preselected?"
|
||||||
|
|
||||||
-- Preselect Slide Planner Assistant options?
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T227645894"] = "Preselect Slide Planner Assistant options?"
|
|
||||||
|
|
||||||
-- Preselect a profile
|
-- Preselect a profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2322771068"] = "Preselect a profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2322771068"] = "Preselect a profile"
|
||||||
|
|
||||||
@ -4724,26 +4727,23 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T25714
|
|||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2645589441"] = "Preselect the audience age group"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2645589441"] = "Preselect the audience age group"
|
||||||
|
|
||||||
-- Assistant: Slide Planner Assistant Options
|
-- Assistant: Slide Planner Assistant Options
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3215549988"] = "Assistant: Slide Planner Assistant Options"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3226042276"] = "Assistant: Slide Planner Assistant Options"
|
||||||
|
|
||||||
-- Which audience expertise should be preselected?
|
-- Which audience expertise should be preselected?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3228597992"] = "Which audience expertise should be preselected?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3228597992"] = "Which audience expertise should be preselected?"
|
||||||
|
|
||||||
|
-- Preselect Slide Planner Assistant options?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T339924858"] = "Preselect Slide Planner Assistant options?"
|
||||||
|
|
||||||
-- Close
|
-- Close
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3448155331"] = "Close"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3448155331"] = "Close"
|
||||||
|
|
||||||
-- Preselect important aspects
|
-- Preselect important aspects
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3705987833"] = "Preselect important aspects"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3705987833"] = "Preselect important aspects"
|
||||||
|
|
||||||
-- No Slide Planner Assistant options are preselected
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T4214398691"] = "No Slide Planner Assistant options are preselected"
|
|
||||||
|
|
||||||
-- Preselect the audience profile
|
-- Preselect the audience profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T861397972"] = "Preselect the audience profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T861397972"] = "Preselect the audience profile"
|
||||||
|
|
||||||
-- Slide Planner Assistant options are preselected
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T93124146"] = "Slide Planner Assistant options are preselected"
|
|
||||||
|
|
||||||
-- Which audience age group should be preselected?
|
-- Which audience age group should be preselected?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T956845877"] = "Which audience age group should be preselected?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T956845877"] = "Which audience age group should be preselected?"
|
||||||
|
|
||||||
|
|||||||
@ -873,22 +873,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable
|
|||||||
var chatProfile = this.ChatThread?.SelectedProfile;
|
var chatProfile = this.ChatThread?.SelectedProfile;
|
||||||
var chatChatTemplate = this.ChatThread?.SelectedChatTemplate;
|
var chatChatTemplate = this.ChatThread?.SelectedChatTemplate;
|
||||||
|
|
||||||
switch (this.SettingsManager.ConfigurationData.Chat.LoadingProviderBehavior)
|
this.Provider = this.SettingsManager.GetChatProviderForLoadedChat(chatProvider);
|
||||||
{
|
|
||||||
default:
|
|
||||||
case LoadingChatProviderBehavior.USE_CHAT_PROVIDER_IF_AVAILABLE:
|
|
||||||
this.Provider = this.SettingsManager.GetPreselectedProvider(Tools.Components.CHAT, chatProvider);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LoadingChatProviderBehavior.ALWAYS_USE_DEFAULT_CHAT_PROVIDER:
|
|
||||||
this.Provider = this.SettingsManager.GetPreselectedProvider(Tools.Components.CHAT);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LoadingChatProviderBehavior.ALWAYS_USE_LATEST_CHAT_PROVIDER:
|
|
||||||
if(this.Provider == AIStudio.Settings.Provider.NONE)
|
|
||||||
this.Provider = this.SettingsManager.GetPreselectedProvider(Tools.Components.CHAT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
await this.ProviderChanged.InvokeAsync(this.Provider);
|
await this.ProviderChanged.InvokeAsync(this.Provider);
|
||||||
|
|
||||||
|
|||||||
@ -304,6 +304,43 @@ public sealed class SettingsManager
|
|||||||
return this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedProvider && x.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) ?? Provider.NONE;
|
return this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedProvider && x.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) ?? Provider.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")]
|
||||||
|
public Provider GetChatProviderForLoadedChat(string? chatProviderId = null)
|
||||||
|
{
|
||||||
|
var minimumLevel = this.GetMinimumConfidenceLevel(Tools.Components.CHAT);
|
||||||
|
|
||||||
|
bool IsSelectableProvider(Provider provider) =>
|
||||||
|
provider != Provider.NONE
|
||||||
|
&& provider.UsedLLMProvider != LLMProviders.NONE
|
||||||
|
&& provider.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel;
|
||||||
|
|
||||||
|
Provider? FindProviderById(string? providerId)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(providerId))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var provider = this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == providerId);
|
||||||
|
return provider is not null && IsSelectableProvider(provider) ? provider : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var chatProvider = FindProviderById(chatProviderId);
|
||||||
|
if (chatProvider is not null)
|
||||||
|
return chatProvider;
|
||||||
|
|
||||||
|
var defaultChatProvider = this.ConfigurationData.Chat.PreselectOptions
|
||||||
|
? FindProviderById(this.ConfigurationData.Chat.PreselectedProvider)
|
||||||
|
: null;
|
||||||
|
if (defaultChatProvider is not null)
|
||||||
|
return defaultChatProvider;
|
||||||
|
|
||||||
|
var defaultAppProvider = FindProviderById(this.ConfigurationData.App.PreselectedProvider);
|
||||||
|
if (defaultAppProvider is not null)
|
||||||
|
return defaultAppProvider;
|
||||||
|
|
||||||
|
var selectableProviders = this.ConfigurationData.Providers.Where(IsSelectableProvider).ToList();
|
||||||
|
return selectableProviders.Count == 1 ? selectableProviders[0] : Provider.NONE;
|
||||||
|
}
|
||||||
|
|
||||||
public Profile GetPreselectedProfile(Tools.Components component)
|
public Profile GetPreselectedProfile(Tools.Components component)
|
||||||
{
|
{
|
||||||
var preselection = component.GetProfilePreselection(this);
|
var preselection = component.GetProfilePreselection(this);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user