2025-03-19 16:30:27 +01:00
|
|
|
|
using BS.Shared.Core;
|
|
|
|
|
|
using BS.Shared.DataContracts;
|
2025-03-28 10:05:29 +01:00
|
|
|
|
using BS.Shared.DataContracts.MikePHPContracts;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
using DevExpress.DataAccess.Native.EntityFramework;
|
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2025-03-28 10:05:29 +01:00
|
|
|
|
using System.IO;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Net;
|
2025-03-28 10:05:29 +01:00
|
|
|
|
using System.Reflection;
|
2025-03-19 16:30:27 +01:00
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace BeWo.Service.ServiceProxy
|
|
|
|
|
|
{
|
|
|
|
|
|
public class MikePHPScriptFacade : WebClientFacade
|
|
|
|
|
|
{
|
|
|
|
|
|
public List<AiModelDC> GetAiModelle()
|
|
|
|
|
|
{
|
|
|
|
|
|
var url = "https://ai1.ownsoft.de/osaimodels.php?show";
|
|
|
|
|
|
var dictList = SendGet<List<Dictionary<string, int>>>(url);
|
|
|
|
|
|
|
|
|
|
|
|
var rtn = new List<AiModelDC>();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in dictList)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var kvp in item)
|
|
|
|
|
|
{
|
|
|
|
|
|
rtn.Add(new AiModelDC(kvp.Key, kvp.Value));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return rtn;
|
|
|
|
|
|
}
|
2025-03-28 10:05:29 +01:00
|
|
|
|
|
|
|
|
|
|
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<AiMessageRequest, AiMessageResponse>(url, request);
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public AiMessageResponse2 SendAiRequestComplex(AiConversationMessageDC msg)
|
|
|
|
|
|
{
|
|
|
|
|
|
var url = "https://ai1.ownsoft.de/osaiquery.php";
|
|
|
|
|
|
|
2025-03-31 16:42:49 +02:00
|
|
|
|
msg.Context = getSystemPrompt2() + msg.Context;
|
2025-03-28 10:05:29 +01:00
|
|
|
|
|
|
|
|
|
|
var request = new AiMessageRequest()
|
|
|
|
|
|
{
|
|
|
|
|
|
Context = msg.Context,
|
|
|
|
|
|
Model = msg.Model,
|
|
|
|
|
|
Option = "json",
|
|
|
|
|
|
Prompt = msg.Prompt
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var result = SendPost<AiMessageRequest, AiMessageResponse2>(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;
|
|
|
|
|
|
}
|
2025-03-19 16:30:27 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|