mirror of
				https://github.com/MindWorkAI/AI-Studio.git
				synced 2025-11-04 13:00:20 +00:00 
			
		
		
		
	Added the EDI assistant
This commit is contained in:
		
							parent
							
								
									88026575dd
								
							
						
					
					
						commit
						42fb6cbac0
					
				
							
								
								
									
										19
									
								
								app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					@attribute [Route(Routes.ASSISTANT_EDI)]
 | 
				
			||||||
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<MudText Typo="Typo.body1" Class="mb-3">
 | 
				
			||||||
 | 
					    You can imagine it like this: Hypothetically, when Wikipedia implemented the EDI, it would vectorize
 | 
				
			||||||
 | 
					    all pages using an embedding method. All of Wikipedia’s data would remain with Wikipedia, including the
 | 
				
			||||||
 | 
					    vector database (decentralized approach). Then, any AI Studio user could add Wikipedia as a data source to
 | 
				
			||||||
 | 
					    significantly reduce the hallucination of the LLM in knowledge questions.
 | 
				
			||||||
 | 
					</MudText>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<MudText Typo="Typo.body1">
 | 
				
			||||||
 | 
					    <b>Related links:</b>
 | 
				
			||||||
 | 
					</MudText>
 | 
				
			||||||
 | 
					<MudList T="string" Class="mb-6">
 | 
				
			||||||
 | 
					    <MudListItem T="string" Icon="@Icons.Material.Filled.Link" Target="_blank" Href="https://github.com/MindWorkAI/EDI">EDI repository with example implementation in .NET and C#</MudListItem>
 | 
				
			||||||
 | 
					    <MudListItem T="string" Icon="@Icons.Material.Filled.Link" Target="_blank" Href="https://mindworkai.org/swagger-ui.html">Interactive documentation aka Swagger UI</MudListItem>
 | 
				
			||||||
 | 
					</MudList>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
							
								
								
									
										46
									
								
								app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					using AIStudio.Chat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Components;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace AIStudio.Assistants.EDI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class AssistantEDI : AssistantBaseCore
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public override Tools.Components Component => Tools.Components.EDI_ASSISTANT;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override string Title => "EDI Server";
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override string Description =>
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        The EDI is the (E)xternal (D)ata AP(I) for AI Studio. The EDI acts as a contract between decentralized data
 | 
				
			||||||
 | 
					        sources and AI Studio. The EDI is implemented by the data sources, allowing them to be integrated into AI
 | 
				
			||||||
 | 
					        Studio later. This means that the data sources assume the server role and AI Studio assumes the client role
 | 
				
			||||||
 | 
					        of the API. This approach serves to realize a Retrieval-Augmented Generation (RAG) process with external
 | 
				
			||||||
 | 
					        data.
 | 
				
			||||||
 | 
					        """;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override string SystemPrompt => 
 | 
				
			||||||
 | 
					        $"""
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					         """;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override IReadOnlyList<IButtonData> FooterButtons => [];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override string SubmitText => "Create the EDI server";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected override Func<Task> SubmitAction => () => Task.CompletedTask;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        SystemPrompt = SystemPrompts.DEFAULT,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override void ResetFrom()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected override bool MightPreselectValues()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -41,6 +41,7 @@
 | 
				
			|||||||
    </MudText>
 | 
					    </MudText>
 | 
				
			||||||
    <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3">
 | 
					    <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3">
 | 
				
			||||||
        <AssistantBlock Name="Coding" Description="Get coding and debugging support from a LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/>
 | 
					        <AssistantBlock Name="Coding" Description="Get coding and debugging support from a LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/>
 | 
				
			||||||
 | 
					        <AssistantBlock Name="EDI Server" Description="Generate an EDI server to integrate business systems." Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_EDI"/>
 | 
				
			||||||
    </MudStack>
 | 
					    </MudStack>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
</InnerScrolling>
 | 
					</InnerScrolling>
 | 
				
			||||||
@ -24,5 +24,6 @@ public sealed partial class Routes
 | 
				
			|||||||
    public const string ASSISTANT_MY_TASKS = "/assistant/my-tasks";
 | 
					    public const string ASSISTANT_MY_TASKS = "/assistant/my-tasks";
 | 
				
			||||||
    public const string ASSISTANT_JOB_POSTING = "/assistant/job-posting";
 | 
					    public const string ASSISTANT_JOB_POSTING = "/assistant/job-posting";
 | 
				
			||||||
    public const string ASSISTANT_BIAS = "/assistant/bias-of-the-day";
 | 
					    public const string ASSISTANT_BIAS = "/assistant/bias-of-the-day";
 | 
				
			||||||
 | 
					    public const string ASSISTANT_EDI = "/assistant/edi";
 | 
				
			||||||
    // ReSharper restore InconsistentNaming
 | 
					    // ReSharper restore InconsistentNaming
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -58,6 +58,8 @@ public sealed class Data
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public DataCoding Coding { get; init; } = new();
 | 
					    public DataCoding Coding { get; init; } = new();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    public DataEDI EDI { get; init; } = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public DataTextSummarizer TextSummarizer { get; init; } = new();
 | 
					    public DataTextSummarizer TextSummarizer { get; init; } = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public DataTextContentCleaner TextContentCleaner { get; init; } = new();
 | 
					    public DataTextContentCleaner TextContentCleaner { get; init; } = new();
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										37
									
								
								app/MindWork AI Studio/Settings/DataModel/DataEDI.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/MindWork AI Studio/Settings/DataModel/DataEDI.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					using AIStudio.Assistants.Coding;
 | 
				
			||||||
 | 
					using AIStudio.Provider;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace AIStudio.Settings.DataModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public sealed class DataEDI
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Preselect any EDI options?
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public bool PreselectOptions { get; set; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Preselect the language for implementing the EDI?
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public CommonCodingLanguages PreselectedProgrammingLanguage { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Do you want to preselect any other language?
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public string PreselectedOtherProgrammingLanguage { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// The minimum confidence level required for a provider to be considered.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Which coding provider should be preselected?
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public string PreselectedProvider { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Preselect a profile?
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public string PreselectedProfile { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -17,6 +17,7 @@ public enum Components
 | 
				
			|||||||
    MY_TASKS_ASSISTANT,
 | 
					    MY_TASKS_ASSISTANT,
 | 
				
			||||||
    JOB_POSTING_ASSISTANT,
 | 
					    JOB_POSTING_ASSISTANT,
 | 
				
			||||||
    BIAS_DAY_ASSISTANT,
 | 
					    BIAS_DAY_ASSISTANT,
 | 
				
			||||||
 | 
					    EDI_ASSISTANT,
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    CHAT,
 | 
					    CHAT,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -8,6 +8,7 @@ public static class ComponentsExtensions
 | 
				
			|||||||
    public static bool AllowSendTo(this Components component) => component switch
 | 
					    public static bool AllowSendTo(this Components component) => component switch
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Components.NONE => false,
 | 
					        Components.NONE => false,
 | 
				
			||||||
 | 
					        Components.EDI_ASSISTANT => false,
 | 
				
			||||||
        Components.BIAS_DAY_ASSISTANT => false,
 | 
					        Components.BIAS_DAY_ASSISTANT => false,
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        _ => true,
 | 
					        _ => true,
 | 
				
			||||||
@ -27,6 +28,7 @@ public static class ComponentsExtensions
 | 
				
			|||||||
        Components.SYNONYMS_ASSISTANT => "Synonym Assistant",
 | 
					        Components.SYNONYMS_ASSISTANT => "Synonym Assistant",
 | 
				
			||||||
        Components.MY_TASKS_ASSISTANT => "My Tasks Assistant",
 | 
					        Components.MY_TASKS_ASSISTANT => "My Tasks Assistant",
 | 
				
			||||||
        Components.JOB_POSTING_ASSISTANT => "Job Posting Assistant",
 | 
					        Components.JOB_POSTING_ASSISTANT => "Job Posting Assistant",
 | 
				
			||||||
 | 
					        Components.EDI_ASSISTANT => "EDI Server",
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        Components.CHAT => "New Chat",
 | 
					        Components.CHAT => "New Chat",
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@ -68,6 +70,7 @@ public static class ComponentsExtensions
 | 
				
			|||||||
        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence : default,
 | 
					        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence : default,
 | 
				
			||||||
        Components.JOB_POSTING_ASSISTANT => settingsManager.ConfigurationData.JobPostings.PreselectOptions ? settingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence : default,
 | 
					        Components.JOB_POSTING_ASSISTANT => settingsManager.ConfigurationData.JobPostings.PreselectOptions ? settingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence : default,
 | 
				
			||||||
        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence : default,
 | 
					        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence : default,
 | 
				
			||||||
 | 
					        Components.EDI_ASSISTANT => settingsManager.ConfigurationData.EDI.PreselectOptions ? settingsManager.ConfigurationData.EDI.MinimumProviderConfidence : default,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        _ => default,
 | 
					        _ => default,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -87,6 +90,7 @@ public static class ComponentsExtensions
 | 
				
			|||||||
        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProvider) : default,
 | 
					        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProvider) : default,
 | 
				
			||||||
        Components.JOB_POSTING_ASSISTANT => settingsManager.ConfigurationData.JobPostings.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.JobPostings.PreselectedProvider) : default,
 | 
					        Components.JOB_POSTING_ASSISTANT => settingsManager.ConfigurationData.JobPostings.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.JobPostings.PreselectedProvider) : default,
 | 
				
			||||||
        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider) : default,
 | 
					        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider) : default,
 | 
				
			||||||
 | 
					        Components.EDI_ASSISTANT => settingsManager.ConfigurationData.EDI.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.EDI.PreselectedProvider) : default,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProvider) : default,
 | 
					        Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProvider) : default,
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@ -101,6 +105,7 @@ public static class ComponentsExtensions
 | 
				
			|||||||
        Components.LEGAL_CHECK_ASSISTANT => settingsManager.ConfigurationData.LegalCheck.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.LegalCheck.PreselectedProfile) : default,
 | 
					        Components.LEGAL_CHECK_ASSISTANT => settingsManager.ConfigurationData.LegalCheck.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.LegalCheck.PreselectedProfile) : default,
 | 
				
			||||||
        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProfile) : default,
 | 
					        Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProfile) : default,
 | 
				
			||||||
        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile) : default,
 | 
					        Components.BIAS_DAY_ASSISTANT => settingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile) : default,
 | 
				
			||||||
 | 
					        Components.EDI_ASSISTANT => settingsManager.ConfigurationData.EDI.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.EDI.PreselectedProfile) : default,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProfile) : default,
 | 
					        Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProfile) : default,
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user