@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 (z. B. http://192.168.1.100:11434)

Design

Lektor-System-Prompt

Fact-Check-Vorlage

Rechtschreibprüfungs-Prompt

@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 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; var userSettings = await LoadUserSettingsAsync(); ragModel = userSettings.ragModel; styleModel = userSettings.styleModel; spellingModel = userSettings.spellingModel; selectedTheme = userSettings.selectedTheme; ollamaUrl = userSettings.ollamaUrl; lektorPrompt = userSettings.lektorPrompt; factCheckTemplate = userSettings.factCheckTemplate; spellingPrompt = userSettings.spellingPrompt; try { var models = await OllamaService.GetLocalModelsAsync(); availableModels = models.ToList(); } catch { availableModels = new(); } } private async Task<(string ragModel, string styleModel, string spellingModel, string selectedTheme, string ollamaUrl, string lektorPrompt, string factCheckTemplate, string spellingPrompt)> LoadUserSettingsAsync() { return ( await SettingsService.GetRagModelAsync() ?? "llama3.2", await SettingsService.GetStyleModelAsync() ?? "llama3.2", await SettingsService.GetSpellingModelAsync() ?? "phi3:mini", await SettingsService.GetThemeAsync() ?? "light", await SettingsService.GetOllamaUrlAsync() ?? "http://localhost:11434", await SettingsService.GetLektorSystemPromptAsync() ?? string.Empty, await SettingsService.GetFactCheckTemplateAsync() ?? string.Empty, await SettingsService.GetSpellingPromptAsync() ?? string.Empty ); } private async Task SwitchUser(ChangeEventArgs e) { var userId = int.Parse(e.Value?.ToString() ?? "0"); await SettingsService.SetCurrentUserAsync(userId); selectedUserId = userId; var userSettings = await LoadUserSettingsAsync(); ragModel = userSettings.ragModel; styleModel = userSettings.styleModel; spellingModel = userSettings.spellingModel; selectedTheme = userSettings.selectedTheme; ollamaUrl = userSettings.ollamaUrl; lektorPrompt = userSettings.lektorPrompt; factCheckTemplate = userSettings.factCheckTemplate; spellingPrompt = userSettings.spellingPrompt; } 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); 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); OllamaService.Reconfigure(ollamaUrl); statusMessage = "Einstellungen gespeichert."; await ThemeService.ApplyTheme(selectedTheme); } }