@page "/quick-markdown" @attribute [Authorize(Roles = "Administrator,Blogger")] @inject IOllamaService OllamaService @inject OllamaSettings Settings @inject IJSRuntime JS @inject IAuthService AuthService @inject ISettingsService SettingsService @inject NavigationManager Navigation @rendermode InteractiveServer Quick Markdown

Quick Markdown

Erzeugt aus einem Text und einem System-Prompt direkt formatiertes Markdown – ohne Projekt oder Speicherung.

präzise (0) kreativ (2)
@if (!string.IsNullOrEmpty(_error)) {
@_error
} @if (!string.IsNullOrEmpty(_modelNotice)) {
@_modelNotice
}
@code { private string _systemPrompt = string.Empty; private string _inputText = string.Empty; private string _output = string.Empty; private string _error = string.Empty; private string _modelNotice = string.Empty; private bool _isBusy; private double _temperature = 0.3; protected override async Task OnInitializedAsync() { var user = await AuthService.GetCurrentUserAsync(); if (user == null || !user.HasAnyRole(UserRole.Administrator, UserRole.Blogger)) { Navigation.NavigateTo("/"); return; } _systemPrompt = await SettingsService.GetQuickMarkdownPromptAsync() ?? Settings.GetQuickMarkdownDefaultPrompt(Settings.Language); _temperature = await SettingsService.GetQuickMarkdownTempAsync(); _modelNotice = $"Verwendetes Modell: {Settings.StyleModel} (via {Settings.Backend})"; } private async Task SaveSettings() { await SettingsService.SaveQuickMarkdownPromptAsync(_systemPrompt); await SettingsService.SaveQuickMarkdownTempAsync(_temperature); } private async Task ResetToDefault() { _systemPrompt = Settings.GetQuickMarkdownDefaultPrompt(Settings.Language); _temperature = Settings.QuickMarkdownTemp; await SaveSettings(); } private async Task Generate() { if (string.IsNullOrWhiteSpace(_inputText)) return; _isBusy = true; _error = string.Empty; _output = string.Empty; try { var result = await OllamaService.Chat(Settings.StyleModel, _inputText, _systemPrompt, _temperature); _output = result; } catch (Exception ex) { _error = $"Fehler bei der Generierung: {ex.Message}"; } finally { _isBusy = false; } } private async Task CopyOutput() { if (string.IsNullOrEmpty(_output)) return; await JS.InvokeVoidAsync("navigator.clipboard.writeText", _output); } private void ClearOutput() { _output = string.Empty; _error = string.Empty; } }