using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Service.ServiceProxy; using BeWo.Service.ServiceUtils; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Feature.AI; using BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords; using DevExpress.DataAccess.Native.Web; using Newtonsoft.Json; using RestSharp.Validation; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AICore.Prompt.SystemInstruction; using BeWo.Service.Core; namespace BeWo.Service.Plugins { public class AiFunctionService { public AiFunctionDocResponse ExecuteAiFunctionServiceRecordDocumentation(AiFunctionDocRequest request) { // Request valideren ValidateDocRequest(request); // Request auswerten // DB Daten holen // DB Daten prüfen // Anfrage zusammensetzen var context = AiFunctionContextLoader.LoadServiceRecordDocumentationContext(request); var systemInstructionsFolderPath = PathHelper.GetAiSystemInstructionPath(); var factory = new AiFunctionSystemInstructionBuilder(systemInstructionsFolderPath); var system_prompt = factory.CreateServiceRecordDocumentationSystemInstructions(context); var user_prompt = request.AiPromptbaustein; var user_prompt_oid = user_prompt.Oid; var user_prompt_ver = user_prompt.Version; var predefined = new PredefinedAiPromptbausteine(); var prompts = predefined.GetAllPromptbausteine(); var prompt = prompts.First(x => x.Oid == user_prompt_oid).Prompt; // Anfrage abschicken var result = getResult(system_prompt, prompt); // Response auswerten // Eigene Response erstellen var response = new AiFunctionDocResponse(); response.Result = result; return response; } private string getResult(string system, string user_prompt) { var payload = new { model = "gemma3_12b-max-context:latest", messages = new[] { new { role = "System", content = system }, new { role = "User", content = user_prompt }, } }; var logger = ServiceLogger.GetRequestLogger(); var response = ServiceFacade.OllamaApiClient.SendAiMessageRequest(payload, out string message, out string model, out int? duration, logger); return message; } private void ValidateDocRequest(AiFunctionDocRequest request) { //throw new NotImplementedException(); } } }