using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.MikePHPContracts; using DevExpress.DataAccess.Native.EntityFramework; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace BeWo.Service.ServiceProxy { public class MikePHPScriptFacade : WebClientFacade { public List GetAiModelle() { var url = "https://ai1.ownsoft.de/osaimodels.php?show"; var dictList = SendGet>>(url); var rtn = new List(); foreach (var item in dictList) { foreach (var kvp in item) { rtn.Add(new AiModelDC(kvp.Key, kvp.Value)); } } return rtn; } public AiMessageResponse SendAiRequest(AiConversationMessageDC msg, string api_data) { var url = "https://ai1.ownsoft.de/osaiquery.php"; msg.Context2 = getSystemPrompt2() + api_data; var request = new AiMessageRequest() { Context = msg.Context2, Model = msg.Model, Option = "json", Prompt = msg.Prompt }; var result = SendPost(url, request); return result; } public AiMessageResponse2 SendAiRequestComplex(AiConversationMessageDC msg) { var url = "https://ai1.ownsoft.de/osaiquery.php"; msg.Context = getSystemPrompt2() + msg.Context; var request = new AiMessageRequest() { Context = msg.Context, Model = msg.Model, Option = "json", Prompt = msg.Prompt }; var result = SendPost(url, request); return result; } private string getSystemPrompt() { var assembly = Assembly.GetExecutingAssembly(); var resourceName = "BeWo.Service.AI.system_prompt.txt"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) { string result = reader.ReadToEnd(); return result; } return null; } private string getSystemPrompt2() { var assembly = Assembly.GetExecutingAssembly(); var resourceName = "BeWo.Service.AI.system_prompt2.txt"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) { string result = reader.ReadToEnd(); return result; } return null; } } }