-
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implemented the "my tasks" assistant (#137)
- Loading branch information
1 parent
7a5f2d4
commit 09f5b83
Showing
16 changed files
with
224 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
@attribute [Route(Routes.ASSISTANT_MY_TASKS)] | ||
@inherits AssistantBaseCore | ||
|
||
<ProfileFormSelection Validation="@this.ValidateProfile" @bind-Profile="@this.currentProfile"/> | ||
<MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Text or email" Variant="Variant.Outlined" Lines="12" AutoGrow="@true" MaxLines="24" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> | ||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom target language" /> | ||
<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/> | ||
|
||
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.AnalyzeText()"> | ||
Analyze text | ||
</MudButton> |
119 changes: 119 additions & 0 deletions
119
app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
using AIStudio.Settings; | ||
|
||
namespace AIStudio.Assistants.MyTasks; | ||
|
||
public partial class AssistantMyTasks : AssistantBaseCore | ||
{ | ||
protected override Tools.Components Component => Tools.Components.MY_TASKS_ASSISTANT; | ||
|
||
protected override string Title => "My Tasks"; | ||
|
||
protected override string Description => | ||
""" | ||
You received a cryptic email that was sent to many recipients and you are now wondering | ||
if you need to do something? Copy the email into the input field. You also need to select | ||
a personal profile. In this profile, you should describe your role in the organization. | ||
The AI will then try to give you hints on what your tasks might be. | ||
"""; | ||
|
||
protected override string SystemPrompt => | ||
$""" | ||
You are a friendly and professional business expert. You receive business emails, protocols, | ||
reports, etc. as input. Additionally, you know the user's role in the organization. The user | ||
wonders if any tasks arise for them in their role based on the text. You now try to give hints | ||
and advice on whether and what the user should do. When you believe there are no tasks for the | ||
user, you tell them this. You consider typical business etiquette in your advice. | ||
You write your advice in the following language: {this.SystemPromptLanguage()}. | ||
"""; | ||
|
||
protected override IReadOnlyList<IButtonData> FooterButtons => []; | ||
|
||
protected override bool ShowProfileSelection => false; | ||
|
||
protected override void ResetFrom() | ||
{ | ||
this.inputText = string.Empty; | ||
if (!this.MightPreselectValues()) | ||
{ | ||
this.selectedTargetLanguage = CommonLanguages.AS_IS; | ||
this.customTargetLanguage = string.Empty; | ||
} | ||
} | ||
|
||
protected override bool MightPreselectValues() | ||
{ | ||
if (this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions) | ||
{ | ||
this.selectedTargetLanguage = this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage; | ||
this.customTargetLanguage = this.SettingsManager.ConfigurationData.MyTasks.PreselectOtherLanguage; | ||
return true; | ||
} | ||
|
||
return false; | ||
} | ||
|
||
private string inputText = string.Empty; | ||
private CommonLanguages selectedTargetLanguage = CommonLanguages.AS_IS; | ||
private string customTargetLanguage = string.Empty; | ||
|
||
#region Overrides of ComponentBase | ||
|
||
protected override async Task OnInitializedAsync() | ||
{ | ||
var deferredContent = MessageBus.INSTANCE.CheckDeferredMessages<string>(Event.SEND_TO_MY_TASKS_ASSISTANT).FirstOrDefault(); | ||
if (deferredContent is not null) | ||
this.inputText = deferredContent; | ||
|
||
await base.OnInitializedAsync(); | ||
} | ||
|
||
#endregion | ||
|
||
private string? ValidatingText(string text) | ||
{ | ||
if(string.IsNullOrWhiteSpace(text)) | ||
return "Please provide some text as input. For example, an email."; | ||
|
||
return null; | ||
} | ||
|
||
private string? ValidateProfile(Profile profile) | ||
{ | ||
if(profile == default || profile == Profile.NO_PROFILE) | ||
return "Please select one of your profiles."; | ||
|
||
return null; | ||
} | ||
|
||
private string? ValidateCustomLanguage(string language) | ||
{ | ||
if(this.selectedTargetLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language)) | ||
return "Please provide a custom language."; | ||
|
||
return null; | ||
} | ||
|
||
private string SystemPromptLanguage() | ||
{ | ||
if(this.selectedTargetLanguage is CommonLanguages.AS_IS) | ||
return "Use the same language as the input"; | ||
|
||
if(this.selectedTargetLanguage is CommonLanguages.OTHER) | ||
return this.customTargetLanguage; | ||
|
||
return this.selectedTargetLanguage.Name(); | ||
} | ||
|
||
private async Task AnalyzeText() | ||
{ | ||
await this.form!.Validate(); | ||
if (!this.inputIsValid) | ||
return; | ||
|
||
this.CreateChatThread(); | ||
var time = this.AddUserRequest(this.inputText); | ||
|
||
await this.AddAIResponseAsync(time); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
app/MindWork AI Studio/Components/ProfileFormSelection.razor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
@using AIStudio.Settings | ||
|
||
<MudSelect T="Profile" Strict="@true" Value="@this.Profile" ValueChanged="@this.SelectionChanged" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Person4" Margin="Margin.Dense" Label="Select one of your profiles" Variant="Variant.Outlined" Class="mb-3" Validation="@this.Validation"> | ||
@foreach (var profile in this.SettingsManager.ConfigurationData.Profiles.GetAllProfiles()) | ||
{ | ||
<MudSelectItem Value="profile"> | ||
@profile.Name | ||
</MudSelectItem> | ||
} | ||
</MudSelect> |
26 changes: 26 additions & 0 deletions
26
app/MindWork AI Studio/Components/ProfileFormSelection.razor.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
using AIStudio.Settings; | ||
|
||
using Microsoft.AspNetCore.Components; | ||
|
||
namespace AIStudio.Components; | ||
|
||
public partial class ProfileFormSelection : ComponentBase | ||
{ | ||
[Parameter] | ||
public Profile Profile { get; set; } = Profile.NO_PROFILE; | ||
|
||
[Parameter] | ||
public EventCallback<Profile> ProfileChanged { get; set; } | ||
|
||
[Parameter] | ||
public Func<Profile, string?> Validation { get; set; } = _ => null; | ||
|
||
[Inject] | ||
private SettingsManager SettingsManager { get; init; } = null!; | ||
|
||
private async Task SelectionChanged(Profile profile) | ||
{ | ||
this.Profile = profile; | ||
await this.ProfileChanged.InvokeAsync(profile); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
namespace AIStudio.Settings.DataModel; | ||
|
||
public sealed class DataMyTasks | ||
{ | ||
/// <summary> | ||
/// Do you want to preselect any options? | ||
/// </summary> | ||
public bool PreselectOptions { get; set; } | ||
|
||
/// <summary> | ||
/// Preselect the target language? | ||
/// </summary> | ||
public CommonLanguages PreselectedTargetLanguage { get; set; } | ||
|
||
/// <summary> | ||
/// Preselect any other language? | ||
/// </summary> | ||
public string PreselectOtherLanguage { get; set; } = string.Empty; | ||
|
||
/// <summary> | ||
/// The preselected provider. | ||
/// </summary> | ||
public string PreselectedProvider { get; set; } = string.Empty; | ||
|
||
/// <summary> | ||
/// Preselect a profile? | ||
/// </summary> | ||
public string PreselectedProfile { get; set; } = string.Empty; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ public enum Components | |
EMAIL_ASSISTANT, | ||
LEGAL_CHECK_ASSISTANT, | ||
SYNONYMS_ASSISTANT, | ||
MY_TASKS_ASSISTANT, | ||
|
||
CHAT, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# v0.9.8, build 183 (2024-09-09 13:00 UTC) | ||
- Added the "my tasks" assistant to analyze, e.g., business emails and extract related tasks for your role. |