diff --git a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor new file mode 100644 index 00000000..e76bfe82 --- /dev/null +++ b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor @@ -0,0 +1,30 @@ +@page "/assistant/translator" +@using AIStudio.Settings +@using AIStudio.Tools +@inherits AssistantBaseCore + + + + + + @foreach (var targetLanguage in Enum.GetValues()) + { + @targetLanguage.Name() + } + + @if (this.selectedTargetLanguage is CommonLanguages.OTHER) + { + + } + + + + @foreach (var provider in this.SettingsManager.ConfigurationData.Providers) + { + + } + + + + Translate + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs new file mode 100644 index 00000000..edfa8e9e --- /dev/null +++ b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs @@ -0,0 +1,70 @@ +using AIStudio.Provider; +using AIStudio.Tools; + +namespace AIStudio.Components.Pages.Translator; + +public partial class AssistantTranslator : AssistantBaseCore +{ + protected override string Title => "Translator"; + + protected override string Description => + """ + Translate text from one language to another. + """; + + protected override string SystemPrompt => + """ + You get text in a source language as input. The user wants to get the text translated into a target language. + Provide the translation in the requested language. Do not add any information. Correct any spelling or grammar mistakes. + Do not ask for additional information. Do not mirror the user's language. Do not mirror the task. When the target + language requires, e.g., shorter sentences, you should split the text into shorter sentences. + """; + + private string inputText = string.Empty; + private CommonLanguages selectedTargetLanguage; + private string customTargetLanguage = string.Empty; + + private string? ValidatingText(string text) + { + if(string.IsNullOrWhiteSpace(text)) + return "Please provide a text as input. You might copy the desired text from a document or a website."; + + return null; + } + + private string? ValidatingProvider(AIStudio.Settings.Provider provider) + { + if(provider.UsedProvider == Providers.NONE) + return "Please select a provider."; + + return null; + } + + private string? ValidateCustomLanguage(string language) + { + if(this.selectedTargetLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language)) + return "Please provide a custom language."; + + return null; + } + + private async Task TranslateText() + { + await this.form!.Validate(); + if (!this.inputIsValid) + return; + + this.CreateChatThread(); + var time = this.AddUserRequest( + $""" + {this.selectedTargetLanguage.Prompt(this.customTargetLanguage)} + + The given text is: + + --- + {this.inputText} + """); + + await this.AddAIResponseAsync(time); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Pages/Translator/CommonLanguageExtension.cs b/app/MindWork AI Studio/Components/Pages/Translator/CommonLanguageExtension.cs new file mode 100644 index 00000000..37545151 --- /dev/null +++ b/app/MindWork AI Studio/Components/Pages/Translator/CommonLanguageExtension.cs @@ -0,0 +1,13 @@ +using AIStudio.Tools; + +namespace AIStudio.Components.Pages.Translator; + +public static class CommonLanguageExtension +{ + public static string Prompt(this CommonLanguages language, string customLanguage) => language switch + { + CommonLanguages.OTHER => $"Translate the text in {customLanguage}.", + + _ => $"Translate the given text in {language.Name()} ({language}).", + }; +} \ No newline at end of file