@page "/settings" @inject ISettingsService SettingsService @inject IThemeService ThemeService @inject IOllamaService OllamaService @inject NavigationManager Navigation @inject IJSRuntime JSRuntime @inject IProjectService ProjectService Einstellungen - Author Buddy

Benutzer

Modelle

Ollama Server

Adresse des Ollama-Servers

Design

Lektor-System-Prompt

Fact-Check-Vorlage

Rechtschreibprüfungs-Prompt

Advocatus Diaboli

Hook-Finder

ELI5-Vereinfachung

@if (!string.IsNullOrEmpty(statusMessage)) { @statusMessage }
@code { private string ragModel = "llama3.2"; private string styleModel = "llama3.2"; private string spellingModel = "phi3:mini"; private string selectedTheme = "light"; private string ollamaUrl = "http://localhost:11434"; private string lektorPrompt = string.Empty; private string factCheckTemplate = string.Empty; private string spellingPrompt = string.Empty; private string advocatusDiaboliPrompt = string.Empty; private string hookFinderPrompt = string.Empty; private string eli5Prompt = string.Empty; private string newProjectName = string.Empty; private string newUserName = string.Empty; private string statusMessage = string.Empty; private List availableModels = new(); private List users = new(); private int selectedUserId; protected override async Task OnInitializedAsync() { users = await SettingsService.GetUsersAsync(); var current = await SettingsService.GetCurrentUserAsync(); selectedUserId = current.Id; await LoadUserSettings(); try { var models = await OllamaService.GetLocalModelsAsync(); availableModels = models.ToList(); } catch { availableModels = new(); } } private async Task LoadUserSettings() { ragModel = await SettingsService.GetRagModelAsync() ?? "llama3.2"; styleModel = await SettingsService.GetStyleModelAsync() ?? "llama3.2"; spellingModel = await SettingsService.GetSpellingModelAsync() ?? "phi3:mini"; selectedTheme = await SettingsService.GetThemeAsync() ?? "light"; ollamaUrl = await SettingsService.GetOllamaUrlAsync() ?? "http://localhost:11434"; lektorPrompt = await SettingsService.GetLektorSystemPromptAsync() ?? string.Empty; factCheckTemplate = await SettingsService.GetFactCheckTemplateAsync() ?? string.Empty; spellingPrompt = await SettingsService.GetSpellingPromptAsync() ?? string.Empty; advocatusDiaboliPrompt = await SettingsService.GetAdvocatusDiaboliPromptAsync() ?? string.Empty; hookFinderPrompt = await SettingsService.GetHookFinderPromptAsync() ?? string.Empty; eli5Prompt = await SettingsService.GetEli5PromptAsync() ?? string.Empty; } private async Task SwitchUser(ChangeEventArgs e) { var userId = int.Parse(e.Value?.ToString() ?? "0"); await SettingsService.SetCurrentUserAsync(userId); selectedUserId = userId; await LoadUserSettings(); } private async Task AddUser() { if (string.IsNullOrWhiteSpace(newUserName)) return; var user = await SettingsService.CreateUserAsync(newUserName); users.Add(user); newUserName = string.Empty; statusMessage = $"Benutzer '{user.Name}' erstellt."; } private async Task SaveSettings() { await SettingsService.SaveOllamaUrlAsync(ollamaUrl); OllamaService.Reconfigure(ollamaUrl); if (!string.IsNullOrWhiteSpace(ragModel)) { var ok = await OllamaService.TestEmbeddingAsync(ragModel); if (!ok) { statusMessage = $"Modell '{ragModel}' unterstützt keine Embeddings. RAG-Modell nicht gespeichert."; return; } } await SettingsService.SaveRagModelAsync(ragModel); await SettingsService.SaveStyleModelAsync(styleModel); await SettingsService.SaveSpellingModelAsync(spellingModel); await SettingsService.SaveThemeAsync(selectedTheme); await SettingsService.SaveLektorSystemPromptAsync(lektorPrompt); await SettingsService.SaveFactCheckTemplateAsync(factCheckTemplate); await SettingsService.SaveSpellingPromptAsync(spellingPrompt); await SettingsService.SaveAdvocatusDiaboliPromptAsync(advocatusDiaboliPrompt); await SettingsService.SaveHookFinderPromptAsync(hookFinderPrompt); await SettingsService.SaveEli5PromptAsync(eli5Prompt); statusMessage = "Einstellungen gespeichert."; await ThemeService.ApplyTheme(selectedTheme); } }