diff --git a/.gitignore b/.gitignore
index 8a30d25..5112f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -396,3 +396,4 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
+KIKunstKirstenKlöckner/wwwroot/generated_images/*
diff --git a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
index 77beb84..03f043e 100644
--- a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
+++ b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
@@ -17,6 +17,7 @@
+
diff --git a/KIKunstKirstenKlöckner/Pages/AiArt.razor b/KIKunstKirstenKlöckner/Pages/AiArt.razor
index 8acaf70..c9761db 100644
--- a/KIKunstKirstenKlöckner/Pages/AiArt.razor
+++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor
@@ -2,7 +2,6 @@
@page "/aiart"
@using OpenAI_API
-@using Microsoft.AspNetCore.Components.Web
@using OpenAI_API.Chat
@using OpenAI_API.Models
@using System.Diagnostics
@@ -10,8 +9,6 @@
@inject TooltipService TooltipService
@inject DialogService DialogService
-@inject IJSRuntime JSRuntime;
-
AiArt
Wunschbilder von KI nur für dich
@@ -42,7 +39,7 @@
AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
Temperature:
+ Step="0.1" Min="0.0m" Max="2.0m">
@temperature
@@ -73,7 +70,7 @@
- Verändere hier dein Bild durch Worte:
+ Verändere hier dein Bild durch Worte:
await DoStuff(false))>Generate
@@ -185,10 +182,82 @@
await InvokeAsync(StateHasChanged);
}
- public async Task GenerateImage()
+ private readonly HttpClient _client = new();
+
+ protected override Task OnInitializedAsync()
{
- //await JSRuntime.InvokeVoidAsync("DoSexyStuffBridge", _imagePrompt);
- _imageUrl = await JSRuntime.InvokeAsync("DoSexyStuffBridge", _imagePrompt);
+ var inferenceModelUrl = "https://api-inference.huggingface.co/models/Nacken/ki-kunst-kirsten-kloeckner-colab";
+
+ // TODO: nicht im repo speichern
+ var API_TOKEN = "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";
+
+ //_client.BaseAddress = new Uri(inferenceModelUrl);
+
+ _client.DefaultRequestHeaders.Clear();
+ _client.DefaultRequestHeaders.Add("Authorization", $"Bearer {API_TOKEN}");
+
+ return base.OnInitializedAsync();
+ }
+
+ ///
+ /// Geneiert das Bild für den aktuellen
+ ///
+ public async Task GenerateImageAsync()
+ {
+ var postData = new
+ {
+ inputs = _imagePrompt
+ };
+
+ JsonContent content = JsonContent.Create(postData);
+
+ async Task FailedToDrawImage()
+ {
+ bool? retry = await DialogService.Confirm("Leider konnte das Bild nicht gemalt werden. Möchtest du es noch eimal versuchen?", "Ups, ein Fehler ist aufgetreten...",
+ new ConfirmOptions { OkButtonText = "Ja", CancelButtonText = "Nein" });
+
+ if (retry == true)
+ await GenerateImageAsync();
+ }
+
+ try
+ {
+ var inferenceModelUrl = "https://api-inference.huggingface.co/models/Nacken/ki-kunst-kirsten-kloeckner-colab";
+
+ var response = await _client.PostAsync(inferenceModelUrl, content);
+
+ if (response?.IsSuccessStatusCode == true)
+ {
+ await using Stream imageStream = await response.Content.ReadAsStreamAsync();
+
+ using Image image = await Image.LoadAsync(imageStream);
+
+ string imgUrl = $"generated_images/{DateTime.Now:dd_MM_yyyy_hh_mm_s}.jpg";
+
+ string mapPath = $"./wwwroot/{imgUrl}";
+ await image.SaveAsJpegAsync(mapPath);
+
+ _imageUrl = imgUrl;
+ }
+ else
+ {
+ Console.WriteLine($"Image conversion failed: {response}");
+
+ if (Debugger.IsAttached)
+ Debugger.Break();
+
+ await FailedToDrawImage();
+ }
+ }
+ catch (Exception exception)
+ {
+ Console.WriteLine($"Image request failed: {exception}");
+
+ if (Debugger.IsAttached)
+ Debugger.Break();
+
+ await FailedToDrawImage();
+ }
}
@@ -205,7 +274,7 @@
_addonsVisible = false;
_bothVisible = _buttonVisible && _addonsVisible;
await UpdateBusyMessage("Kirstens Assistent zerbricht sich über deine Idee den Kopf...");
- _basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"/wwwroot/prompt.txt"}");
+ _basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"/wwwroot/test_prompt.txt"}");
ChatRequest chatRequest = new ChatRequest
{
@@ -236,7 +305,8 @@
_imageDescription = await converse.GetResponseFromChatbotAsync();
await UpdateBusyMessage("Kirstens Assistent hat eine Idee! Er wird sie nun malen...");
- Task makeImagesTask = GenerateImage();
+
+ Task makeImagesTask = GenerateImageAsync();
//CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource();
diff --git a/KIKunstKirstenKlöckner/Pages/_Host.cshtml b/KIKunstKirstenKlöckner/Pages/_Host.cshtml
index 5d2e5de..edfc3d1 100644
--- a/KIKunstKirstenKlöckner/Pages/_Host.cshtml
+++ b/KIKunstKirstenKlöckner/Pages/_Host.cshtml
@@ -34,25 +34,5 @@
-
-
-
-
-