using AICore.Context.Summary; using AICore.Context.SummaryParser; using BS.Shared; using BS.Shared.Core; using BS.Shared.Exceptions; using BS.Shared.Translation; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Text.Json; namespace AICore.Prompt.SystemInstruction { public class AiConversationSystemInstructionBuilder : BaseSystemInstructionBuilder { public AiConversationSystemInstructionBuilder(string prompt_path) : base(prompt_path) { } public string CreateSystemInstructions(AiContextType uicontext, BaseContextSummary context, AiDataContextType aiDataContextType) { var sb = new StringBuilder(); sb.AppendLine(getCustomSystemPrompt("customSystemInstruction.txt")); sb.AppendLine("### **Allgemein**"); sb.AppendLine($"- Aktuelle Zeit: {DateTime.Now}"); sb.AppendLine(); sb.AppendLine("### **Ansicht**"); sb.AppendLine($"- Ich befinde mich aktuell in der \"{EnumTranslations.Ai2Translation[uicontext]}\" meiner Anwendung."); sb.AppendLine($"- Es ist kein Filter gesetzt."); sb.AppendLine(); sb.AppendLine("### **Daten**"); if (context?.Context is null) { sb.AppendLine("Dir wurden keine Daten bereitgestellt."); } else { sb.AppendLine("Du erhälst folgende Daten:"); var parser = GetParser(aiDataContextType); var parsed = parser.Parse(uicontext, context); sb.AppendLine(parsed); } return sb.ToString(); } private BaseContextSummaryParser GetParser(AiDataContextType aiDataContextType) { switch (aiDataContextType) { case AiDataContextType.json: return new JsonContextSummaryParser(); case AiDataContextType.csv: return new CsvContextSummaryParser(); case AiDataContextType.tsv: return new CsvContextSummaryParser("\t"); case AiDataContextType.csv2: return new CsvContextSummaryParser(";", true); case AiDataContextType.tsv2: return new CsvContextSummaryParser("\t", true); default: break; } throw BeWoNotImplementedException.CreateFromEnum(aiDataContextType); } } }