using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Data.Security; using BeWo.Service.Plugins; using BeWo.Service.ServiceContracts.Enhanced; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts.Feature.AI; using BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords; using System; using System.Collections.Generic; using System.ServiceModel; namespace BeWo.Service.ServiceImplementations.Enhanced { [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)] public class AiEnhancedServiceImp : IAiEnhancedService { #region General AI public AiConfigDC GetAiConfig() => GetAiService().GetAiConfig(); public AiConfigDC UpdateAiConfig(AiConfigDC toUpdate) => GetAiService().UpdateAiConfig(toUpdate); public IEnumerable GetAiModels() => GetAiService().GetAiModels(); public IEnumerable GetAiConversations(AiContextType uicontext, long? oid) => GetAiService().GetAiConversations(uicontext, oid); public AiConversationDC CreateAiConversation(AiConversationDC conversation, long modell_oid) => GetAiService().CreateAiConversation(conversation, modell_oid); public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, long modell_oid, string message) => GetAiService().CreateAiConversationWithMessage(conversation, modell_oid, message); public AiConversationDC CloneAiConversation(long conversation_oid, long? last_message_oid) => GetAiService().CloneAiConversation(conversation_oid, last_message_oid); public long UpdateAiConversationDisplayname(long oid, long version, string displayname) => GetAiService().UpdateAiConversationDisplayname(oid, version, displayname); public void DeleteAiConversation(long conversation_oid) => GetAiService().DeleteAiConversation(conversation_oid); public AiConversationMessageDC[] SendNewMessage(long conversation, string message) => GetAiService().SendNewMessage(conversation, message); public bool CheckContextSize(AiContextType aiContextType, Dictionary context, long? modell_oid) => GetAiService().CheckContextSize(aiContextType, context, modell_oid); public AiUserSettingDC GetUserSetting() => GetAiService().GetUserSetting(); public AiUserSettingDC UpdateUserSetting(AiUserSettingDC aiUserSettingDC) => GetAiService().UpdateUserSetting(aiUserSettingDC); private AiService2 GetAiService() { var plugin = PluginLoader.FindClass(); return plugin; } #endregion #region Promptbausteine public IEnumerable GetAiPromptbausteinFolder(AiActionType aiActionType) => GetAiPromptbausteineService().GetAiPromptbausteinFolder(aiActionType); public IEnumerable InsertAiPromptbausteinFolder(IEnumerable folders) => GetAiPromptbausteineService().InsertAiPromptbausteinFolder(folders); public IEnumerable InsertAiPromptbausteinPrompt(IEnumerable prompts) => GetAiPromptbausteineService().InsertAiPromptbausteinPrompt(prompts); public IEnumerable UpdateAiPromptbausteinFolder(IEnumerable folders) => GetAiPromptbausteineService().UpdateAiPromptbausteinFolder(folders); public IEnumerable UpdateAiPromptbausteinPrompt(IEnumerable prompts) => GetAiPromptbausteineService().UpdateAiPromptbausteinPrompt(prompts); public void DeleteAiPromptbausteinFolder(Dictionary oid2version) => GetAiPromptbausteineService().DeleteAiPromptbausteinFolder(oid2version); public void DeleteAiPromptbausteinPrompt(Dictionary oid2version) => GetAiPromptbausteineService().DeleteAiPromptbausteinPrompt(oid2version); private AiPromptbausteineService GetAiPromptbausteineService() { return new AiPromptbausteineService(); //var plugin = PluginLoader.FindClass(); //return plugin; } #endregion #region Functions public AiFunctionDocResponse ExecuteAiFunctionServiceRecordDocumentation(AiFunctionDocRequest request) => GetAiFunctionService().ExecuteAiFunctionServiceRecordDocumentation(request); private AiFunctionService GetAiFunctionService() { return new AiFunctionService(); //var plugin = PluginLoader.FindClass(); //return plugin; } #endregion } }