mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-07-04 00:22:56 +00:00
Finalized chat templates (#475)
This commit is contained in:
parent
df062ae6e6
commit
9e207974e9
@ -89,7 +89,7 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase wher
|
|||||||
protected MudForm? form;
|
protected MudForm? form;
|
||||||
protected bool inputIsValid;
|
protected bool inputIsValid;
|
||||||
protected Profile currentProfile = Profile.NO_PROFILE;
|
protected Profile currentProfile = Profile.NO_PROFILE;
|
||||||
protected ChatTemplate currentChatTemplate = ChatTemplate.NO_CHATTEMPLATE;
|
protected ChatTemplate currentChatTemplate = ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
protected ChatThread? chatThread;
|
protected ChatThread? chatThread;
|
||||||
protected IContent? lastUserPrompt;
|
protected IContent? lastUserPrompt;
|
||||||
protected CancellationTokenSource? cancellationTokenSource;
|
protected CancellationTokenSource? cancellationTokenSource;
|
||||||
|
@ -652,6 +652,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T61388
|
|||||||
-- Please provide a custom language.
|
-- Please provide a custom language.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Please provide a custom language."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Please provide a custom language."
|
||||||
|
|
||||||
|
-- System
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System"
|
||||||
|
|
||||||
|
-- You
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3049115964"] = "You"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3424652889"] = "Unknown"
|
||||||
|
|
||||||
|
-- Assistant
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3662687431"] = "Assistant"
|
||||||
|
|
||||||
|
-- User
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3768991250"] = "User"
|
||||||
|
|
||||||
|
-- AI
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "AI"
|
||||||
|
|
||||||
-- Edit Message
|
-- Edit Message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message"
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message"
|
||||||
|
|
||||||
@ -724,6 +742,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1849313532"] = "Type your
|
|||||||
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Your Prompt (use selected instance '{0}', provider '{1}')"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Your Prompt (use selected instance '{0}', provider '{1}')"
|
||||||
|
|
||||||
|
-- Profile usage is disabled according to your chat template settings.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2670286472"] = "Profile usage is disabled according to your chat template settings."
|
||||||
|
|
||||||
-- Delete this chat & start a new one.
|
-- Delete this chat & start a new one.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Delete this chat & start a new one."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Delete this chat & start a new one."
|
||||||
|
|
||||||
@ -751,6 +772,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T636393754"] = "Move the c
|
|||||||
-- Show your workspaces
|
-- Show your workspaces
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Show your workspaces"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Show your workspaces"
|
||||||
|
|
||||||
|
-- Start a new chat with a chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATTEMPLATESELECTION::T1333844707"] = "Start a new chat with a chat template"
|
||||||
|
|
||||||
-- Region
|
-- Region
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
||||||
|
|
||||||
@ -1063,6 +1087,45 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T817101267"]
|
|||||||
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence."
|
||||||
|
|
||||||
|
-- Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1172171653"] = "Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them."
|
||||||
|
|
||||||
|
-- Delete
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1469573738"] = "Delete"
|
||||||
|
|
||||||
|
-- Add Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1548314416"] = "Add Chat Template"
|
||||||
|
|
||||||
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
||||||
|
|
||||||
|
-- No chat templates configured yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2319860307"] = "No chat templates configured yet."
|
||||||
|
|
||||||
|
-- Configure Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2453567568"] = "Configure Chat Templates"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T275026390"] = "Chat Template Name"
|
||||||
|
|
||||||
|
-- Are you sure you want to delete the chat template '{0}'?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3102555824"] = "Are you sure you want to delete the chat template '{0}'?"
|
||||||
|
|
||||||
|
-- Edit
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3267849393"] = "Edit"
|
||||||
|
|
||||||
|
-- Edit Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3596030597"] = "Edit Chat Template"
|
||||||
|
|
||||||
|
-- Your Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3824122683"] = "Your Chat Templates"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3865031940"] = "Actions"
|
||||||
|
|
||||||
|
-- Delete Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T4025180906"] = "Delete Chat Template"
|
||||||
|
|
||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Delete"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Delete"
|
||||||
|
|
||||||
@ -1435,6 +1498,105 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T474393241"] = "Please select
|
|||||||
-- Delete Workspace
|
-- Delete Workspace
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Workspace"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Workspace"
|
||||||
|
|
||||||
|
-- Only text content is supported in the editing mode yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1352914344"] = "Only text content is supported in the editing mode yet."
|
||||||
|
|
||||||
|
-- Please enter a message for the example conversation.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1362948628"] = "Please enter a message for the example conversation."
|
||||||
|
|
||||||
|
-- The chat template name must be unique; the chosen name is already in use.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1396308587"] = "The chat template name must be unique; the chosen name is already in use."
|
||||||
|
|
||||||
|
-- Please enter a name for the chat template.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1548747185"] = "Please enter a name for the chat template."
|
||||||
|
|
||||||
|
-- Update
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1847791252"] = "Update"
|
||||||
|
|
||||||
|
-- The chat template name must not exceed 40 characters.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T204496403"] = "The chat template name must not exceed 40 characters."
|
||||||
|
|
||||||
|
-- Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2292424657"] = "Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs."
|
||||||
|
|
||||||
|
-- Role
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2418769465"] = "Role"
|
||||||
|
|
||||||
|
-- Tell the AI your system prompt.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2552381261"] = "Tell the AI your system prompt."
|
||||||
|
|
||||||
|
-- No, prohibit profile use for this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2579080722"] = "No, prohibit profile use for this template"
|
||||||
|
|
||||||
|
-- Entry
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2629823795"] = "Entry"
|
||||||
|
|
||||||
|
-- Add
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2646845972"] = "Add"
|
||||||
|
|
||||||
|
-- The message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2719480499"] = "The message"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T275026390"] = "Chat Template Name"
|
||||||
|
|
||||||
|
-- Commit Changes
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2996302517"] = "Commit Changes"
|
||||||
|
|
||||||
|
-- The name of the chat template is mandatory. Each chat template must have a unique name.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3016903701"] = "The name of the chat template is mandatory. Each chat template must have a unique name."
|
||||||
|
|
||||||
|
-- Image content
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3094908719"] = "Image content"
|
||||||
|
|
||||||
|
-- Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3127437308"] = "Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats."
|
||||||
|
|
||||||
|
-- Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here."
|
||||||
|
|
||||||
|
-- Add a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
||||||
|
|
||||||
|
-- Unsupported content type
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
||||||
|
|
||||||
|
-- What system prompt do you want to use?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3652587353"] = "What system prompt do you want to use?"
|
||||||
|
|
||||||
|
-- Yes, allow profiles when using this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3675108201"] = "Yes, allow profiles when using this template"
|
||||||
|
|
||||||
|
-- Add a new message below
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3757779731"] = "Add a new message below"
|
||||||
|
|
||||||
|
-- Example Conversation
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T380891852"] = "Example Conversation"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3865031940"] = "Actions"
|
||||||
|
|
||||||
|
-- Messages per page
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3893704289"] = "Messages per page"
|
||||||
|
|
||||||
|
-- Use the default system prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4051106111"] = "Use the default system prompt"
|
||||||
|
|
||||||
|
-- Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4199560726"] = "Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements."
|
||||||
|
|
||||||
|
-- Enter a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T446374405"] = "Enter a message"
|
||||||
|
|
||||||
|
-- System Prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T628396066"] = "System Prompt"
|
||||||
|
|
||||||
|
-- Allow the use of profiles together with this chat template?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T823785464"] = "Allow the use of profiles together with this chat template?"
|
||||||
|
|
||||||
|
-- Cancel
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T900713019"] = "Cancel"
|
||||||
|
|
||||||
-- No
|
-- No
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "No"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "No"
|
||||||
|
|
||||||
@ -2329,6 +2491,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T6790
|
|||||||
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."
|
||||||
|
|
||||||
|
-- Preselect one of your chat templates?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T1402022556"] = "Preselect one of your chat templates?"
|
||||||
|
|
||||||
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat."
|
||||||
|
|
||||||
@ -2359,6 +2524,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2913693228"]
|
|||||||
-- Do you want to use any shortcut to send your input?
|
-- Do you want to use any shortcut to send your input?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Do you want to use any shortcut to send your input?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Do you want to use any shortcut to send your input?"
|
||||||
|
|
||||||
|
-- Would you like to set one of your chat templates as the default for chats?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3234927721"] = "Would you like to set one of your chat templates as the default for chats?"
|
||||||
|
|
||||||
-- No chat options are preselected
|
-- No chat options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "No chat options are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "No chat options are preselected"
|
||||||
|
|
||||||
@ -3637,6 +3805,9 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Un
|
|||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
||||||
|
|
||||||
|
-- Use no chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CHATTEMPLATE::T4258819635"] = "Use no chat template"
|
||||||
|
|
||||||
-- Navigation never expands, but there are tooltips
|
-- Navigation never expands, but there are tooltips
|
||||||
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Navigation never expands, but there are tooltips"
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Navigation never expands, but there are tooltips"
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
using AIStudio.Tools.PluginSystem;
|
|
||||||
|
|
||||||
namespace AIStudio.Chat;
|
namespace AIStudio.Chat;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -15,67 +13,3 @@ public enum ChatRole
|
|||||||
AI,
|
AI,
|
||||||
AGENT,
|
AGENT,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Extensions for the ChatRole enum.
|
|
||||||
/// </summary>
|
|
||||||
public static class ExtensionsChatRole
|
|
||||||
{
|
|
||||||
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatRole).Namespace, nameof(ChatRole));
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the name of the role.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="role">The role.</param>
|
|
||||||
/// <returns>The name of the role.</returns>
|
|
||||||
public static string ToName(this ChatRole role) => role switch
|
|
||||||
{
|
|
||||||
ChatRole.SYSTEM => TB("System"),
|
|
||||||
ChatRole.USER => TB("You"),
|
|
||||||
ChatRole.AI => TB("AI"),
|
|
||||||
|
|
||||||
_ => TB("Unknown"),
|
|
||||||
};
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the color of the role.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="role">The role.</param>
|
|
||||||
/// <returns>The color of the role.</returns>
|
|
||||||
public static Color ToColor(this ChatRole role) => role switch
|
|
||||||
{
|
|
||||||
ChatRole.SYSTEM => Color.Info,
|
|
||||||
ChatRole.USER => Color.Primary,
|
|
||||||
ChatRole.AI => Color.Tertiary,
|
|
||||||
|
|
||||||
_ => Color.Error,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the icon of the role.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="role">The role.</param>
|
|
||||||
/// <returns>The icon of the role.</returns>
|
|
||||||
public static string ToIcon(this ChatRole role) => role switch
|
|
||||||
{
|
|
||||||
ChatRole.SYSTEM => Icons.Material.Filled.Settings,
|
|
||||||
ChatRole.USER => Icons.Material.Filled.Person,
|
|
||||||
ChatRole.AI => Icons.Material.Filled.AutoAwesome,
|
|
||||||
|
|
||||||
_ => Icons.Material.Filled.Help,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the specific name of the role for the chat template.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="role">The role.</param>
|
|
||||||
/// <returns>The name of the role.</returns>
|
|
||||||
public static string ToChatTemplateName(this ChatRole role) => role switch
|
|
||||||
{
|
|
||||||
ChatRole.SYSTEM => TB("System"),
|
|
||||||
ChatRole.USER => TB("User"),
|
|
||||||
ChatRole.AI => TB("Assistant"),
|
|
||||||
|
|
||||||
_ => TB("Unknown"),
|
|
||||||
};
|
|
||||||
}
|
|
75
app/MindWork AI Studio/Chat/ChatRoleExtensions.cs
Normal file
75
app/MindWork AI Studio/Chat/ChatRoleExtensions.cs
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
using AIStudio.Tools.PluginSystem;
|
||||||
|
|
||||||
|
namespace AIStudio.Chat;
|
||||||
|
|
||||||
|
public static class ChatRoleExtensions
|
||||||
|
{
|
||||||
|
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatRoleExtensions).Namespace, nameof(ChatRoleExtensions));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the name of the role.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role">The role.</param>
|
||||||
|
/// <returns>The name of the role.</returns>
|
||||||
|
public static string ToName(this ChatRole role) => role switch
|
||||||
|
{
|
||||||
|
ChatRole.SYSTEM => TB("System"),
|
||||||
|
ChatRole.USER => TB("You"),
|
||||||
|
ChatRole.AI => TB("AI"),
|
||||||
|
|
||||||
|
_ => TB("Unknown"),
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the color of the role.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role">The role.</param>
|
||||||
|
/// <returns>The color of the role.</returns>
|
||||||
|
public static Color ToColor(this ChatRole role) => role switch
|
||||||
|
{
|
||||||
|
ChatRole.SYSTEM => Color.Info,
|
||||||
|
ChatRole.USER => Color.Primary,
|
||||||
|
ChatRole.AI => Color.Tertiary,
|
||||||
|
|
||||||
|
_ => Color.Error,
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the icon of the role.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role">The role.</param>
|
||||||
|
/// <returns>The icon of the role.</returns>
|
||||||
|
public static string ToIcon(this ChatRole role) => role switch
|
||||||
|
{
|
||||||
|
ChatRole.SYSTEM => Icons.Material.Filled.Settings,
|
||||||
|
ChatRole.USER => Icons.Material.Filled.Person,
|
||||||
|
ChatRole.AI => Icons.Material.Filled.AutoAwesome,
|
||||||
|
|
||||||
|
_ => Icons.Material.Filled.Help,
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the specific name of the role for the chat template.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role">The role.</param>
|
||||||
|
/// <returns>The name of the role.</returns>
|
||||||
|
public static string ToChatTemplateName(this ChatRole role) => role switch
|
||||||
|
{
|
||||||
|
ChatRole.SYSTEM => TB("System"),
|
||||||
|
ChatRole.USER => TB("User"),
|
||||||
|
ChatRole.AI => TB("Assistant"),
|
||||||
|
|
||||||
|
_ => TB("Unknown"),
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Selects the next role for a chat template.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="currentRole">The current role.</param>
|
||||||
|
/// <returns>The next role for the chat template.</returns>
|
||||||
|
public static ChatRole SelectNextRoleForTemplate(this ChatRole currentRole) => currentRole switch
|
||||||
|
{
|
||||||
|
ChatRole.USER => ChatRole.AI,
|
||||||
|
_ => ChatRole.USER,
|
||||||
|
};
|
||||||
|
}
|
@ -104,7 +104,7 @@ public sealed record ChatThread
|
|||||||
systemPromptTextWithChatTemplate = chatThread.SystemPrompt;
|
systemPromptTextWithChatTemplate = chatThread.SystemPrompt;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(chatThread.SelectedChatTemplate == ChatTemplate.NO_CHATTEMPLATE.Id || chatTeamplateId == Guid.Empty)
|
if(chatThread.SelectedChatTemplate == ChatTemplate.NO_CHAT_TEMPLATE.Id || chatTeamplateId == Guid.Empty)
|
||||||
systemPromptTextWithChatTemplate = chatThread.SystemPrompt;
|
systemPromptTextWithChatTemplate = chatThread.SystemPrompt;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -115,13 +115,12 @@ public sealed record ChatThread
|
|||||||
{
|
{
|
||||||
logMessage = $"Using chat template '{chatTemplate.Name}' for chat thread '{chatThread.Name}'.";
|
logMessage = $"Using chat template '{chatTemplate.Name}' for chat thread '{chatThread.Name}'.";
|
||||||
this.allowProfile = chatTemplate.AllowProfileUsage;
|
this.allowProfile = chatTemplate.AllowProfileUsage;
|
||||||
systemPromptTextWithChatTemplate = $"""
|
systemPromptTextWithChatTemplate = chatTemplate.ToSystemPrompt();
|
||||||
{chatTemplate.ToSystemPrompt()}
|
|
||||||
""";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.LogInformation(logMessage);
|
logger.LogInformation(logMessage);
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -146,11 +145,11 @@ public sealed record ChatThread
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Add information from profile if available and allowed:
|
// Add information from the profile if available and allowed:
|
||||||
//
|
//
|
||||||
string systemPromptText;
|
string systemPromptText;
|
||||||
logMessage = $"Using no profile for chat thread '{chatThread.Name}'.";
|
logMessage = $"Using no profile for chat thread '{chatThread.Name}'.";
|
||||||
if ((string.IsNullOrWhiteSpace(chatThread.SelectedProfile)) || (this.allowProfile is false))
|
if (string.IsNullOrWhiteSpace(chatThread.SelectedProfile) || this.allowProfile is false)
|
||||||
systemPromptText = systemPromptWithAugmentedData;
|
systemPromptText = systemPromptWithAugmentedData;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -28,11 +28,9 @@ public class ContentBlock
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Should the content block be hidden from the user?
|
/// Should the content block be hidden from the user?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HideFromUser { get; set; }
|
public bool HideFromUser { get; init; }
|
||||||
|
|
||||||
public ContentBlock DeepClone()
|
public ContentBlock DeepClone() => new()
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
{
|
||||||
Time = this.Time,
|
Time = this.Time,
|
||||||
ContentType = this.ContentType,
|
ContentType = this.ContentType,
|
||||||
@ -40,5 +38,4 @@ public class ContentBlock
|
|||||||
Role = this.Role,
|
Role = this.Role,
|
||||||
HideFromUser = this.HideFromUser,
|
HideFromUser = this.HideFromUser,
|
||||||
};
|
};
|
||||||
}
|
|
||||||
}
|
}
|
@ -13,11 +13,11 @@ public sealed class ContentImage : IContent, IImageSource
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool InitialRemoteWait { get; set; } = false;
|
public bool InitialRemoteWait { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public bool IsStreaming { get; set; } = false;
|
public bool IsStreaming { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
@ -34,16 +34,13 @@ public sealed class ContentImage : IContent, IImageSource
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IContent DeepClone()
|
public IContent DeepClone() => new ContentImage
|
||||||
{
|
|
||||||
return new ContentImage
|
|
||||||
{
|
{
|
||||||
Source = this.Source,
|
Source = this.Source,
|
||||||
InitialRemoteWait = this.InitialRemoteWait,
|
InitialRemoteWait = this.InitialRemoteWait,
|
||||||
IsStreaming = this.IsStreaming,
|
IsStreaming = this.IsStreaming,
|
||||||
SourceType = this.SourceType,
|
SourceType = this.SourceType,
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -126,15 +126,12 @@ public sealed class ContentText : IContent
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IContent DeepClone()
|
public IContent DeepClone() => new ContentText
|
||||||
{
|
|
||||||
return new ContentText
|
|
||||||
{
|
{
|
||||||
Text = this.Text,
|
Text = this.Text,
|
||||||
InitialRemoteWait = this.InitialRemoteWait,
|
InitialRemoteWait = this.InitialRemoteWait,
|
||||||
IsStreaming = this.IsStreaming,
|
IsStreaming = this.IsStreaming,
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable
|
|||||||
private DataSourceSelection? dataSourceSelectionComponent;
|
private DataSourceSelection? dataSourceSelectionComponent;
|
||||||
private DataSourceOptions earlyDataSourceOptions = new();
|
private DataSourceOptions earlyDataSourceOptions = new();
|
||||||
private Profile currentProfile = Profile.NO_PROFILE;
|
private Profile currentProfile = Profile.NO_PROFILE;
|
||||||
private ChatTemplate currentChatTemplate = ChatTemplate.NO_CHATTEMPLATE;
|
private ChatTemplate currentChatTemplate = ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
private bool hasUnsavedChanges;
|
private bool hasUnsavedChanges;
|
||||||
private bool mustScrollToBottomAfterRender;
|
private bool mustScrollToBottomAfterRender;
|
||||||
private InnerScrolling scrollingArea = null!;
|
private InnerScrolling scrollingArea = null!;
|
||||||
@ -329,7 +329,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable
|
|||||||
if(this.ChatThread is null)
|
if(this.ChatThread is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
await this.StartNewChat(true, false);
|
await this.StartNewChat(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IReadOnlyList<DataSourceAgentSelected> GetAgentSelectedDataSources()
|
private IReadOnlyList<DataSourceAgentSelected> GetAgentSelectedDataSources()
|
||||||
@ -447,7 +447,12 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable
|
|||||||
// Update provider, profile and chat template:
|
// Update provider, profile and chat template:
|
||||||
this.ChatThread.SelectedProvider = this.Provider.Id;
|
this.ChatThread.SelectedProvider = this.Provider.Id;
|
||||||
this.ChatThread.SelectedProfile = this.currentProfile.Id;
|
this.ChatThread.SelectedProfile = this.currentProfile.Id;
|
||||||
this.ChatThread.SelectedChatTemplate = this.currentChatTemplate.Id;
|
|
||||||
|
//
|
||||||
|
// Remark: We do not update the chat template here
|
||||||
|
// because the chat template is only used when starting a new chat.
|
||||||
|
// Updating the chat template afterward is not supported.
|
||||||
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
var time = DateTimeOffset.Now;
|
var time = DateTimeOffset.Now;
|
||||||
@ -804,7 +809,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable
|
|||||||
{
|
{
|
||||||
this.currentChatTemplate = this.SettingsManager.ConfigurationData.ChatTemplates.FirstOrDefault(x => x.Id == chatChatTemplate);
|
this.currentChatTemplate = this.SettingsManager.ConfigurationData.ChatTemplates.FirstOrDefault(x => x.Id == chatChatTemplate);
|
||||||
if(this.currentChatTemplate == default)
|
if(this.currentChatTemplate == default)
|
||||||
this.currentChatTemplate = ChatTemplate.NO_CHATTEMPLATE;
|
this.currentChatTemplate = ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,19 @@
|
|||||||
@using AIStudio.Settings
|
@using AIStudio.Settings
|
||||||
@inherits MSGComponentBase
|
@inherits MSGComponentBase
|
||||||
|
|
||||||
<MudTooltip Placement="Placement.Top" Text="@T("Start a new chat with a chat template.")">
|
<MudTooltip Placement="Placement.Top" Text="@T("Start a new chat with a chat template")">
|
||||||
<MudMenu AnchorOrigin="Origin.TopLeft" TransformOrigin="@Origin.BottomLeft" Class="@this.MarginClass">
|
<MudMenu AnchorOrigin="Origin.TopLeft" TransformOrigin="@Origin.BottomLeft" Class="@this.MarginClass">
|
||||||
<ActivatorContent>
|
<ActivatorContent>
|
||||||
<MudButton IconSize="Size.Large" StartIcon="@Icons.Material.Filled.RateReview">
|
@if (this.CurrentChatTemplate != ChatTemplate.NO_CHAT_TEMPLATE)
|
||||||
@(this.CurrentChatTemplate != ChatTemplate.NO_CHATTEMPLATE ? this.CurrentChatTemplate.Name : "")
|
{
|
||||||
|
<MudButton IconSize="Size.Large" StartIcon="@Icons.Material.Filled.RateReview" IconColor="Color.Default">
|
||||||
|
@this.CurrentChatTemplate.Name
|
||||||
</MudButton>
|
</MudButton>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudIconButton Icon="@Icons.Material.Filled.RateReview" />
|
||||||
|
}
|
||||||
</ActivatorContent>
|
</ActivatorContent>
|
||||||
<ChildContent>
|
<ChildContent>
|
||||||
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates.GetAllChatTemplates())
|
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates.GetAllChatTemplates())
|
||||||
|
@ -7,7 +7,7 @@ namespace AIStudio.Components;
|
|||||||
public partial class ChatTemplateSelection : MSGComponentBase
|
public partial class ChatTemplateSelection : MSGComponentBase
|
||||||
{
|
{
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public ChatTemplate CurrentChatTemplate { get; set; } = ChatTemplate.NO_CHATTEMPLATE;
|
public ChatTemplate CurrentChatTemplate { get; set; } = ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback<ChatTemplate> CurrentChatTemplateChanged { get; set; }
|
public EventCallback<ChatTemplate> CurrentChatTemplateChanged { get; set; }
|
||||||
|
@ -6,7 +6,7 @@ namespace AIStudio.Components;
|
|||||||
|
|
||||||
public partial class ProfileSelection : MSGComponentBase
|
public partial class ProfileSelection : MSGComponentBase
|
||||||
{
|
{
|
||||||
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ConfigurationProviderSelection).Namespace, nameof(ConfigurationProviderSelection));
|
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ProfileSelection).Namespace, nameof(ProfileSelection));
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public Profile CurrentProfile { get; set; } = Profile.NO_PROFILE;
|
public Profile CurrentProfile { get; set; } = Profile.NO_PROFILE;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
</MudText>
|
</MudText>
|
||||||
|
|
||||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||||
@T("Customize your AI experience with our Chat Templates! Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to OpenAI's playground, you can define your own system prompts and leverage assistant prompts for providers that support them.")
|
@T("Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them.")
|
||||||
</MudJustifiedText>
|
</MudJustifiedText>
|
||||||
|
|
||||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||||
|
@ -37,8 +37,8 @@ public partial class SettingsPanelChatTemplates : SettingsPanelBase
|
|||||||
{ x => x.DataName, chatTemplate.Name },
|
{ x => x.DataName, chatTemplate.Name },
|
||||||
{ x => x.DataSystemPrompt, chatTemplate.SystemPrompt },
|
{ x => x.DataSystemPrompt, chatTemplate.SystemPrompt },
|
||||||
{ x => x.IsEditing, true },
|
{ x => x.IsEditing, true },
|
||||||
{x => x.ExampleConversation, chatTemplate.ExampleConversation},
|
{ x => x.ExampleConversation, chatTemplate.ExampleConversation },
|
||||||
{x => x.AllowProfileUsage, chatTemplate.AllowProfileUsage},
|
{ x => x.AllowProfileUsage, chatTemplate.AllowProfileUsage },
|
||||||
};
|
};
|
||||||
|
|
||||||
var dialogReference = await this.DialogService.ShowAsync<ChatTemplateDialog>(T("Edit Chat Template"), dialogParameters, DialogOptions.FULLSCREEN);
|
var dialogReference = await this.DialogService.ShowAsync<ChatTemplateDialog>(T("Edit Chat Template"), dialogParameters, DialogOptions.FULLSCREEN);
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
@using AIStudio.Chat
|
@using AIStudio.Chat
|
||||||
@using MudBlazor.Extensions
|
|
||||||
@inherits MSGComponentBase
|
@inherits MSGComponentBase
|
||||||
@inject ISnackbar Snackbar
|
|
||||||
|
|
||||||
<MudDialog>
|
<MudDialog>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
|
|
||||||
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
||||||
@T("Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements.")
|
@T("Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements.")
|
||||||
</MudJustifiedText>
|
</MudJustifiedText>
|
||||||
@ -32,33 +29,39 @@
|
|||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<MudText Typo="Typo.h6" Class="mb-3 mt-3">
|
||||||
|
@T("System Prompt")
|
||||||
|
</MudText>
|
||||||
|
|
||||||
<MudTextField
|
<MudTextField
|
||||||
T="string"
|
T="string"
|
||||||
@bind-Text="@this.DataSystemPrompt"
|
@bind-Text="@this.DataSystemPrompt"
|
||||||
Validation="@this.ValidateSystemPrompt"
|
|
||||||
AdornmentIcon="@Icons.Material.Filled.ListAlt"
|
AdornmentIcon="@Icons.Material.Filled.ListAlt"
|
||||||
Adornment="Adornment.Start"
|
Adornment="Adornment.Start"
|
||||||
Immediate="@true"
|
Immediate="@true"
|
||||||
Label="@T("What system prompt do you want to use?")"
|
Label="@T("What system prompt do you want to use?")"
|
||||||
Variant="Variant.Outlined"
|
Variant="Variant.Outlined"
|
||||||
Lines="6"
|
Lines="6"
|
||||||
AutoGrow="@true"
|
|
||||||
MaxLines="12"
|
MaxLines="12"
|
||||||
|
AutoGrow="@true"
|
||||||
Class="mb-3"
|
Class="mb-3"
|
||||||
MaxLength="444"
|
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
HelperText="@T("Tell the AI your system prompt.")"
|
HelperText="@T("Tell the AI your system prompt.")"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<MudTooltip Text="@T("Are you unsure which system prompt to use? You can simply start with the default system prompt that AI Studio uses for all chats.")">
|
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
||||||
<MudButton Class="mb-3" Color="Color.Primary" OnClick="@this.UseDefaultSystemPrompt" Size="Size.Small" StartIcon="@Icons.Material.Filled.ListAlt" Variant="Variant.Filled">@T("Use the default system prompt")</MudButton>
|
@T("Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.")
|
||||||
</MudTooltip>
|
</MudJustifiedText>
|
||||||
|
<MudButton Class="mb-3" Color="Color.Default" OnClick="@this.UseDefaultSystemPrompt" StartIcon="@Icons.Material.Filled.ListAlt" Variant="Variant.Filled">
|
||||||
|
@T("Use the default system prompt")
|
||||||
|
</MudButton>
|
||||||
|
|
||||||
<MudTooltip Text="@T("Using some chat templates in tandem with profiles might cause issues. Therefore, you can preliminarily block the usage of profiles here.")">
|
<MudJustifiedText Class="mt-6" Typo="Typo.body1">
|
||||||
<MudSwitch @bind-Value="@this.AllowProfileUsage" Class="mb-3" Color="Color.Primary" Label="@T("Allow the use of profiles together with this chat template?")" ThumbIcon="@Icons.Material.Filled.Person4" ThumbIconColor="Color.Default" />
|
@T("Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.")
|
||||||
</MudTooltip>
|
</MudJustifiedText>
|
||||||
|
<MudTextSwitch @bind-Value="@this.AllowProfileUsage" Color="Color.Primary" Label="@T("Allow the use of profiles together with this chat template?")" LabelOn="@T("Yes, allow profiles when using this template")" LabelOff="@T("No, prohibit profile use for this template")" />
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-3">
|
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
||||||
@T("Example Conversation")
|
@T("Example Conversation")
|
||||||
</MudText>
|
</MudText>
|
||||||
|
|
||||||
@ -66,38 +69,73 @@
|
|||||||
@T("Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs.")
|
@T("Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs.")
|
||||||
</MudJustifiedText>
|
</MudJustifiedText>
|
||||||
|
|
||||||
<MudTable CanCancelEdit="true" Class="mt-3 mb-6" CommitEditTooltip="@T("Commit Changes")" Elevation="10" FixedHeader="true" Items="@ExampleConversation" Outlined="true" RowEditCancel="@this.ResetItemToOriginalValues" RowEditPreview="@this.BackupItem">
|
<MudTable Items="@this.dataExampleConversation" FixedHeader="true" Hover="true" Class="mt-3 mb-3" CanCancelEdit="true" CancelEditTooltip="@T("Cancel")" CommitEditTooltip="@T("Commit Changes")" Outlined="true" RowEditCancel="@this.ResetItem" RowEditPreview="@this.BackupItem" EditTrigger="TableEditTrigger.RowClick" IsEditRowSwitchingBlocked="false" RowEditCommit="@this.CommitInlineEdit">
|
||||||
<ColGroup>
|
<ColGroup>
|
||||||
<col style="width: 16em;" />
|
<col style="width: 10em;" />
|
||||||
<col/>
|
<col/>
|
||||||
<col style="width: 16em;" />
|
<col style="width: 10em;" />
|
||||||
</ColGroup>
|
</ColGroup>
|
||||||
<HeaderContent>
|
<HeaderContent>
|
||||||
<MudTh>@T("Role")</MudTh>
|
<MudTh>@T("Role")</MudTh>
|
||||||
<MudTh>@T("Entry")</MudTh>
|
<MudTh>@T("Entry")</MudTh>
|
||||||
<MudTh Style="text-align:center">@T("Actions")</MudTh>
|
<MudTh>@T("Actions")</MudTh>
|
||||||
</HeaderContent>
|
</HeaderContent>
|
||||||
<RowTemplate>
|
<RowTemplate>
|
||||||
<MudTd DataLabel="@T("Role")">@context.Role.ToChatTemplateName()</MudTd>
|
<MudTd>
|
||||||
<MudTd DataLabel="@T("Message")">
|
@context.Role.ToChatTemplateName()
|
||||||
@(context.Content is ContentText textContent ? textContent.Text : context.Content?.ToString())
|
|
||||||
</MudTd>
|
</MudTd>
|
||||||
<MudTd style="text-align: center">
|
<MudTd>
|
||||||
<MudIconButton Color="Color.Primary" Icon="@Icons.Material.Filled.Add" OnClick="@(() => AddNewMessageBelow(context))" />
|
@switch(context.Content)
|
||||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => RemoveMessage(context))" />
|
{
|
||||||
|
case ContentText textContent:
|
||||||
|
<MudTextField AutoGrow="true" Value="@textContent.Text" Placeholder="@T("Enter a message")" ReadOnly="true" Variant="Variant.Text" Validation="@this.ValidateExampleTextMessage"/>
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ContentImage { SourceType: ContentImageSource.URL or ContentImageSource.LOCAL_PATH } imageContent:
|
||||||
|
<MudImage Src="@imageContent.Source" Alt="@T("Image content")" Fluid="true" />
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
@T("Unsupported content type")
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
</MudTd>
|
||||||
|
<MudTd>
|
||||||
|
@if (!this.isInlineEditOnGoing)
|
||||||
|
{
|
||||||
|
<MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap">
|
||||||
|
<MudTooltip Text="@T("Add a new message below")">
|
||||||
|
<MudIconButton Color="Color.Primary" Icon="@Icons.Material.Filled.Add" OnClick="@(() => this.AddMessageBelow(context))"/>
|
||||||
|
</MudTooltip>
|
||||||
|
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => this.RemoveMessage(context))"/>
|
||||||
|
</MudStack>
|
||||||
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
<RowEditingTemplate>
|
<RowEditingTemplate>
|
||||||
<MudTd DataLabel="Role">
|
<MudTd>
|
||||||
<MudSelect Label="Role" @bind-Value="context.Role" Required>
|
<MudSelect Label="@T("Role")" @bind-Value="@context.Role" Required="true">
|
||||||
@foreach (var role in availableRoles)
|
@foreach (var role in ChatRoles.ChatTemplateRoles())
|
||||||
{
|
{
|
||||||
<MudSelectItem Value="@role">@role.ToChatTemplateName()</MudSelectItem>
|
<MudSelectItem Value="@role">
|
||||||
|
@role.ToChatTemplateName()
|
||||||
|
</MudSelectItem>
|
||||||
}
|
}
|
||||||
</MudSelect>
|
</MudSelect>
|
||||||
</MudTd>
|
</MudTd>
|
||||||
<MudTd DataLabel="Message">
|
<MudTd>
|
||||||
<MudTextField AutoGrow="true" @bind-Value="context.Content.As<ContentText>()!.Text" Label="@T("Your message")" Required />
|
@switch(context.Content)
|
||||||
|
{
|
||||||
|
case ContentText textContent:
|
||||||
|
<MudTextField AutoGrow="true" @bind-Value="@textContent.Text" Label="@T("The message")" Required="true" Immediate="true" Placeholder="@T("Enter a message")"/>
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
<MudText Typo="Typo.body2">
|
||||||
|
@T("Only text content is supported in the editing mode yet.")
|
||||||
|
</MudText>
|
||||||
|
break;
|
||||||
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
</RowEditingTemplate>
|
</RowEditingTemplate>
|
||||||
<PagerContent>
|
<PagerContent>
|
||||||
@ -106,7 +144,12 @@
|
|||||||
</MudTable>
|
</MudTable>
|
||||||
</MudForm>
|
</MudForm>
|
||||||
|
|
||||||
<MudButton Class="mb-3" Color="Color.Primary" OnClick="@this.AddNewMessageToEnd" StartIcon="@Icons.Material.Filled.Add" Variant="Variant.Filled">@T("Add additional message")</MudButton>
|
@if (!this.isInlineEditOnGoing)
|
||||||
|
{
|
||||||
|
<MudButton Class="mb-6" Color="Color.Primary" OnClick="@this.AddMessageToEnd" StartIcon="@Icons.Material.Filled.Add" Variant="Variant.Filled">
|
||||||
|
@T("Add a message")
|
||||||
|
</MudButton>
|
||||||
|
}
|
||||||
|
|
||||||
<Issues IssuesData="@this.dataIssues"/>
|
<Issues IssuesData="@this.dataIssues"/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
@ -114,8 +157,11 @@
|
|||||||
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
||||||
@T("Cancel")
|
@T("Cancel")
|
||||||
</MudButton>
|
</MudButton>
|
||||||
|
|
||||||
|
@if (!this.isInlineEditOnGoing)
|
||||||
|
{
|
||||||
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
||||||
@if(this.IsEditing)
|
@if (this.IsEditing)
|
||||||
{
|
{
|
||||||
@T("Update")
|
@T("Update")
|
||||||
}
|
}
|
||||||
@ -124,5 +170,6 @@
|
|||||||
@T("Add")
|
@T("Add")
|
||||||
}
|
}
|
||||||
</MudButton>
|
</MudButton>
|
||||||
|
}
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
</MudDialog>
|
</MudDialog>
|
@ -42,13 +42,13 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
public bool IsEditing { get; init; }
|
public bool IsEditing { get; init; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public List<ContentBlock> ExampleConversation { get; set; } = [];
|
public IReadOnlyCollection<ContentBlock> ExampleConversation { get; init; } = [];
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public bool AllowProfileUsage { get; set; } = true;
|
public bool AllowProfileUsage { get; set; } = true;
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
private ILogger<ProviderDialog> Logger { get; init; } = null!;
|
private ILogger<ChatTemplateDialog> Logger { get; init; } = null!;
|
||||||
|
|
||||||
private static readonly Dictionary<string, object?> SPELLCHECK_ATTRIBUTES = new();
|
private static readonly Dictionary<string, object?> SPELLCHECK_ATTRIBUTES = new();
|
||||||
|
|
||||||
@ -58,88 +58,16 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
private List<string> UsedNames { get; set; } = [];
|
private List<string> UsedNames { get; set; } = [];
|
||||||
|
|
||||||
private bool dataIsValid;
|
private bool dataIsValid;
|
||||||
|
private List<ContentBlock> dataExampleConversation = [];
|
||||||
private string[] dataIssues = [];
|
private string[] dataIssues = [];
|
||||||
private string dataEditingPreviousName = string.Empty;
|
private string dataEditingPreviousName = string.Empty;
|
||||||
|
private bool isInlineEditOnGoing;
|
||||||
|
|
||||||
private ContentBlock messageEntryBeforeEdit;
|
private ContentBlock? messageEntryBeforeEdit;
|
||||||
private readonly IEnumerable<ChatRole> availableRoles = ChatRoles.ChatTemplateRoles().ToArray();
|
|
||||||
|
|
||||||
// We get the form reference from Blazor code to validate it manually:
|
// We get the form reference from Blazor code to validate it manually:
|
||||||
private MudForm form = null!;
|
private MudForm form = null!;
|
||||||
|
|
||||||
private ChatTemplate CreateChatTemplateSettings() => new()
|
|
||||||
{
|
|
||||||
Num = this.DataNum,
|
|
||||||
Id = this.DataId,
|
|
||||||
|
|
||||||
Name = this.DataName,
|
|
||||||
SystemPrompt = this.DataSystemPrompt,
|
|
||||||
ExampleConversation = this.ExampleConversation,
|
|
||||||
AllowProfileUsage = this.AllowProfileUsage,
|
|
||||||
};
|
|
||||||
|
|
||||||
private void RemoveMessage(ContentBlock item)
|
|
||||||
{
|
|
||||||
this.ExampleConversation.Remove(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddNewMessageToEnd()
|
|
||||||
{
|
|
||||||
this.ExampleConversation ??= new List<ContentBlock>();
|
|
||||||
|
|
||||||
var newEntry = new ContentBlock
|
|
||||||
{
|
|
||||||
Role = ChatRole.USER, // Default to User
|
|
||||||
Content = new ContentText(),
|
|
||||||
ContentType = ContentType.TEXT,
|
|
||||||
HideFromUser = true,
|
|
||||||
Time = DateTimeOffset.Now,
|
|
||||||
};
|
|
||||||
|
|
||||||
this.ExampleConversation.Add(newEntry);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddNewMessageBelow(ContentBlock currentItem)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Create new entry with a valid role
|
|
||||||
var newEntry = new ContentBlock
|
|
||||||
{
|
|
||||||
Role = ChatRole.USER, // Default to User
|
|
||||||
Content = new ContentText(),
|
|
||||||
ContentType = ContentType.TEXT,
|
|
||||||
HideFromUser = true,
|
|
||||||
Time = DateTimeOffset.Now,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Rest of the method remains the same
|
|
||||||
var index = this.ExampleConversation.IndexOf(currentItem);
|
|
||||||
|
|
||||||
if (index >= 0)
|
|
||||||
{
|
|
||||||
this.ExampleConversation.Insert(index + 1, newEntry);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.ExampleConversation.Add(newEntry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BackupItem(object element)
|
|
||||||
{
|
|
||||||
this.messageEntryBeforeEdit = new ContentBlock
|
|
||||||
{
|
|
||||||
Role = ((ContentBlock)element).Role,
|
|
||||||
Content = ((ContentBlock)element).Content,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResetItemToOriginalValues(object element)
|
|
||||||
{
|
|
||||||
((ContentBlock)element).Role = this.messageEntryBeforeEdit.Role;
|
|
||||||
((ContentBlock)element).Content = this.messageEntryBeforeEdit.Content;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Overrides of ComponentBase
|
#region Overrides of ComponentBase
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
@ -154,6 +82,7 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
if(this.IsEditing)
|
if(this.IsEditing)
|
||||||
{
|
{
|
||||||
this.dataEditingPreviousName = this.DataName.ToLowerInvariant();
|
this.dataEditingPreviousName = this.DataName.ToLowerInvariant();
|
||||||
|
this.dataExampleConversation = this.ExampleConversation.Select(n => n.DeepClone()).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
await base.OnInitializedAsync();
|
await base.OnInitializedAsync();
|
||||||
@ -171,6 +100,90 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private ChatTemplate CreateChatTemplateSettings() => new()
|
||||||
|
{
|
||||||
|
Num = this.DataNum,
|
||||||
|
Id = this.DataId,
|
||||||
|
|
||||||
|
Name = this.DataName,
|
||||||
|
SystemPrompt = this.DataSystemPrompt,
|
||||||
|
ExampleConversation = this.dataExampleConversation,
|
||||||
|
AllowProfileUsage = this.AllowProfileUsage,
|
||||||
|
};
|
||||||
|
|
||||||
|
private void RemoveMessage(ContentBlock item)
|
||||||
|
{
|
||||||
|
this.dataExampleConversation.Remove(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddMessageToEnd()
|
||||||
|
{
|
||||||
|
var newEntry = new ContentBlock
|
||||||
|
{
|
||||||
|
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
||||||
|
Content = new ContentText(),
|
||||||
|
ContentType = ContentType.TEXT,
|
||||||
|
HideFromUser = true,
|
||||||
|
Time = DateTimeOffset.Now,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.dataExampleConversation.Add(newEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddMessageBelow(ContentBlock currentItem)
|
||||||
|
{
|
||||||
|
var insertedEntry = new ContentBlock
|
||||||
|
{
|
||||||
|
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
||||||
|
Content = new ContentText(),
|
||||||
|
ContentType = ContentType.TEXT,
|
||||||
|
HideFromUser = true,
|
||||||
|
Time = DateTimeOffset.Now,
|
||||||
|
};
|
||||||
|
|
||||||
|
// The rest of the method remains the same:
|
||||||
|
var index = this.dataExampleConversation.IndexOf(currentItem);
|
||||||
|
if (index >= 0)
|
||||||
|
this.dataExampleConversation.Insert(index + 1, insertedEntry);
|
||||||
|
else
|
||||||
|
this.dataExampleConversation.Add(insertedEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BackupItem(object? element)
|
||||||
|
{
|
||||||
|
this.isInlineEditOnGoing = true;
|
||||||
|
this.messageEntryBeforeEdit = element switch
|
||||||
|
{
|
||||||
|
ContentBlock block => block.DeepClone(),
|
||||||
|
_ => null,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetItem(object? element)
|
||||||
|
{
|
||||||
|
this.isInlineEditOnGoing = false;
|
||||||
|
switch (element)
|
||||||
|
{
|
||||||
|
case ContentBlock block:
|
||||||
|
if (this.messageEntryBeforeEdit is null)
|
||||||
|
return; // No backup to restore from
|
||||||
|
|
||||||
|
block.Content = this.messageEntryBeforeEdit.Content?.DeepClone();
|
||||||
|
block.Role = this.messageEntryBeforeEdit.Role;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CommitInlineEdit(object? element)
|
||||||
|
{
|
||||||
|
this.isInlineEditOnGoing = false;
|
||||||
|
this.StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task Store()
|
private async Task Store()
|
||||||
{
|
{
|
||||||
await this.form.Validate();
|
await this.form.Validate();
|
||||||
@ -179,6 +192,10 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
if (!this.dataIsValid)
|
if (!this.dataIsValid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// When an inline edit is ongoing, we cannot store the data:
|
||||||
|
if (this.isInlineEditOnGoing)
|
||||||
|
return;
|
||||||
|
|
||||||
// Use the data model to store the chat template.
|
// Use the data model to store the chat template.
|
||||||
// We just return this data to the parent component:
|
// We just return this data to the parent component:
|
||||||
var addedChatTemplateSettings = this.CreateChatTemplateSettings();
|
var addedChatTemplateSettings = this.CreateChatTemplateSettings();
|
||||||
@ -191,10 +208,10 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
this.MudDialog.Close(DialogResult.Ok(addedChatTemplateSettings));
|
this.MudDialog.Close(DialogResult.Ok(addedChatTemplateSettings));
|
||||||
}
|
}
|
||||||
|
|
||||||
private string? ValidateSystemPrompt(string text)
|
private string? ValidateExampleTextMessage(string message)
|
||||||
{
|
{
|
||||||
if(text.Length > 444)
|
if (string.IsNullOrWhiteSpace(message))
|
||||||
return T("The text must not exceed 444 characters.");
|
return T("Please enter a message for the example conversation.");
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
<ConfigurationOption OptionDescription="@T("Preselect chat options?")" LabelOn="@T("Chat options are preselected")" LabelOff="@T("No chat options are preselected")" State="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Chat.PreselectOptions = updatedState)" OptionHelp="@T("When enabled, you can preselect chat options. This is might be useful when you prefer a specific provider.")"/>
|
<ConfigurationOption OptionDescription="@T("Preselect chat options?")" LabelOn="@T("Chat options are preselected")" LabelOff="@T("No chat options are preselected")" State="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Chat.PreselectOptions = updatedState)" OptionHelp="@T("When enabled, you can preselect chat options. This is might be useful when you prefer a specific provider.")"/>
|
||||||
<ConfigurationProviderSelection Component="Components.CHAT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider = selectedValue)"/>
|
<ConfigurationProviderSelection Component="Components.CHAT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider = selectedValue)"/>
|
||||||
<ConfigurationSelect OptionDescription="@T("Preselect one of your profiles?")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile = selectedValue)" OptionHelp="@T("Would you like to set one of your profiles as the default for chats?")"/>
|
<ConfigurationSelect OptionDescription="@T("Preselect one of your profiles?")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile = selectedValue)" OptionHelp="@T("Would you like to set one of your profiles as the default for chats?")"/>
|
||||||
|
<ConfigurationSelect OptionDescription="@T("Preselect one of your chat templates?")" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedChatTemplate)" Data="@ConfigurationSelectDataFactory.GetChatTemplatesData(this.SettingsManager.ConfigurationData.ChatTemplates)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedChatTemplate = selectedValue)" OptionHelp="@T("Would you like to set one of your chat templates as the default for chats?")"/>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
|
|
||||||
@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager))
|
@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager))
|
||||||
|
@ -654,6 +654,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T61388
|
|||||||
-- Please provide a custom language.
|
-- Please provide a custom language.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Bitte geben Sie eine eigene Sprache an."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Bitte geben Sie eine eigene Sprache an."
|
||||||
|
|
||||||
|
-- System
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System"
|
||||||
|
|
||||||
|
-- You
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3049115964"] = "Du"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3424652889"] = "Unbekannt"
|
||||||
|
|
||||||
|
-- Assistant
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3662687431"] = "Assistent"
|
||||||
|
|
||||||
|
-- User
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3768991250"] = "Benutzer"
|
||||||
|
|
||||||
|
-- AI
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "KI"
|
||||||
|
|
||||||
-- Edit Message
|
-- Edit Message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Nachricht bearbeiten"
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Nachricht bearbeiten"
|
||||||
|
|
||||||
@ -726,6 +744,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1849313532"] = "Geben Sie
|
|||||||
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Ihr Prompt (verwendete Instanz: '{0}', Anbieter: '{1}')"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Ihr Prompt (verwendete Instanz: '{0}', Anbieter: '{1}')"
|
||||||
|
|
||||||
|
-- Profile usage is disabled according to your chat template settings.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2670286472"] = "Die Profilnutzung ist gemäß den Einstellungen Ihrer Chat-Vorlage deaktiviert."
|
||||||
|
|
||||||
-- Delete this chat & start a new one.
|
-- Delete this chat & start a new one.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Diesen Chat löschen & einen neuen beginnen."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Diesen Chat löschen & einen neuen beginnen."
|
||||||
|
|
||||||
@ -753,6 +774,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T636393754"] = "Verschiebe
|
|||||||
-- Show your workspaces
|
-- Show your workspaces
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Ihre Arbeitsbereiche anzeigen"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Ihre Arbeitsbereiche anzeigen"
|
||||||
|
|
||||||
|
-- Start a new chat with a chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATTEMPLATESELECTION::T1333844707"] = "Neuen Chat mit einer Chat-Vorlage starten"
|
||||||
|
|
||||||
-- Region
|
-- Region
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
||||||
|
|
||||||
@ -1065,6 +1089,45 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T817101267"]
|
|||||||
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Möchten Sie einen Anbieter als Standard für die gesamte App festlegen? Wenn Sie einen anderen Anbieter für einen Assistenten konfigurieren, hat dieser immer Vorrang."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Möchten Sie einen Anbieter als Standard für die gesamte App festlegen? Wenn Sie einen anderen Anbieter für einen Assistenten konfigurieren, hat dieser immer Vorrang."
|
||||||
|
|
||||||
|
-- Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1172171653"] = "Passen Sie Ihre KI-Erfahrung mit Chat-Vorlagen an. Egal, ob Sie mit Prompt-Engineering experimentieren, einfach einen eigenen System-Prompt im normalen Chat verwenden oder einen spezialisierten Assistenten erstellen möchten – mit unseren Vorlagen haben Sie die volle Kontrolle. Ähnlich wie in den Playgrounds gängiger KI-Anbieter können Sie eigene System-Prompts festlegen und bei unterstützenden Anbietern auch Assistenten-Prompts nutzen."
|
||||||
|
|
||||||
|
-- Delete
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1469573738"] = "Löschen"
|
||||||
|
|
||||||
|
-- Add Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1548314416"] = "Chat-Vorlage hinzufügen"
|
||||||
|
|
||||||
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1909110760"] = "Hinweis: Diese fortgeschrittene Funktion richtet sich an Nutzer, die mit den Grundlagen des Prompt Engineerings vertraut sind. Außerdem müssen Sie selbst sicherstellen, dass Ihr gewählter Anbieter die Verwendung von Assistenten-Prompts unterstützt."
|
||||||
|
|
||||||
|
-- No chat templates configured yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2319860307"] = "Noch keine Chat-Vorlagen konfiguriert."
|
||||||
|
|
||||||
|
-- Configure Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2453567568"] = "Chat-Vorlagen konfigurieren"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T275026390"] = "Name der Chat-Vorlage"
|
||||||
|
|
||||||
|
-- Are you sure you want to delete the chat template '{0}'?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3102555824"] = "Sind Sie sicher, dass Sie die Chat-Vorlage „{0}“ löschen möchten?"
|
||||||
|
|
||||||
|
-- Edit
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3267849393"] = "Bearbeiten"
|
||||||
|
|
||||||
|
-- Edit Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3596030597"] = "Chat-Vorlage bearbeiten"
|
||||||
|
|
||||||
|
-- Your Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3824122683"] = "Ihre Chat-Vorlagen"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3865031940"] = "Aktionen"
|
||||||
|
|
||||||
|
-- Delete Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T4025180906"] = "Chat-Vorlage löschen"
|
||||||
|
|
||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Löschen"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Löschen"
|
||||||
|
|
||||||
@ -1437,6 +1500,105 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T474393241"] = "Bitte wählen
|
|||||||
-- Delete Workspace
|
-- Delete Workspace
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Arbeitsbereich löschen"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Arbeitsbereich löschen"
|
||||||
|
|
||||||
|
-- Only text content is supported in the editing mode yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1352914344"] = "Im Bearbeitungsmodus wird bisher nur Textinhalt unterstützt."
|
||||||
|
|
||||||
|
-- Please enter a message for the example conversation.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1362948628"] = "Bitte gib eine Nachricht für die Beispiel-Konversation ein."
|
||||||
|
|
||||||
|
-- The chat template name must be unique; the chosen name is already in use.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1396308587"] = "Der Name der Chat-Vorlage muss eindeutig sein; der gewählte Name wird bereits verwendet."
|
||||||
|
|
||||||
|
-- Please enter a name for the chat template.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1548747185"] = "Bitte geben Sie einen Namen für die Chat-Vorlage ein."
|
||||||
|
|
||||||
|
-- Update
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1847791252"] = "Aktualisieren"
|
||||||
|
|
||||||
|
-- The chat template name must not exceed 40 characters.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T204496403"] = "Der Name der Chat-Vorlage darf maximal 40 Zeichen lang sein."
|
||||||
|
|
||||||
|
-- Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2292424657"] = "Fügen Sie Nachrichten einer Beispiel-Konversation hinzu (Nutzereingabe, gefolgt von einer Antwort des Assistenten), um das gewünschte Interaktionsmuster zu demonstrieren. Diese Beispiele helfen der KI, Ihre Erwartungen zu verstehen, indem Sie das korrekte Format, den Stil und den Inhalt von Antworten zeigen, bevor tatsächliche Nutzereingaben erfolgen."
|
||||||
|
|
||||||
|
-- Role
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2418769465"] = "Rolle"
|
||||||
|
|
||||||
|
-- Tell the AI your system prompt.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2552381261"] = "Teilen Sie der KI einen System-Prompt mit."
|
||||||
|
|
||||||
|
-- No, prohibit profile use for this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2579080722"] = "Nein, die Profilnutzung für diese Vorlage verbieten"
|
||||||
|
|
||||||
|
-- Entry
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2629823795"] = "Eintrag"
|
||||||
|
|
||||||
|
-- Add
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2646845972"] = "Hinzufügen"
|
||||||
|
|
||||||
|
-- The message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2719480499"] = "Die Nachricht"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T275026390"] = "Name der Chat-Vorlage"
|
||||||
|
|
||||||
|
-- Commit Changes
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2996302517"] = "Änderungen übernehmen"
|
||||||
|
|
||||||
|
-- The name of the chat template is mandatory. Each chat template must have a unique name.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3016903701"] = "Der Name der Chat-Vorlage ist erforderlich. Jede Chat-Vorlage muss einen eindeutigen Namen haben."
|
||||||
|
|
||||||
|
-- Image content
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3094908719"] = "Bildinhalt"
|
||||||
|
|
||||||
|
-- Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3127437308"] = "Sind Sie unsicher, welchen System-Prompt Sie verwenden sollen? Sie können mit dem Standard-System-Prompt beginnen, den AI Studio für alle Chats verwendet."
|
||||||
|
|
||||||
|
-- Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Die gleichzeitige Verwendung einiger Chat-Vorlagen mit Profilen kann zu Problemen führen. Deshalb könnten Sie hier die Nutzung von Profilen untersagen."
|
||||||
|
|
||||||
|
-- Add a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Nachricht hinzufügen"
|
||||||
|
|
||||||
|
-- Unsupported content type
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Nicht unterstützter Inhaltstyp"
|
||||||
|
|
||||||
|
-- What system prompt do you want to use?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3652587353"] = "Welchen System-Prompt möchten Sie verwenden?"
|
||||||
|
|
||||||
|
-- Yes, allow profiles when using this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3675108201"] = "Ja, Profile bei Verwendung dieser Vorlage zulassen"
|
||||||
|
|
||||||
|
-- Add a new message below
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3757779731"] = "Neue Nachricht unten hinzufügen"
|
||||||
|
|
||||||
|
-- Example Conversation
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T380891852"] = "Beispiel-Konversation"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3865031940"] = "Aktionen"
|
||||||
|
|
||||||
|
-- Messages per page
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3893704289"] = "Nachrichten pro Seite"
|
||||||
|
|
||||||
|
-- Use the default system prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4051106111"] = "Verwenden Sie den Standard-System-Prompt"
|
||||||
|
|
||||||
|
-- Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4199560726"] = "Erstellen Sie Ihre eigene Chat-Vorlage, um das Verhalten des LLMs für bestimmte Aufgaben oder Bereiche anzupassen. Definieren Sie einen individuellen System-Prompt und geben Sie eine Beispiel-Konversation vor, um eine KI-Erfahrung zu gestalten, die genau auf Ihre Anforderungen zugeschnitten ist."
|
||||||
|
|
||||||
|
-- Enter a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T446374405"] = "Nachricht eingeben"
|
||||||
|
|
||||||
|
-- System Prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T628396066"] = "System-Prompt"
|
||||||
|
|
||||||
|
-- Allow the use of profiles together with this chat template?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T823785464"] = "Erlauben Sie die Verwendung von Profilen zusammen mit dieser Chat-Vorlage?"
|
||||||
|
|
||||||
|
-- Cancel
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T900713019"] = "Abbrechen"
|
||||||
|
|
||||||
-- No
|
-- No
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "Nein"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "Nein"
|
||||||
|
|
||||||
@ -2331,6 +2493,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T6790
|
|||||||
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "Wenn diese Option aktiviert ist, kannst du Voreinstellungen treffen. Das kann nützlich sein, wenn du eine bestimmte Sprache oder ein bestimmtes LLM-Modell bevorzugst."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "Wenn diese Option aktiviert ist, kannst du Voreinstellungen treffen. Das kann nützlich sein, wenn du eine bestimmte Sprache oder ein bestimmtes LLM-Modell bevorzugst."
|
||||||
|
|
||||||
|
-- Preselect one of your chat templates?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T1402022556"] = "Eine deiner Chat-Vorlagen vorab auswählen?"
|
||||||
|
|
||||||
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Legen Sie fest, wie der LLM-Anbieter für geladene Chats ausgewählt wird und wann Assistenten-Ergebnisse an den Chat gesendet werden."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Legen Sie fest, wie der LLM-Anbieter für geladene Chats ausgewählt wird und wann Assistenten-Ergebnisse an den Chat gesendet werden."
|
||||||
|
|
||||||
@ -2361,6 +2526,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2913693228"]
|
|||||||
-- Do you want to use any shortcut to send your input?
|
-- Do you want to use any shortcut to send your input?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Möchten Sie eine Tastenkombination verwenden, um Ihre Eingabe zu senden?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Möchten Sie eine Tastenkombination verwenden, um Ihre Eingabe zu senden?"
|
||||||
|
|
||||||
|
-- Would you like to set one of your chat templates as the default for chats?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3234927721"] = "Möchten Sie eine Ihrer Chat-Vorlagen als Standard für alle Chats festlegen?"
|
||||||
|
|
||||||
-- No chat options are preselected
|
-- No chat options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "Keine Chat-Optionen sind vorausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "Keine Chat-Optionen sind vorausgewählt"
|
||||||
|
|
||||||
@ -3639,6 +3807,9 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Un
|
|||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "Kein Modell ausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "Kein Modell ausgewählt"
|
||||||
|
|
||||||
|
-- Use no chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CHATTEMPLATE::T4258819635"] = "Keine Chat-Vorlage verwenden"
|
||||||
|
|
||||||
-- Navigation never expands, but there are tooltips
|
-- Navigation never expands, but there are tooltips
|
||||||
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Die Navigationsleiste wird nie ausgeklappt, aber es gibt Tooltips"
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Die Navigationsleiste wird nie ausgeklappt, aber es gibt Tooltips"
|
||||||
|
|
||||||
|
@ -654,6 +654,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T61388
|
|||||||
-- Please provide a custom language.
|
-- Please provide a custom language.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Please provide a custom language."
|
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::TRANSLATION::ASSISTANTTRANSLATION::T656744944"] = "Please provide a custom language."
|
||||||
|
|
||||||
|
-- System
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System"
|
||||||
|
|
||||||
|
-- You
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3049115964"] = "You"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3424652889"] = "Unknown"
|
||||||
|
|
||||||
|
-- Assistant
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3662687431"] = "Assistant"
|
||||||
|
|
||||||
|
-- User
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T3768991250"] = "User"
|
||||||
|
|
||||||
|
-- AI
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "AI"
|
||||||
|
|
||||||
-- Edit Message
|
-- Edit Message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message"
|
UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message"
|
||||||
|
|
||||||
@ -726,6 +744,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1849313532"] = "Type your
|
|||||||
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
-- Your Prompt (use selected instance '{0}', provider '{1}')
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Your Prompt (use selected instance '{0}', provider '{1}')"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T1967611328"] = "Your Prompt (use selected instance '{0}', provider '{1}')"
|
||||||
|
|
||||||
|
-- Profile usage is disabled according to your chat template settings.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2670286472"] = "Profile usage is disabled according to your chat template settings."
|
||||||
|
|
||||||
-- Delete this chat & start a new one.
|
-- Delete this chat & start a new one.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Delete this chat & start a new one."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T2991985411"] = "Delete this chat & start a new one."
|
||||||
|
|
||||||
@ -753,6 +774,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T636393754"] = "Move the c
|
|||||||
-- Show your workspaces
|
-- Show your workspaces
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Show your workspaces"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATCOMPONENT::T733672375"] = "Show your workspaces"
|
||||||
|
|
||||||
|
-- Start a new chat with a chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CHATTEMPLATESELECTION::T1333844707"] = "Start a new chat with a chat template"
|
||||||
|
|
||||||
-- Region
|
-- Region
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::CONFIDENCEINFO::T1227782301"] = "Region"
|
||||||
|
|
||||||
@ -1065,6 +1089,45 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T817101267"]
|
|||||||
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
-- Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence."
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELAPP::T844514734"] = "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence."
|
||||||
|
|
||||||
|
-- Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1172171653"] = "Customize your AI experience with chat templates. Whether you want to experiment with prompt engineering, simply use a custom system prompt in the standard chat interface, or create a specialized assistant, our templates give you full control. Similar to common AI companies' playgrounds, you can define your own system prompts and leverage assistant prompts for providers that support them."
|
||||||
|
|
||||||
|
-- Delete
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1469573738"] = "Delete"
|
||||||
|
|
||||||
|
-- Add Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1548314416"] = "Add Chat Template"
|
||||||
|
|
||||||
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
||||||
|
|
||||||
|
-- No chat templates configured yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2319860307"] = "No chat templates configured yet."
|
||||||
|
|
||||||
|
-- Configure Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T2453567568"] = "Configure Chat Templates"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T275026390"] = "Chat Template Name"
|
||||||
|
|
||||||
|
-- Are you sure you want to delete the chat template '{0}'?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3102555824"] = "Are you sure you want to delete the chat template '{0}'?"
|
||||||
|
|
||||||
|
-- Edit
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3267849393"] = "Edit"
|
||||||
|
|
||||||
|
-- Edit Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3596030597"] = "Edit Chat Template"
|
||||||
|
|
||||||
|
-- Your Chat Templates
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3824122683"] = "Your Chat Templates"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T3865031940"] = "Actions"
|
||||||
|
|
||||||
|
-- Delete Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELCHATTEMPLATES::T4025180906"] = "Delete Chat Template"
|
||||||
|
|
||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Delete"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::SETTINGS::SETTINGSPANELEMBEDDINGS::T1469573738"] = "Delete"
|
||||||
|
|
||||||
@ -1437,6 +1500,105 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T474393241"] = "Please select
|
|||||||
-- Delete Workspace
|
-- Delete Workspace
|
||||||
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Workspace"
|
UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Workspace"
|
||||||
|
|
||||||
|
-- Only text content is supported in the editing mode yet.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1352914344"] = "Only text content is supported in the editing mode yet."
|
||||||
|
|
||||||
|
-- Please enter a message for the example conversation.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1362948628"] = "Please enter a message for the example conversation."
|
||||||
|
|
||||||
|
-- The chat template name must be unique; the chosen name is already in use.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1396308587"] = "The chat template name must be unique; the chosen name is already in use."
|
||||||
|
|
||||||
|
-- Please enter a name for the chat template.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1548747185"] = "Please enter a name for the chat template."
|
||||||
|
|
||||||
|
-- Update
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T1847791252"] = "Update"
|
||||||
|
|
||||||
|
-- The chat template name must not exceed 40 characters.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T204496403"] = "The chat template name must not exceed 40 characters."
|
||||||
|
|
||||||
|
-- Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2292424657"] = "Add messages of an example conversation (user prompt followed by assistant prompt) to demonstrate the desired interaction pattern. These examples help the AI understand your expectations by showing it the correct format, style, and content of responses before it receives actual user inputs."
|
||||||
|
|
||||||
|
-- Role
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2418769465"] = "Role"
|
||||||
|
|
||||||
|
-- Tell the AI your system prompt.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2552381261"] = "Tell the AI your system prompt."
|
||||||
|
|
||||||
|
-- No, prohibit profile use for this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2579080722"] = "No, prohibit profile use for this template"
|
||||||
|
|
||||||
|
-- Entry
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2629823795"] = "Entry"
|
||||||
|
|
||||||
|
-- Add
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2646845972"] = "Add"
|
||||||
|
|
||||||
|
-- The message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2719480499"] = "The message"
|
||||||
|
|
||||||
|
-- Chat Template Name
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T275026390"] = "Chat Template Name"
|
||||||
|
|
||||||
|
-- Commit Changes
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T2996302517"] = "Commit Changes"
|
||||||
|
|
||||||
|
-- The name of the chat template is mandatory. Each chat template must have a unique name.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3016903701"] = "The name of the chat template is mandatory. Each chat template must have a unique name."
|
||||||
|
|
||||||
|
-- Image content
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3094908719"] = "Image content"
|
||||||
|
|
||||||
|
-- Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3127437308"] = "Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats."
|
||||||
|
|
||||||
|
-- Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here."
|
||||||
|
|
||||||
|
-- Add a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
||||||
|
|
||||||
|
-- Unsupported content type
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
||||||
|
|
||||||
|
-- What system prompt do you want to use?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3652587353"] = "What system prompt do you want to use?"
|
||||||
|
|
||||||
|
-- Yes, allow profiles when using this template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3675108201"] = "Yes, allow profiles when using this template"
|
||||||
|
|
||||||
|
-- Add a new message below
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3757779731"] = "Add a new message below"
|
||||||
|
|
||||||
|
-- Example Conversation
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T380891852"] = "Example Conversation"
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3865031940"] = "Actions"
|
||||||
|
|
||||||
|
-- Messages per page
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3893704289"] = "Messages per page"
|
||||||
|
|
||||||
|
-- Use the default system prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4051106111"] = "Use the default system prompt"
|
||||||
|
|
||||||
|
-- Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T4199560726"] = "Create your custom chat template to tailor the LLM's behavior for specific tasks or domains. Define a custom system prompt and provide an example conversation to design an AI experience perfectly suited to your requirements."
|
||||||
|
|
||||||
|
-- Enter a message
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T446374405"] = "Enter a message"
|
||||||
|
|
||||||
|
-- System Prompt
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T628396066"] = "System Prompt"
|
||||||
|
|
||||||
|
-- Allow the use of profiles together with this chat template?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T823785464"] = "Allow the use of profiles together with this chat template?"
|
||||||
|
|
||||||
|
-- Cancel
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T900713019"] = "Cancel"
|
||||||
|
|
||||||
-- No
|
-- No
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "No"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CONFIRMDIALOG::T1642511898"] = "No"
|
||||||
|
|
||||||
@ -2331,6 +2493,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T6790
|
|||||||
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
-- When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGASSISTANTBIAS::T711745239"] = "When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."
|
||||||
|
|
||||||
|
-- Preselect one of your chat templates?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T1402022556"] = "Preselect one of your chat templates?"
|
||||||
|
|
||||||
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
-- Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T172255919"] = "Control how the LLM provider for loaded chats is selected and when assistant results are sent to chat."
|
||||||
|
|
||||||
@ -2361,6 +2526,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2913693228"]
|
|||||||
-- Do you want to use any shortcut to send your input?
|
-- Do you want to use any shortcut to send your input?
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Do you want to use any shortcut to send your input?"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T2936560092"] = "Do you want to use any shortcut to send your input?"
|
||||||
|
|
||||||
|
-- Would you like to set one of your chat templates as the default for chats?
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3234927721"] = "Would you like to set one of your chat templates as the default for chats?"
|
||||||
|
|
||||||
-- No chat options are preselected
|
-- No chat options are preselected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "No chat options are preselected"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHAT::T3383186996"] = "No chat options are preselected"
|
||||||
|
|
||||||
@ -3639,6 +3807,9 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Un
|
|||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
||||||
|
|
||||||
|
-- Use no chat template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CHATTEMPLATE::T4258819635"] = "Use no chat template"
|
||||||
|
|
||||||
-- Navigation never expands, but there are tooltips
|
-- Navigation never expands, but there are tooltips
|
||||||
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Navigation never expands, but there are tooltips"
|
UI_TEXT_CONTENT["AISTUDIO::SETTINGS::CONFIGURATIONSELECTDATAFACTORY::T1095779033"] = "Navigation never expands, but there are tooltips"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ public readonly record struct ChatTemplate(uint Num, string Id, string Name, str
|
|||||||
{
|
{
|
||||||
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatTemplate).Namespace, nameof(ChatTemplate));
|
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ChatTemplate).Namespace, nameof(ChatTemplate));
|
||||||
|
|
||||||
public static readonly ChatTemplate NO_CHATTEMPLATE = new()
|
public static readonly ChatTemplate NO_CHAT_TEMPLATE = new()
|
||||||
{
|
{
|
||||||
Name = TB("Use no chat template"),
|
Name = TB("Use no chat template"),
|
||||||
SystemPrompt = string.Empty,
|
SystemPrompt = string.Empty,
|
||||||
@ -34,5 +34,4 @@ public readonly record struct ChatTemplate(uint Num, string Id, string Name, str
|
|||||||
|
|
||||||
return this.SystemPrompt;
|
return this.SystemPrompt;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -273,7 +273,7 @@ public sealed class SettingsManager
|
|||||||
return preselection;
|
return preselection;
|
||||||
|
|
||||||
preselection = this.ConfigurationData.ChatTemplates.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedChatTemplate);
|
preselection = this.ConfigurationData.ChatTemplates.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedChatTemplate);
|
||||||
return preselection != default ? preselection : ChatTemplate.NO_CHATTEMPLATE;
|
return preselection != default ? preselection : ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfidenceLevel GetConfiguredConfidenceLevel(LLMProviders llmProvider)
|
public ConfidenceLevel GetConfiguredConfidenceLevel(LLMProviders llmProvider)
|
||||||
|
@ -6,7 +6,7 @@ public static class ChatTemplateExtensions
|
|||||||
{
|
{
|
||||||
public static IEnumerable<ChatTemplate> GetAllChatTemplates(this IEnumerable<ChatTemplate> chatTemplates)
|
public static IEnumerable<ChatTemplate> GetAllChatTemplates(this IEnumerable<ChatTemplate> chatTemplates)
|
||||||
{
|
{
|
||||||
yield return ChatTemplate.NO_CHATTEMPLATE;
|
yield return ChatTemplate.NO_CHAT_TEMPLATE;
|
||||||
foreach (var chatTemplate in chatTemplates)
|
foreach (var chatTemplate in chatTemplates)
|
||||||
yield return chatTemplate;
|
yield return chatTemplate;
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
# v0.9.45, build 220 (2025-05-xx xx:xx UTC)
|
# v0.9.45, build 220 (2025-05-xx xx:xx UTC)
|
||||||
|
- Added chat templates. They are similar to common AI companies' playgrounds, where you can define your own system prompts and leverage assistant prompts for providers that support them. We thank Peer `peerschuett` for the work on this feature.
|
||||||
- Improved chat options: you can access them directly from the chat interface.
|
- Improved chat options: you can access them directly from the chat interface.
|
Loading…
Reference in New Issue
Block a user