diff --git a/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor b/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor
new file mode 100644
index 00000000..6b9d228d
--- /dev/null
+++ b/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor
@@ -0,0 +1,19 @@
+@attribute [Route(Routes.ASSISTANT_EDI)]
+@inherits AssistantBaseCore
+
+
+ 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.
+
+
+
+ Related links:
+
+
+ EDI repository with example implementation in .NET and C#
+ Interactive documentation aka Swagger UI
+
+
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor.cs b/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor.cs
new file mode 100644
index 00000000..b1809517
--- /dev/null
+++ b/app/MindWork AI Studio/Assistants/EDI/AssistantEDI.razor.cs
@@ -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 FooterButtons => [];
+
+ protected override string SubmitText => "Create the EDI server";
+
+ protected override Func SubmitAction => () => Task.CompletedTask;
+
+ protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with
+ {
+ SystemPrompt = SystemPrompts.DEFAULT,
+ };
+
+ protected override void ResetFrom()
+ {
+ }
+
+ protected override bool MightPreselectValues()
+ {
+ return false;
+ }
+}
\ 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 565469a0..840f1e48 100644
--- a/app/MindWork AI Studio/Pages/Assistants.razor
+++ b/app/MindWork AI Studio/Pages/Assistants.razor
@@ -41,6 +41,7 @@
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Routes.razor.cs b/app/MindWork AI Studio/Routes.razor.cs
index ea1a2d68..49673486 100644
--- a/app/MindWork AI Studio/Routes.razor.cs
+++ b/app/MindWork AI Studio/Routes.razor.cs
@@ -24,5 +24,6 @@ public sealed partial class Routes
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";
+ public const string ASSISTANT_EDI = "/assistant/edi";
// ReSharper restore InconsistentNaming
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs
index e2b678e8..f5422d2e 100644
--- a/app/MindWork AI Studio/Settings/DataModel/Data.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs
@@ -57,6 +57,8 @@ public sealed class Data
public DataTranslation Translation { get; init; } = new();
public DataCoding Coding { get; init; } = new();
+
+ public DataEDI EDI { get; init; } = new();
public DataTextSummarizer TextSummarizer { get; init; } = new();
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataEDI.cs b/app/MindWork AI Studio/Settings/DataModel/DataEDI.cs
new file mode 100644
index 00000000..8aa119a5
--- /dev/null
+++ b/app/MindWork AI Studio/Settings/DataModel/DataEDI.cs
@@ -0,0 +1,37 @@
+using AIStudio.Assistants.Coding;
+using AIStudio.Provider;
+
+namespace AIStudio.Settings.DataModel;
+
+public sealed class DataEDI
+{
+ ///
+ /// Preselect any EDI options?
+ ///
+ public bool PreselectOptions { get; set; }
+
+ ///
+ /// Preselect the language for implementing the EDI?
+ ///
+ public CommonCodingLanguages PreselectedProgrammingLanguage { get; set; }
+
+ ///
+ /// Do you want to preselect any other language?
+ ///
+ public string PreselectedOtherProgrammingLanguage { get; set; } = string.Empty;
+
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
+ ///
+ /// Which coding provider should be preselected?
+ ///
+ public string PreselectedProvider { get; set; } = string.Empty;
+
+ ///
+ /// Preselect a profile?
+ ///
+ public string PreselectedProfile { get; set; } = string.Empty;
+}
\ 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 30dee58d..a1704b5c 100644
--- a/app/MindWork AI Studio/Tools/Components.cs
+++ b/app/MindWork AI Studio/Tools/Components.cs
@@ -17,6 +17,7 @@ public enum Components
MY_TASKS_ASSISTANT,
JOB_POSTING_ASSISTANT,
BIAS_DAY_ASSISTANT,
+ EDI_ASSISTANT,
CHAT,
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs
index cfe1c3df..83db98ed 100644
--- a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs
+++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs
@@ -8,6 +8,7 @@ public static class ComponentsExtensions
public static bool AllowSendTo(this Components component) => component switch
{
Components.NONE => false,
+ Components.EDI_ASSISTANT => false,
Components.BIAS_DAY_ASSISTANT => false,
_ => true,
@@ -27,6 +28,7 @@ public static class ComponentsExtensions
Components.SYNONYMS_ASSISTANT => "Synonym Assistant",
Components.MY_TASKS_ASSISTANT => "My Tasks Assistant",
Components.JOB_POSTING_ASSISTANT => "Job Posting Assistant",
+ Components.EDI_ASSISTANT => "EDI Server",
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.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.EDI_ASSISTANT => settingsManager.ConfigurationData.EDI.PreselectOptions ? settingsManager.ConfigurationData.EDI.MinimumProviderConfidence : 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.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.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,
@@ -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.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.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,