From edacfb196bde6d8b927c5f06478f558fcf772dd1 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Thu, 29 Jan 2026 13:07:52 +0100 Subject: [PATCH 01/10] Create a new Assistant --- .../Assistants/PowerPoint/PowerPoint.razor | 8 + .../Assistants/PowerPoint/PowerPoint.razor.cs | 169 ++++++++++++++++++ .../Settings/SettingsDialogPowerPoint.razor | 28 +++ .../SettingsDialogPowerPoint.razor.cs | 7 + 4 files changed, 212 insertions(+) create mode 100644 app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor create mode 100644 app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor new file mode 100644 index 00000000..49e811a9 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -0,0 +1,8 @@ +@attribute [Route(Routes.ASSISTANT_SYNONYMS)] +@inherits AssistantBaseCore + + + + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs new file mode 100644 index 00000000..bbbe2293 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -0,0 +1,169 @@ +using Microsoft.AspNetCore.Components; +using AIStudio.Chat; +using AIStudio.Dialogs.Settings; + +namespace AIStudio.Assistants.PowerPoint; + +public partial class PowerPoint : AssistantBaseCore +{ + public override Tools.Components Component => Tools.Components.SYNONYMS_ASSISTANT; + + protected override string Title => T("Synonyms"); + + protected override string Description => T("Find synonyms for words or phrases."); + + protected override string SystemPrompt => + $""" + You have a PhD in linguistics. Therefore, you are an expert in the {this.SystemPromptLanguage()} language. + You receive a word or phrase as input. You might also receive some context. You then provide + a list of synonyms as a Markdown list. + + First, derive possible meanings from the word, phrase, and context, when available. Then, provide + possible synonyms for each meaning. + + Example for the word "learn" and the language English (US): + + Derive possible meanings (*this list is not part of the output*): + - Meaning "to learn" + - Meaning "to retain" + + Next, provide possible synonyms for each meaning, which is your output: + + # Meaning "to learn" + - absorb + - study + - acquire + - advance + - practice + + # Meaning "to retain" + - remember + - note + - realize + + You do not ask follow-up questions and never repeat the task instructions. When you do not know + any synonyms for the given word or phrase, you state this. Your output is always in + the {this.SystemPromptLanguage()} language. + """; + + protected override bool AllowProfiles => false; + + protected override IReadOnlyList FooterButtons => []; + + protected override string SubmitText => T("Find synonyms"); + + protected override Func SubmitAction => this.FindSynonyms; + + protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with + { + SystemPrompt = SystemPrompts.DEFAULT, + }; + + protected override void ResetForm() + { + this.inputText = string.Empty; + this.inputContext = string.Empty; + if (!this.MightPreselectValues()) + { + this.selectedLanguage = CommonLanguages.AS_IS; + this.customTargetLanguage = string.Empty; + } + } + + protected override bool MightPreselectValues() + { + if (this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions) + { + this.selectedLanguage = this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage; + this.customTargetLanguage = this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage; + return true; + } + + return false; + } + + private string inputText = string.Empty; + private string inputContext = string.Empty; + private CommonLanguages selectedLanguage; + private string customTargetLanguage = string.Empty; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + var deferredContent = MessageBus.INSTANCE.CheckDeferredMessages(Event.SEND_TO_SYNONYMS_ASSISTANT).FirstOrDefault(); + if (deferredContent is not null) + this.inputContext = deferredContent; + + await base.OnInitializedAsync(); + } + + #endregion + + private string? ValidatingText(string text) + { + if(string.IsNullOrWhiteSpace(text)) + return T("Please provide a word or phrase as input."); + + return null; + } + + private string? ValidateCustomLanguage(string language) + { + if(this.selectedLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language)) + return T("Please provide a custom language."); + + return null; + } + + private string SystemPromptLanguage() + { + var lang = this.selectedLanguage switch + { + CommonLanguages.AS_IS => "source", + CommonLanguages.OTHER => this.customTargetLanguage, + + _ => $"{this.selectedLanguage.Name()}", + }; + + if (string.IsNullOrWhiteSpace(lang)) + return "source"; + + return lang; + } + + private string UserPromptContext() + { + if(string.IsNullOrWhiteSpace(this.inputContext)) + return string.Empty; + + return $""" + The given context is: + + ``` + {this.inputContext} + ``` + + """; + } + + private async Task FindSynonyms() + { + await this.form!.Validate(); + if (!this.inputIsValid) + return; + + this.CreateChatThread(); + var time = this.AddUserRequest( + $""" + {this.UserPromptContext()} + The given word or phrase is: + + ``` + {this.inputText} + ``` + """); + + await this.AddAIResponseAsync(time); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor new file mode 100644 index 00000000..46b5b8f2 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor @@ -0,0 +1,28 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + + + + + + @T("Assistant: Synonyms Options") + + + + + + + @if (this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage is CommonLanguages.OTHER) + { + + } + + + + + + + @T("Close") + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs new file mode 100644 index 00000000..da9bc0c7 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs @@ -0,0 +1,7 @@ +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogPowerPoint : SettingsDialogBase +{ +} \ No newline at end of file From 51154ec6b38268e472ca42718c87cd875038691a Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Thu, 29 Jan 2026 13:50:20 +0100 Subject: [PATCH 02/10] Integrate the assistant into the code --- .../Assistants/PowerPoint/PowerPoint.razor | 4 ++-- .../Assistants/PowerPoint/PowerPoint.razor.cs | 8 ++++---- .../Dialogs/Settings/SettingsDialogPowerPoint.razor | 4 ++-- app/MindWork AI Studio/Pages/Assistants.razor | 4 +++- app/MindWork AI Studio/Routes.razor.cs | 3 ++- app/MindWork AI Studio/Tools/Components.cs | 1 + app/MindWork AI Studio/Tools/ComponentsExtensions.cs | 1 + 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 49e811a9..5f915ade 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -1,8 +1,8 @@ -@attribute [Route(Routes.ASSISTANT_SYNONYMS)] +@attribute [Route(Routes.ASSISTANT_POWERPOINT)] @inherits AssistantBaseCore - \ No newline at end of file + diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index bbbe2293..5a0c586c 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -6,11 +6,11 @@ namespace AIStudio.Assistants.PowerPoint; public partial class PowerPoint : AssistantBaseCore { - public override Tools.Components Component => Tools.Components.SYNONYMS_ASSISTANT; + public override Tools.Components Component => Tools.Components.POWER_POINT_ASSISTANT; - protected override string Title => T("Synonyms"); + protected override string Title => T("Power Point"); - protected override string Description => T("Find synonyms for words or phrases."); + protected override string Description => T("Create and refine PowerPoint slide text from a topic or outline."); protected override string SystemPrompt => $""" @@ -50,7 +50,7 @@ public partial class PowerPoint : AssistantBaseCore protected override IReadOnlyList FooterButtons => []; - protected override string SubmitText => T("Find synonyms"); + protected override string SubmitText => T("Create Power Point"); protected override Func SubmitAction => this.FindSynonyms; diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor index 46b5b8f2..553883b1 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor @@ -5,12 +5,12 @@ - @T("Assistant: Synonyms Options") + @T("Assistant: Power Point Options") - + @if (this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage is CommonLanguages.OTHER) { diff --git a/app/MindWork AI Studio/Pages/Assistants.razor b/app/MindWork AI Studio/Pages/Assistants.razor index 250aa06c..6003e1b3 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor +++ b/app/MindWork AI Studio/Pages/Assistants.razor @@ -37,7 +37,8 @@ (Components.AGENDA_ASSISTANT, PreviewFeatures.NONE), (Components.JOB_POSTING_ASSISTANT, PreviewFeatures.NONE), (Components.LEGAL_CHECK_ASSISTANT, PreviewFeatures.NONE), - (Components.ICON_FINDER_ASSISTANT, PreviewFeatures.NONE) + (Components.ICON_FINDER_ASSISTANT, PreviewFeatures.NONE), + (Components.POWER_POINT_ASSISTANT, PreviewFeatures.NONE) )) { @@ -51,6 +52,7 @@ + } diff --git a/app/MindWork AI Studio/Routes.razor.cs b/app/MindWork AI Studio/Routes.razor.cs index 836cab0e..a4a633d6 100644 --- a/app/MindWork AI Studio/Routes.razor.cs +++ b/app/MindWork AI Studio/Routes.razor.cs @@ -22,6 +22,7 @@ public sealed partial class Routes public const string ASSISTANT_EMAIL = "/assistant/email"; public const string ASSISTANT_LEGAL_CHECK = "/assistant/legal-check"; public const string ASSISTANT_SYNONYMS = "/assistant/synonyms"; + public const string ASSISTANT_POWERPOINT = "/assistant/powerpoint"; public const string ASSISTANT_MY_TASKS = "/assistant/my-tasks"; public const string ASSISTANT_JOB_POSTING = "/assistant/job-posting"; public const string ASSISTANT_BIAS = "/assistant/bias-of-the-day"; @@ -29,4 +30,4 @@ public sealed partial class Routes public const string ASSISTANT_AI_STUDIO_I18N = "/assistant/ai-studio/i18n"; public const string ASSISTANT_DOCUMENT_ANALYSIS = "/assistant/document-analysis"; // ReSharper restore InconsistentNaming -} \ No newline at end of file +} diff --git a/app/MindWork AI Studio/Tools/Components.cs b/app/MindWork AI Studio/Tools/Components.cs index 1004188c..f8c6f6d1 100644 --- a/app/MindWork AI Studio/Tools/Components.cs +++ b/app/MindWork AI Studio/Tools/Components.cs @@ -19,6 +19,7 @@ public enum Components BIAS_DAY_ASSISTANT, ERI_ASSISTANT, DOCUMENT_ANALYSIS_ASSISTANT, + POWER_POINT_ASSISTANT, // ReSharper disable InconsistentNaming I18N_ASSISTANT, diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs index 54eb2cfa..dd488ffa 100644 --- a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs +++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs @@ -43,6 +43,7 @@ public static class ComponentsExtensions Components.ERI_ASSISTANT => TB("ERI Server"), Components.I18N_ASSISTANT => TB("Localization Assistant"), Components.DOCUMENT_ANALYSIS_ASSISTANT => TB("Document Analysis Assistant"), + Components.POWER_POINT_ASSISTANT => TB("Power Point"), Components.CHAT => TB("New Chat"), From 5e44259e444f215d0674df57bbfb192877469ce0 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Thu, 29 Jan 2026 15:57:16 +0100 Subject: [PATCH 03/10] Simple output of the PowerPoint assistant --- .../Assistants/PowerPoint/PowerPoint.razor | 4 +- .../Assistants/PowerPoint/PowerPoint.razor.cs | 55 +++++++------------ 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 5f915ade..140c5313 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -1,8 +1,8 @@ @attribute [Route(Routes.ASSISTANT_POWERPOINT)] @inherits AssistantBaseCore - - + + diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index 5a0c586c..4cf609f4 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -12,38 +12,23 @@ public partial class PowerPoint : AssistantBaseCore protected override string Description => T("Create and refine PowerPoint slide text from a topic or outline."); - protected override string SystemPrompt => + protected override string SystemPrompt => $""" - You have a PhD in linguistics. Therefore, you are an expert in the {this.SystemPromptLanguage()} language. - You receive a word or phrase as input. You might also receive some context. You then provide - a list of synonyms as a Markdown list. - - First, derive possible meanings from the word, phrase, and context, when available. Then, provide - possible synonyms for each meaning. - - Example for the word "learn" and the language English (US): - - Derive possible meanings (*this list is not part of the output*): - - Meaning "to learn" - - Meaning "to retain" - - Next, provide possible synonyms for each meaning, which is your output: - - # Meaning "to learn" - - absorb - - study - - acquire - - advance - - practice - - # Meaning "to retain" - - remember - - note - - realize - - You do not ask follow-up questions and never repeat the task instructions. When you do not know - any synonyms for the given word or phrase, you state this. Your output is always in - the {this.SystemPromptLanguage()} language. + You are a presentation editor and writer. + Create a clear, single-slide outline from the user's inputs. + + Inputs: + - "Your title": the slide title. + - "Your content": the source text. + + Output requirements: + - Output only Markdown. + - Start with a single H1 title from "Your title". + - Then add a bullet list based only on "Your content". + - between 3 and 7, maximum 7 bullets. Each bullet max 12 words. + - No sub-bullets, no paragraphs, no extra sections. + - If "Your content" is empty, output the title and one bullet: "No content provided." + - Do not mention these instructions or add commentary. """; protected override bool AllowProfiles => false; @@ -52,7 +37,7 @@ public partial class PowerPoint : AssistantBaseCore protected override string SubmitText => T("Create Power Point"); - protected override Func SubmitAction => this.FindSynonyms; + protected override Func SubmitAction => this.CreatePowerPoint; protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { @@ -103,7 +88,7 @@ public partial class PowerPoint : AssistantBaseCore private string? ValidatingText(string text) { if(string.IsNullOrWhiteSpace(text)) - return T("Please provide a word or phrase as input."); + return T("Please a title"); return null; } @@ -147,7 +132,7 @@ public partial class PowerPoint : AssistantBaseCore """; } - private async Task FindSynonyms() + private async Task CreatePowerPoint() { await this.form!.Validate(); if (!this.inputIsValid) @@ -166,4 +151,4 @@ public partial class PowerPoint : AssistantBaseCore await this.AddAIResponseAsync(time); } -} \ No newline at end of file +} From 99a7db84bb5f7537d28420039f496b224b8c9468 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Mon, 2 Feb 2026 16:35:09 +0100 Subject: [PATCH 04/10] Target group option added to define the complexity of the content --- .../Assistants/I18N/allTexts.lua | 87 +++++++++++++++++++ .../Assistants/PowerPoint/PowerPoint.razor | 1 + .../Assistants/PowerPoint/PowerPoint.razor.cs | 18 +++- 3 files changed, 104 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 2196497c..879f33df 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1264,6 +1264,57 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T534887559"] = -- Please provide a custom language. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T656744944"] = "Please provide a custom language." +-- Please provide a target group. +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T1252056165"] = "Please provide a target group." + +-- Your title +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T1790167032"] = "Your title" + +-- Power Point +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2194178916"] = "Power Point" + +-- Create and refine PowerPoint slide text from a topic or outline. +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2255686621"] = "Create and refine PowerPoint slide text from a topic or outline." + +-- Language +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2591284123"] = "Language" + +-- Target group +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2709966651"] = "Target group" + +-- Create Power Point +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3145212510"] = "Create Power Point" + +-- Please a title +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3359269886"] = "Please a title" + +-- Custom target language +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3848935911"] = "Custom target language" + +-- Your content +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T526734495"] = "Your content" + +-- Please provide a custom language. +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T656744944"] = "Please provide a custom language." + +-- Children +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T188567026"] = "Children" + +-- Students +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T2905889225"] = "Students" + +-- Scientists +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T332785734"] = "Scientists" + +-- No target group +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T3644477204"] = "No target group" + +-- Office workers +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T3873911022"] = "Office workers" + +-- Executive committee +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T537362216"] = "Executive committee" + -- Please provide a text as input. You might copy the desired text from a document or a website. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website." @@ -4297,6 +4348,33 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGMYTASKS::T42672465"] -- 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::SETTINGSDIALOGMYTASKS::T711745239"] = "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 synonym options. This is might be useful when you prefer a specific language or LLM model. +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T183953912"] = "When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model." + +-- No Power Point options are preselected +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2203742337"] = "No Power Point options are preselected" + +-- Preselect Power Point options? +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2253853076"] = "Preselect Power Point options?" + +-- Which language should be preselected? +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2345162613"] = "Which language should be preselected?" + +-- Preselect another language +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2382415529"] = "Preselect another language" + +-- Preselect the language +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2571465005"] = "Preselect the language" + +-- Power Point options are preselected +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T3094929560"] = "Power Point options are preselected" + +-- Close +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T3448155331"] = "Close" + +-- Assistant: Power Point Options +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T426362386"] = "Assistant: Power Point Options" + -- Edit Profile UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1143111468"] = "Edit Profile" @@ -4825,6 +4903,12 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1934717573"] = "Check grammar and -- Translate text into another language. UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T209791153"] = "Translate text into another language." +-- Power Point +UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2194178916"] = "Power Point" + +-- Create and refine PowerPoint slide text from a topic or outline. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2255686621"] = "Create and refine PowerPoint slide text from a topic or outline." + -- Generate an e-mail for a given context. UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2383649630"] = "Generate an e-mail for a given context." @@ -5722,6 +5806,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T166453786"] = "Grammar -- Legal Check Assistant UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T1886447798"] = "Legal Check Assistant" +-- Power Point +UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T2194178916"] = "Power Point" + -- Job Posting Assistant UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T2212811874"] = "Job Posting Assistant" diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 140c5313..3ce4bf46 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -5,4 +5,5 @@ + diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index 4cf609f4..f75d12f0 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -1,5 +1,4 @@ -using Microsoft.AspNetCore.Components; -using AIStudio.Chat; +using AIStudio.Chat; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.PowerPoint; @@ -20,6 +19,7 @@ public partial class PowerPoint : AssistantBaseCore Inputs: - "Your title": the slide title. - "Your content": the source text. + {this.selectedTargetGroup.Prompt()} Output requirements: - Output only Markdown. @@ -48,6 +48,9 @@ public partial class PowerPoint : AssistantBaseCore { this.inputText = string.Empty; this.inputContext = string.Empty; + this.expertInField = string.Empty; + this.selectedTargetGroup = TargetGroup.NO_CHANGE; + this.customTargetGroup = string.Empty; if (!this.MightPreselectValues()) { this.selectedLanguage = CommonLanguages.AS_IS; @@ -71,6 +74,9 @@ public partial class PowerPoint : AssistantBaseCore private string inputContext = string.Empty; private CommonLanguages selectedLanguage; private string customTargetLanguage = string.Empty; + private string expertInField = string.Empty; + private TargetGroup selectedTargetGroup; + private string customTargetGroup = string.Empty; #region Overrides of ComponentBase @@ -101,6 +107,14 @@ public partial class PowerPoint : AssistantBaseCore return null; } + private string? ValidateTargetGroup(string group) + { + if(this.selectedTargetGroup == TargetGroup.NO_CHANGE && string.IsNullOrWhiteSpace(group)) + return T("Please provide a target group."); + + return null; + } + private string SystemPromptLanguage() { var lang = this.selectedLanguage switch From 96bcc33071a49edef3196633b6b4874e6abb1c98 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Tue, 3 Feb 2026 15:27:53 +0100 Subject: [PATCH 05/10] Add Button and Option "Use file content as input" --- .../Assistants/PowerPoint/PowerPoint.razor | 6 ++-- .../Assistants/PowerPoint/PowerPoint.razor.cs | 29 +++---------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 3ce4bf46..3c15afcb 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -2,8 +2,10 @@ @inherits AssistantBaseCore - - + + + + diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index f75d12f0..c2f6e3c6 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -15,9 +15,11 @@ public partial class PowerPoint : AssistantBaseCore $""" You are a presentation editor and writer. Create a clear, single-slide outline from the user's inputs. + {this.selectedTargetLanguage.PromptTranslation(this.customTargetLanguage)} Inputs: - - "Your title": the slide title. + - "Your title": the slide title. + {this.inputText} - "Your content": the source text. {this.selectedTargetGroup.Prompt()} @@ -77,6 +79,7 @@ public partial class PowerPoint : AssistantBaseCore private string expertInField = string.Empty; private TargetGroup selectedTargetGroup; private string customTargetGroup = string.Empty; + private CommonLanguages selectedTargetLanguage; #region Overrides of ComponentBase @@ -106,30 +109,6 @@ public partial class PowerPoint : AssistantBaseCore return null; } - - private string? ValidateTargetGroup(string group) - { - if(this.selectedTargetGroup == TargetGroup.NO_CHANGE && string.IsNullOrWhiteSpace(group)) - return T("Please provide a target group."); - - return null; - } - - private string SystemPromptLanguage() - { - var lang = this.selectedLanguage switch - { - CommonLanguages.AS_IS => "source", - CommonLanguages.OTHER => this.customTargetLanguage, - - _ => $"{this.selectedLanguage.Name()}", - }; - - if (string.IsNullOrWhiteSpace(lang)) - return "source"; - - return lang; - } private string UserPromptContext() { From 3b0939819b91412c32873e5cd111243a90938265 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Wed, 4 Feb 2026 15:52:29 +0100 Subject: [PATCH 06/10] Update PowerPoint assistant: improve Markdown formatting instructions and refine UI text labels --- app/MindWork AI Studio/Assistants/I18N/allTexts.lua | 7 ++----- .../Assistants/PowerPoint/PowerPoint.razor.cs | 8 ++++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 879f33df..e6db2523 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1264,9 +1264,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T534887559"] = -- Please provide a custom language. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T656744944"] = "Please provide a custom language." --- Please provide a target group. -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T1252056165"] = "Please provide a target group." - -- Your title UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T1790167032"] = "Your title" @@ -1276,8 +1273,8 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2194178916"] = " -- Create and refine PowerPoint slide text from a topic or outline. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2255686621"] = "Create and refine PowerPoint slide text from a topic or outline." --- Language -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2591284123"] = "Language" +-- Target language +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T237828418"] = "Target language" -- Target group UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2709966651"] = "Target group" diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index c2f6e3c6..07330c00 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -22,13 +22,17 @@ public partial class PowerPoint : AssistantBaseCore {this.inputText} - "Your content": the source text. {this.selectedTargetGroup.Prompt()} + + - You are a Markdown formatter. + - Your task is to identify headings in the input text that are marked with either # (for h1–h6) or **bold text** (used as pseudo-headings). + - Convert all such headings into proper Markdown subheadings using ## for subheadings (level 2), preserving the original text. + - Do not change any other content. + - between 3 and 7, maximum 7 bullets per heading. Each bullet max 12 words. Output requirements: - Output only Markdown. - Start with a single H1 title from "Your title". - Then add a bullet list based only on "Your content". - - between 3 and 7, maximum 7 bullets. Each bullet max 12 words. - - No sub-bullets, no paragraphs, no extra sections. - If "Your content" is empty, output the title and one bullet: "No content provided." - Do not mention these instructions or add commentary. """; From e99fa14a4c9d724f29eade85a14682fb6dbe4538 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Fri, 6 Feb 2026 12:11:25 +0100 Subject: [PATCH 07/10] Add option "Number of sheets" and "Time specification" --- .../Assistants/PowerPoint/PowerPoint.razor | 16 +++++++ .../Assistants/PowerPoint/PowerPoint.razor.cs | 43 +++++++++++++------ 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 3c15afcb..470254f0 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -6,6 +6,22 @@ + + + + + + + + + + diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index 07330c00..6b117a03 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -12,27 +12,33 @@ public partial class PowerPoint : AssistantBaseCore protected override string Description => T("Create and refine PowerPoint slide text from a topic or outline."); protected override string SystemPrompt => - $""" - You are a presentation editor and writer. + $$""" + You are a professional presentation editor and writer. Create a clear, single-slide outline from the user's inputs. - {this.selectedTargetLanguage.PromptTranslation(this.customTargetLanguage)} + {{this.selectedTargetLanguage.PromptTranslation(this.customTargetLanguage)}} Inputs: - - "Your title": the slide title. - {this.inputText} + - "Your title": the main title. + {{this.inputText}} - "Your content": the source text. - {this.selectedTargetGroup.Prompt()} + {{this.selectedTargetGroup.Prompt()}} - - You are a Markdown formatter. - - Your task is to identify headings in the input text that are marked with either # (for h1–h6) or **bold text** (used as pseudo-headings). - - Convert all such headings into proper Markdown subheadings using ## for subheadings (level 2), preserving the original text. - - Do not change any other content. - - between 3 and 7, maximum 7 bullets per heading. Each bullet max 12 words. + Rule for creating the individual subheadings: + - If {{this.numberOfSheets}} is NOT 0 + - Generate exactly {{this.numberOfSheets}} precise subheadings, each heading represents one slide in a presentation. + - If {{this.timeSpecification}} is NOT 0 + - Generate exactly {{this.calculatedNumberOfSlides}} precise subheadings, each heading represents one slide in a presentation. + - If either parameter is 0, ignore that rules. + + - Each subheadings must have: + - A clear, concise, and thematically meaningful heading. + - 3 to 7 bullet points (max 7) summarizing the slide’s content. + - Each bullet point must be max 12 words. Output requirements: - Output only Markdown. - Start with a single H1 title from "Your title". - - Then add a bullet list based only on "Your content". + - Then add headings with own bullet lists based only on "Your content". - If "Your content" is empty, output the title and one bullet: "No content provided." - Do not mention these instructions or add commentary. """; @@ -84,7 +90,10 @@ public partial class PowerPoint : AssistantBaseCore private TargetGroup selectedTargetGroup; private string customTargetGroup = string.Empty; private CommonLanguages selectedTargetLanguage; - + private double numberOfSheets; + private decimal timeSpecification; + private int calculatedNumberOfSlides = 0; + #region Overrides of ComponentBase protected override async Task OnInitializedAsync() @@ -114,6 +123,11 @@ public partial class PowerPoint : AssistantBaseCore return null; } + private int CalculateNumberOfSlides() + { + return this.calculatedNumberOfSlides = (int)Math.Round(this.timeSpecification / (decimal)1.5); + } + private string UserPromptContext() { if(string.IsNullOrWhiteSpace(this.inputContext)) @@ -135,11 +149,12 @@ public partial class PowerPoint : AssistantBaseCore if (!this.inputIsValid) return; + this.calculatedNumberOfSlides = this.timeSpecification > 0 ? this.CalculateNumberOfSlides() : 0; + this.CreateChatThread(); var time = this.AddUserRequest( $""" {this.UserPromptContext()} - The given word or phrase is: ``` {this.inputText} From 766fbf16b66abceece0394bf6c2bbaf7b305e400 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Mon, 9 Feb 2026 14:40:09 +0100 Subject: [PATCH 08/10] Update SystemPrompt rules --- .../Assistants/PowerPoint/PowerPoint.razor | 2 +- .../Assistants/PowerPoint/PowerPoint.razor.cs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor index 470254f0..cc380fcc 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor @@ -18,7 +18,7 @@ + Min="0.0" /> diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs index 6b117a03..a48c6514 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs @@ -32,8 +32,9 @@ public partial class PowerPoint : AssistantBaseCore - Each subheadings must have: - A clear, concise, and thematically meaningful heading. - - 3 to 7 bullet points (max 7) summarizing the slide’s content. + - 1 to 7 bullet points (maximum 7) summarizing the slide’s content — use as many as needed, but never more than 7. - Each bullet point must be max 12 words. + - Place *** on its own line immediately before each heading. Output requirements: - Output only Markdown. @@ -91,7 +92,7 @@ public partial class PowerPoint : AssistantBaseCore private string customTargetGroup = string.Empty; private CommonLanguages selectedTargetLanguage; private double numberOfSheets; - private decimal timeSpecification; + private double timeSpecification; private int calculatedNumberOfSlides = 0; #region Overrides of ComponentBase @@ -125,7 +126,7 @@ public partial class PowerPoint : AssistantBaseCore private int CalculateNumberOfSlides() { - return this.calculatedNumberOfSlides = (int)Math.Round(this.timeSpecification / (decimal)1.5); + return this.calculatedNumberOfSlides = (int)Math.Round(this.timeSpecification / 1.5); } private string UserPromptContext() From 109239cd32c288397df8aff2a4aa2f18aba32698 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Wed, 11 Feb 2026 14:18:15 +0100 Subject: [PATCH 09/10] Modify SystemPrompt and rename Slide Assistant --- .../Assistants/I18N/allTexts.lua | 168 +++++++++--------- .../SlideAssistant.razor} | 8 +- .../SlideAssistant.razor.cs} | 74 ++++---- ...razor => SettingsDialogSlideBuilder.razor} | 4 +- ...cs => SettingsDialogSlideBuilder.razor.cs} | 2 +- app/MindWork AI Studio/Pages/Assistants.razor | 4 +- .../Tools/CommonLanguageExtensions.cs | 8 + app/MindWork AI Studio/Tools/Components.cs | 2 +- .../Tools/ComponentsExtensions.cs | 2 +- 9 files changed, 137 insertions(+), 135 deletions(-) rename app/MindWork AI Studio/Assistants/{PowerPoint/PowerPoint.razor => SlideBuilder/SlideAssistant.razor} (80%) rename app/MindWork AI Studio/Assistants/{PowerPoint/PowerPoint.razor.cs => SlideBuilder/SlideAssistant.razor.cs} (75%) rename app/MindWork AI Studio/Dialogs/Settings/{SettingsDialogPowerPoint.razor => SettingsDialogSlideBuilder.razor} (82%) rename app/MindWork AI Studio/Dialogs/Settings/{SettingsDialogPowerPoint.razor.cs => SettingsDialogSlideBuilder.razor.cs} (54%) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index e6db2523..ad373db5 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1264,54 +1264,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T534887559"] = -- Please provide a custom language. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T656744944"] = "Please provide a custom language." --- Your title -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T1790167032"] = "Your title" - --- Power Point -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2194178916"] = "Power Point" - --- Create and refine PowerPoint slide text from a topic or outline. -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2255686621"] = "Create and refine PowerPoint slide text from a topic or outline." - --- Target language -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T237828418"] = "Target language" - --- Target group -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T2709966651"] = "Target group" - --- Create Power Point -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3145212510"] = "Create Power Point" - --- Please a title -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3359269886"] = "Please a title" - --- Custom target language -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T3848935911"] = "Custom target language" - --- Your content -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T526734495"] = "Your content" - --- Please provide a custom language. -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::POWERPOINT::T656744944"] = "Please provide a custom language." - --- Children -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T188567026"] = "Children" - --- Students -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T2905889225"] = "Students" - --- Scientists -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T332785734"] = "Scientists" - --- No target group -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T3644477204"] = "No target group" - --- Office workers -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T3873911022"] = "Office workers" - --- Executive committee -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::POWERPOINT::TARGETGROUPEXTENSIONS::T537362216"] = "Executive committee" - -- Please provide a text as input. You might copy the desired text from a document or a website. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::ASSISTANTREWRITEIMPROVE::T137304886"] = "Please provide a text as input. You might copy the desired text from a document or a website." @@ -1384,6 +1336,54 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::WRITINGSTYLESEXTENSIONS:: -- Marketing (advertisements, sales texts) UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::REWRITEIMPROVE::WRITINGSTYLESEXTENSIONS::T945714286"] = "Marketing (advertisements, sales texts)" +-- Your title +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T1790167032"] = "Your title" + +-- Slide Assistant +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T1883918574"] = "Slide Assistant" + +-- Target language +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T237828418"] = "Target language" + +-- Target group +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T2709966651"] = "Target group" + +-- Create Slides +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T3079776593"] = "Create Slides" + +-- Develop slide content based on a given topic and content. +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T311912219"] = "Develop slide content based on a given topic and content." + +-- Please a title +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T3359269886"] = "Please a title" + +-- Custom target language +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T3848935911"] = "Custom target language" + +-- Your content +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T526734495"] = "Your content" + +-- Please provide a custom language. +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::SLIDEASSISTANT::T656744944"] = "Please provide a custom language." + +-- Children +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T188567026"] = "Children" + +-- Students +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T2905889225"] = "Students" + +-- Scientists +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T332785734"] = "Scientists" + +-- No target group +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T3644477204"] = "No target group" + +-- Office workers +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T3873911022"] = "Office workers" + +-- Executive committee +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SLIDEBUILDER::TARGETGROUPEXTENSIONS::T537362216"] = "Executive committee" + -- Your word or phrase UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::SYNONYM::ASSISTANTSYNONYMS::T1847246020"] = "Your word or phrase" @@ -4345,33 +4345,6 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGMYTASKS::T42672465"] -- 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::SETTINGSDIALOGMYTASKS::T711745239"] = "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 synonym options. This is might be useful when you prefer a specific language or LLM model. -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T183953912"] = "When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model." - --- No Power Point options are preselected -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2203742337"] = "No Power Point options are preselected" - --- Preselect Power Point options? -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2253853076"] = "Preselect Power Point options?" - --- Which language should be preselected? -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2345162613"] = "Which language should be preselected?" - --- Preselect another language -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2382415529"] = "Preselect another language" - --- Preselect the language -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T2571465005"] = "Preselect the language" - --- Power Point options are preselected -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T3094929560"] = "Power Point options are preselected" - --- Close -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T3448155331"] = "Close" - --- Assistant: Power Point Options -UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPOWERPOINT::T426362386"] = "Assistant: Power Point Options" - -- Edit Profile UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1143111468"] = "Edit Profile" @@ -4453,6 +4426,33 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGREWRITE::T3745021518 -- No rewrite & improve text options are preselected UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGREWRITE::T553954963"] = "No rewrite & improve text options are preselected" +-- When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model. +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T183953912"] = "When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model." + +-- Preselect Slide Assistant options? +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T227645894"] = "Preselect Slide Assistant options?" + +-- Which language should be preselected? +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2345162613"] = "Which language should be preselected?" + +-- Preselect another language +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2382415529"] = "Preselect another language" + +-- Preselect the language +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T2571465005"] = "Preselect the language" + +-- Assistant: Slide Assistant Options +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3215549988"] = "Assistant: Slide Assistant Options" + +-- Close +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T3448155331"] = "Close" + +-- No Slide Assistant options are preselected +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T4214398691"] = "No Slide Assistant options are preselected" + +-- Slide Assistant options are preselected +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSLIDEBUILDER::T93124146"] = "Slide Assistant options are preselected" + -- When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model. UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGSYNONYMS::T183953912"] = "When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model." @@ -4891,6 +4891,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1617786407"] = "Coding" -- Analyze a text or an email for tasks you need to complete. UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1728590051"] = "Analyze a text or an email for tasks you need to complete." +-- Slide Assistant +UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1883918574"] = "Slide Assistant" + -- Text Summarizer UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1907192403"] = "Text Summarizer" @@ -4900,12 +4903,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T1934717573"] = "Check grammar and -- Translate text into another language. UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T209791153"] = "Translate text into another language." --- Power Point -UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2194178916"] = "Power Point" - --- Create and refine PowerPoint slide text from a topic or outline. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2255686621"] = "Create and refine PowerPoint slide text from a topic or outline." - -- Generate an e-mail for a given context. UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T2383649630"] = "Generate an e-mail for a given context." @@ -4936,6 +4933,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T3011450657"] = "My Tasks" -- E-Mail UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T3026443472"] = "E-Mail" +-- Develop slide content based on a given topic and content. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T311912219"] = "Develop slide content based on a given topic and content." + -- Translate AI Studio text content into other languages UI_TEXT_CONTENT["AISTUDIO::PAGES::ASSISTANTS::T3181803840"] = "Translate AI Studio text content into other languages" @@ -5800,12 +5800,12 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T1546040625"] = "My Task -- Grammar & Spelling Assistant UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T166453786"] = "Grammar & Spelling Assistant" +-- Slide Assistant +UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T1883918574"] = "Slide Assistant" + -- Legal Check Assistant UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T1886447798"] = "Legal Check Assistant" --- Power Point -UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T2194178916"] = "Power Point" - -- Job Posting Assistant UI_TEXT_CONTENT["AISTUDIO::TOOLS::COMPONENTSEXTENSIONS::T2212811874"] = "Job Posting Assistant" diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor similarity index 80% rename from app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor rename to app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor index cc380fcc..67b76791 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor +++ b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor @@ -1,7 +1,7 @@ -@attribute [Route(Routes.ASSISTANT_POWERPOINT)] -@inherits AssistantBaseCore +@attribute [Route(Routes.ASSISTANT_SLIDE_BUILDER)] +@inherits AssistantBaseCore - + @@ -11,6 +11,7 @@ @@ -18,6 +19,7 @@ diff --git a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs similarity index 75% rename from app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs rename to app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs index a48c6514..d760d1e8 100644 --- a/app/MindWork AI Studio/Assistants/PowerPoint/PowerPoint.razor.cs +++ b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs @@ -1,29 +1,26 @@ using AIStudio.Chat; using AIStudio.Dialogs.Settings; -namespace AIStudio.Assistants.PowerPoint; +namespace AIStudio.Assistants.SlideBuilder; -public partial class PowerPoint : AssistantBaseCore +public partial class SlideAssistant : AssistantBaseCore { - public override Tools.Components Component => Tools.Components.POWER_POINT_ASSISTANT; + public override Tools.Components Component => Tools.Components.SLIDE_BUILDER_ASSISTANT; - protected override string Title => T("Power Point"); + protected override string Title => T("Slide Assistant"); - protected override string Description => T("Create and refine PowerPoint slide text from a topic or outline."); + protected override string Description => T("Develop slide content based on a given topic and content."); protected override string SystemPrompt => $$""" You are a professional presentation editor and writer. Create a clear, single-slide outline from the user's inputs. - {{this.selectedTargetLanguage.PromptTranslation(this.customTargetLanguage)}} - - Inputs: - - "Your title": the main title. - {{this.inputText}} - - "Your content": the source text. - {{this.selectedTargetGroup.Prompt()}} - Rule for creating the individual subheadings: + # Content + You get the following inputs: PRESENTATION_TITLE and PRESENTATION_CONTENT. + + # Subheadings + - Rule for creating the individual subheadings: - If {{this.numberOfSheets}} is NOT 0 - Generate exactly {{this.numberOfSheets}} precise subheadings, each heading represents one slide in a presentation. - If {{this.timeSpecification}} is NOT 0 @@ -36,21 +33,27 @@ public partial class PowerPoint : AssistantBaseCore - Each bullet point must be max 12 words. - Place *** on its own line immediately before each heading. - Output requirements: + # Output requirements: - Output only Markdown. - - Start with a single H1 title from "Your title". - - Then add headings with own bullet lists based only on "Your content". - - If "Your content" is empty, output the title and one bullet: "No content provided." + - Start with a single H1 title that contains the user's PRESENTATION_TITLE. + - Then add headings with own bullet lists based only on the user's PRESENTATION_CONTENT. + - If PRESENTATION_CONTENT is empty, output the title and one bullet: "No content provided." - Do not mention these instructions or add commentary. + + # Target group: + {{this.selectedTargetGroup.Prompt()}} + + # Language: + {{this.selectedTargetLanguage.PromptGeneralPurpose(this.customTargetLanguage)}} """; protected override bool AllowProfiles => false; protected override IReadOnlyList FooterButtons => []; - protected override string SubmitText => T("Create Power Point"); + protected override string SubmitText => T("Create Slides"); - protected override Func SubmitAction => this.CreatePowerPoint; + protected override Func SubmitAction => this.CreateSlideBuilder; protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { @@ -59,7 +62,7 @@ public partial class PowerPoint : AssistantBaseCore protected override void ResetForm() { - this.inputText = string.Empty; + this.inputTitle = string.Empty; this.inputContext = string.Empty; this.expertInField = string.Empty; this.selectedTargetGroup = TargetGroup.NO_CHANGE; @@ -83,7 +86,7 @@ public partial class PowerPoint : AssistantBaseCore return false; } - private string inputText = string.Empty; + private string inputTitle = string.Empty; private string inputContext = string.Empty; private CommonLanguages selectedLanguage; private string customTargetLanguage = string.Empty; @@ -128,23 +131,8 @@ public partial class PowerPoint : AssistantBaseCore { return this.calculatedNumberOfSlides = (int)Math.Round(this.timeSpecification / 1.5); } - - private string UserPromptContext() - { - if(string.IsNullOrWhiteSpace(this.inputContext)) - return string.Empty; - - return $""" - The given context is: - - ``` - {this.inputContext} - ``` - - """; - } - private async Task CreatePowerPoint() + private async Task CreateSlideBuilder() { await this.form!.Validate(); if (!this.inputIsValid) @@ -155,11 +143,15 @@ public partial class PowerPoint : AssistantBaseCore this.CreateChatThread(); var time = this.AddUserRequest( $""" - {this.UserPromptContext()} + # PRESENTATION_TITLE + ``` + {this.inputTitle} + ``` - ``` - {this.inputText} - ``` + # PRESENTATION_CONTENT + ``` + {this.inputContext} + ``` """); await this.AddAIResponseAsync(time); diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor similarity index 82% rename from app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor index 553883b1..80014432 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor @@ -5,12 +5,12 @@ - @T("Assistant: Power Point Options") + @T("Assistant: Slide Assistant Options") - + @if (this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage is CommonLanguages.OTHER) { diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor.cs similarity index 54% rename from app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor.cs index da9bc0c7..236c1616 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogPowerPoint.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSlideBuilder.razor.cs @@ -2,6 +2,6 @@ namespace AIStudio.Dialogs.Settings; -public partial class SettingsDialogPowerPoint : SettingsDialogBase +public partial class SettingsDialogSlideBuilder : SettingsDialogBase { } \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Assistants.razor b/app/MindWork AI Studio/Pages/Assistants.razor index 6003e1b3..55d8c95f 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor +++ b/app/MindWork AI Studio/Pages/Assistants.razor @@ -38,7 +38,7 @@ (Components.JOB_POSTING_ASSISTANT, PreviewFeatures.NONE), (Components.LEGAL_CHECK_ASSISTANT, PreviewFeatures.NONE), (Components.ICON_FINDER_ASSISTANT, PreviewFeatures.NONE), - (Components.POWER_POINT_ASSISTANT, PreviewFeatures.NONE) + (Components.SLIDE_BUILDER_ASSISTANT, PreviewFeatures.NONE) )) { @@ -52,7 +52,7 @@ - + } diff --git a/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs b/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs index 02c24f75..734e1861 100644 --- a/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs +++ b/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs @@ -58,6 +58,14 @@ public static class CommonLanguageExtensions _ => $"Translate the given text in {language.Name()} ({language}).", }; + + public static string PromptGeneralPurpose(this CommonLanguages language, string customLanguage) => language switch + { + CommonLanguages.AS_IS => "Use the language the user input is written in for the output.", + CommonLanguages.OTHER => $"use the language {customLanguage} for your output.", + + _ => $"Use the language {language.Name()} ({language}) for your output.", + }; public static string NameSelecting(this CommonLanguages language) { diff --git a/app/MindWork AI Studio/Tools/Components.cs b/app/MindWork AI Studio/Tools/Components.cs index f8c6f6d1..89c1fa01 100644 --- a/app/MindWork AI Studio/Tools/Components.cs +++ b/app/MindWork AI Studio/Tools/Components.cs @@ -19,7 +19,7 @@ public enum Components BIAS_DAY_ASSISTANT, ERI_ASSISTANT, DOCUMENT_ANALYSIS_ASSISTANT, - POWER_POINT_ASSISTANT, + SLIDE_BUILDER_ASSISTANT, // ReSharper disable InconsistentNaming I18N_ASSISTANT, diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs index dd488ffa..20d8ebeb 100644 --- a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs +++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs @@ -43,7 +43,7 @@ public static class ComponentsExtensions Components.ERI_ASSISTANT => TB("ERI Server"), Components.I18N_ASSISTANT => TB("Localization Assistant"), Components.DOCUMENT_ANALYSIS_ASSISTANT => TB("Document Analysis Assistant"), - Components.POWER_POINT_ASSISTANT => TB("Power Point"), + Components.SLIDE_BUILDER_ASSISTANT => TB("Slide Assistant"), Components.CHAT => TB("New Chat"), From 91a63138ad80eb2d6af328cc9225fa115585fe13 Mon Sep 17 00:00:00 2001 From: hart_s3 Date: Wed, 11 Feb 2026 15:59:40 +0100 Subject: [PATCH 10/10] Modify system prompt --- .../Assistants/SlideBuilder/SlideAssistant.razor | 8 ++++---- .../Assistants/SlideBuilder/SlideAssistant.razor.cs | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor index 67b76791..cb4749a4 100644 --- a/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor +++ b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor @@ -9,16 +9,16 @@ diff --git a/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs index d760d1e8..315d4183 100644 --- a/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs +++ b/app/MindWork AI Studio/Assistants/SlideBuilder/SlideAssistant.razor.cs @@ -34,16 +34,17 @@ public partial class SlideAssistant : AssistantBaseCore