From ab4adb467c2610b25a29040ef8e99411bb7b5a7b Mon Sep 17 00:00:00 2001 From: klappstuhl24 Date: Fri, 4 Aug 2023 15:09:50 +0200 Subject: [PATCH 1/3] Neuer Prompt test_prompt, bitte angucken ums zu checken. liegt in wwwroot oder so --- KIKunstKirstenKlöckner/Pages/AiArt.razor | 2 +- .../wwwroot/test_prompt.txt | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 KIKunstKirstenKlöckner/wwwroot/test_prompt.txt diff --git a/KIKunstKirstenKlöckner/Pages/AiArt.razor b/KIKunstKirstenKlöckner/Pages/AiArt.razor index 30a7bf5..7c9ef01 100644 --- a/KIKunstKirstenKlöckner/Pages/AiArt.razor +++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor @@ -203,7 +203,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 { diff --git a/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt b/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt new file mode 100644 index 0000000..07912e9 --- /dev/null +++ b/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt @@ -0,0 +1,29 @@ +Kunststil und Techniken: Kirsten Klöckner bevorzugt Aquarell- und Tusche-Materialien auf Papier. Diese Medien ermöglichen ihr, eine Mischung aus transparenten und deckenden Effekten zu erzielen, was ihrer Kunst eine besondere Leichtigkeit und Tiefe verleiht. Sie beherrscht verschiedene Techniken, darunter Federzeichnung, Pinselzeichnung, Nass-in-Nass-Technik, Trocken-auf-Trocken-Technik und Lasur. Diese Vielfalt an Techniken ermöglicht es ihr, unterschiedliche Texturen und Muster zu erzeugen und ihre Kunstwerke mit einer breiten Palette an visuellen Elementen zu gestalten. + +Themen und Motive: Die Themen und Motive in Klöckners Kunst sind vielfältig und reichen von persönlichen bis hin zu gesellschaftlichen Anliegen. Sie scheint eine enge Verbindung zur Natur zu haben, da Motive wie Schafe, Pferde und Blumen in ihren Bildern häufig auftauchen. Darüber hinaus spiegeln ihre Werke gesellschaftliche und politische Anliegen wider, wie beispielsweise der Wunsch nach Gastfreundschaft, Verantwortung und Klimaschutz. Die Vielfalt der Themen zeigt, dass Klöckner eine Künstlerin ist, die sich für viele verschiedene Aspekte des Lebens interessiert und diese in ihrer Kunst zum Ausdruck bringt. + +Emotionen und Interpretation: Klöckners Kunstwerke scheinen starke Emotionen bei den Betrachtern auszulösen. Die Assoziationen anderer Menschen reichen von Freude und Dankbarkeit bis hin zu kritischen Reflexionen über gesellschaftliche Themen. Dies zeigt, dass ihre Kunst eine breite Palette von Gefühlen und Gedanken anspricht und eine Verbindung zu den Betrachtern herstellt. Klöckners Fähigkeit, Emotionen in ihren Kunstwerken zu vermitteln, macht sie zu einer einfühlsamen und ausdrucksstarken Künstlerin. + +Narrative Elemente: In ihren Bildern integriert Klöckner oft narrative Elemente, die eine Geschichte erzählen oder eine tiefere Bedeutung hervorheben. Zum Beispiel verwendet sie Schleifen, Tische und Haken, um Botschaften über Gastfreundschaft, Festlichkeit oder Verantwortung zu vermitteln. Solche Elemente geben ihren Kunstwerken eine zusätzliche Ebene der Komplexität und ermöglichen den Betrachtern, die Bilder eingehender zu erkunden. + +Künstlerische Ambition: Es ist klar erkennbar, dass Kirsten Klöckner eine Künstlerin mit vielseitigen Interessen und einem engagierten Blick auf die Welt ist. Ihre Kunstwerke spiegeln nicht nur ihre künstlerischen Fähigkeiten wider, sondern auch ihre persönlichen Überzeugungen und Gedanken zu verschiedenen Themen. Ihr Werk fordert die Betrachter zum Nachdenken auf und regt Diskussionen über verschiedene Aspekte des Lebens an. + +Dies die Vorgehensweise bei der Entwicklung eines Bildes von Kirsten Klöckner. +Sie hat einen Titel bekommen und dazu ein Bild gemalt. Bitte generiere einen Englischen Prompt für eine Bild KI basierend auf dieser Liste. + +Hier findest du Beispiele, wie der Promt aussehen soll: + +"Portrait of an astronaut in space, detailed starry background, reflective helmet." +“Painting of a floating island with giant clock gears, populated with mythical creatures.” +“Landscape of a Japanese garden in autumn, with a bridge over a koi pond.” +“Painting representing the sound of jazz music, using pale colors and erratic shapes.” +“Painting of a modern smartphone with classic art pieces appearing on the screen.” +“Battle scene with futuristic robots and a golden palace in the background.” +“Painting of a bustling city market with different perspectives of people and stalls.” +“Painting of a ship sailing in a stormy sea, with dramatic lighting and powerful waves.” +“Painting of a female botanist surrounded by exotic plants in a greenhouse.” +“Painting of an ancient castle at night, with a full moon, gargoyles, and shadows.” + +Bitte nutze für den Prompt maximal 20 Wörter und achte darauf, dass der Prompt auf englisch ist. + +Den Titel für den zu erstellenden Promt ist: \ No newline at end of file From 41ee4efccedc20629e6c2a8ea1a941975ee47f05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 4 Aug 2023 15:37:07 +0200 Subject: [PATCH 2/3] ImageMaster3000 ist nach C# umgezogen --- .gitignore | 1 + .../KIKunstKirstenKlöckner.csproj | 1 + KIKunstKirstenKlöckner/Pages/AiArt.razor | 85 +++++++++++++++++-- KIKunstKirstenKlöckner/Pages/_Host.cshtml | 20 ----- .../wwwroot/generated_images/.gitkeep | 0 .../wwwroot/scripts/ImageMaster3000.js | 32 ------- 6 files changed, 79 insertions(+), 60 deletions(-) create mode 100644 KIKunstKirstenKlöckner/wwwroot/generated_images/.gitkeep delete mode 100644 KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js 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 c2767d9..688b363 100644 --- a/KIKunstKirstenKlöckner/Pages/AiArt.razor +++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor @@ -1,6 +1,5 @@ @page "/aiart" @using OpenAI_API -@using Microsoft.AspNetCore.Components.Web @using OpenAI_API.Chat @using OpenAI_API.Models @using System.Diagnostics @@ -8,8 +7,6 @@ @inject TooltipService TooltipService @inject DialogService DialogService -@inject IJSRuntime JSRuntime; - AiArt

Wunschbilder von KI nur für dich

@@ -170,11 +167,83 @@ BusyMessage = newMessage; 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(); + } } private async Task DoStuff() @@ -215,7 +284,7 @@ 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 @@ - - - - - diff --git a/KIKunstKirstenKlöckner/wwwroot/generated_images/.gitkeep b/KIKunstKirstenKlöckner/wwwroot/generated_images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js b/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js deleted file mode 100644 index 7dbf826..0000000 --- a/KIKunstKirstenKlöckner/wwwroot/scripts/ImageMaster3000.js +++ /dev/null @@ -1,32 +0,0 @@ -import { HfInference } from 'https://cdn.jsdelivr.net/npm/@huggingface/inference@2.6.1/+esm'; -import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/hub@0.8.4/+esm"; - -async function DoSexyStuff(prompt) -{ - const HF_ACCESS_TOKEN = "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"; - - const inference = new HfInference(HF_ACCESS_TOKEN); - - const blob = await inference.textToImage({ - //model: 'stabilityai/stable-diffusion-2', - model: 'Nacken/ki-kunst-kirsten-kloeckner-colab', - //inputs: 'award winning high resolution photo of a giant tortoise/((ladybird)) hybrid, [trending on artstation]', - inputs: prompt, - parameters: { - negative_prompt: 'blurry', - } - }) - - const imageUrl = window.URL.createObjectURL(blob); - - return imageUrl; - - //window.open(imageUrl, '_blank'); -} - -// Exportiere die Funktion in den globalen Kontext -window.DoSexyStuff = DoSexyStuff; - -function showAlert(message) { - alert(message); -} \ No newline at end of file From 310cf7fbced60c7adc4fc6fa4b628e48a5d22027 Mon Sep 17 00:00:00 2001 From: klappstuhl24 Date: Fri, 4 Aug 2023 15:41:26 +0200 Subject: [PATCH 3/3] Prompt verbesserungen --- KIKunstKirstenKlöckner/Pages/AiArt.razor | 4 ++-- KIKunstKirstenKlöckner/wwwroot/test_prompt.txt | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/KIKunstKirstenKlöckner/Pages/AiArt.razor b/KIKunstKirstenKlöckner/Pages/AiArt.razor index 7c9ef01..6d74528 100644 --- a/KIKunstKirstenKlöckner/Pages/AiArt.razor +++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor @@ -40,7 +40,7 @@ AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap"> Temperature: + Step="0.1" Min="0.0m" Max="2.0m"> @temperature @@ -71,7 +71,7 @@ - Verändere hier dein Bild durch Worte: + Verändere hier dein Bild durch Worte: await DoStuff(false))>Generate diff --git a/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt b/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt index 07912e9..0b96f43 100644 --- a/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt +++ b/KIKunstKirstenKlöckner/wwwroot/test_prompt.txt @@ -1,15 +1,15 @@ -Kunststil und Techniken: Kirsten Klöckner bevorzugt Aquarell- und Tusche-Materialien auf Papier. Diese Medien ermöglichen ihr, eine Mischung aus transparenten und deckenden Effekten zu erzielen, was ihrer Kunst eine besondere Leichtigkeit und Tiefe verleiht. Sie beherrscht verschiedene Techniken, darunter Federzeichnung, Pinselzeichnung, Nass-in-Nass-Technik, Trocken-auf-Trocken-Technik und Lasur. Diese Vielfalt an Techniken ermöglicht es ihr, unterschiedliche Texturen und Muster zu erzeugen und ihre Kunstwerke mit einer breiten Palette an visuellen Elementen zu gestalten. +Kunststil und Techniken: Kirsten Klöckner ist eine Künstlerin, die sich auf Aquarell- und Tusche-Materialien spezialisiert hat. Diese Techniken erfordern ein hohes Maß an Geschick und Präzision, da sie sowohl transparente als auch deckende Effekte erzeugen kann. Die Verwendung von Papier als Untergrund ermöglicht es ihr, mit verschiedenen Strukturen und Texturen zu experimentieren. Die Vielfalt der Techniken, die sie beherrscht - wie Federzeichnung, Pinselzeichnung, Nass-in-Nass-Technik, Trocken-auf-Trocken-Technik und Lasur - ermöglicht es ihr, ihre künstlerische Vision in unterschiedlichen Ausdrucksformen zu realisieren. -Themen und Motive: Die Themen und Motive in Klöckners Kunst sind vielfältig und reichen von persönlichen bis hin zu gesellschaftlichen Anliegen. Sie scheint eine enge Verbindung zur Natur zu haben, da Motive wie Schafe, Pferde und Blumen in ihren Bildern häufig auftauchen. Darüber hinaus spiegeln ihre Werke gesellschaftliche und politische Anliegen wider, wie beispielsweise der Wunsch nach Gastfreundschaft, Verantwortung und Klimaschutz. Die Vielfalt der Themen zeigt, dass Klöckner eine Künstlerin ist, die sich für viele verschiedene Aspekte des Lebens interessiert und diese in ihrer Kunst zum Ausdruck bringt. +Themen und Motive: Klöckners Kunst zeigt eine breite Palette von Themen und Motiven. Ihre Werke enthalten oft Naturmotive wie Schafe, Pferde und Blumen, die eine Verbindung zur Natur und zum Landleben nahelegen. Gleichzeitig widmet sie sich aber auch gesellschaftlichen und politischen Anliegen, wie zum Beispiel Gastfreundschaft, Verantwortung, Klimaschutz und kritischen Reflektionen über den Alltag. Die Vielfalt der Themen zeigt, dass sie eine Künstlerin ist, die sich für viele Facetten des Lebens interessiert und ihre Kunst als Ausdrucksmittel für verschiedene Gedanken und Gefühle nutzt. -Emotionen und Interpretation: Klöckners Kunstwerke scheinen starke Emotionen bei den Betrachtern auszulösen. Die Assoziationen anderer Menschen reichen von Freude und Dankbarkeit bis hin zu kritischen Reflexionen über gesellschaftliche Themen. Dies zeigt, dass ihre Kunst eine breite Palette von Gefühlen und Gedanken anspricht und eine Verbindung zu den Betrachtern herstellt. Klöckners Fähigkeit, Emotionen in ihren Kunstwerken zu vermitteln, macht sie zu einer einfühlsamen und ausdrucksstarken Künstlerin. +Emotionen und Interpretation: Kirsten Klöckners Kunst scheint stark von Emotionen durchdrungen zu sein, die bei den Betrachtern Resonanz erzeugen. Die Assoziationen und Reaktionen anderer Menschen auf ihre Werke reichen von Freude und Dankbarkeit bis hin zu nachdenklichen Reflexionen über gesellschaftliche Fragen. Dies deutet darauf hin, dass ihre Kunst eine breite Palette von Emotionen anspricht und eine starke Verbindung zu den Betrachtern herstellt. Klöckners Fähigkeit, Emotionen in ihren Werken zu vermitteln, zeugt von ihrer künstlerischen Sensibilität und ihrer Fähigkeit, eine tiefere Ebene der Kommunikation mit ihrem Publikum zu erreichen. -Narrative Elemente: In ihren Bildern integriert Klöckner oft narrative Elemente, die eine Geschichte erzählen oder eine tiefere Bedeutung hervorheben. Zum Beispiel verwendet sie Schleifen, Tische und Haken, um Botschaften über Gastfreundschaft, Festlichkeit oder Verantwortung zu vermitteln. Solche Elemente geben ihren Kunstwerken eine zusätzliche Ebene der Komplexität und ermöglichen den Betrachtern, die Bilder eingehender zu erkunden. +Narrative Elemente: In ihrer Kunst integriert Klöckner oft narrative Elemente, die Geschichten erzählen oder eine tiefere Bedeutung hervorheben. Diese erzählerischen Aspekte tragen dazu bei, dass ihre Werke komplexer und aussagekräftiger werden. Die Verwendung von Symbolen wie Schleifen, Tischen und Haken in ihren Bildern gibt den Betrachtern einen zusätzlichen Anreiz, die Bedeutung hinter den Kunstwerken zu erkunden und sich mit den dargestellten Themen auseinanderzusetzen. -Künstlerische Ambition: Es ist klar erkennbar, dass Kirsten Klöckner eine Künstlerin mit vielseitigen Interessen und einem engagierten Blick auf die Welt ist. Ihre Kunstwerke spiegeln nicht nur ihre künstlerischen Fähigkeiten wider, sondern auch ihre persönlichen Überzeugungen und Gedanken zu verschiedenen Themen. Ihr Werk fordert die Betrachter zum Nachdenken auf und regt Diskussionen über verschiedene Aspekte des Lebens an. +Künstlerische Ambition und Botschaft: Kirsten Klöckner zeigt durch ihre Kunst eine klare Botschaft und Ambition. Ihre Werke sind nicht nur ästhetisch ansprechend, sondern dienen auch als Medium, um ihre persönlichen Überzeugungen und Gedanken zu verschiedenen Themen auszudrücken. Sie fordert die Betrachter dazu auf, über gesellschaftliche Fragen, Naturverbundenheit und das menschliche Dasein nachzudenken. Ihre Kunst regt Diskussionen und Reflexionen an und zeigt, dass sie als Künstlerin eine Botschafterin für verschiedenste Anliegen ist. Dies die Vorgehensweise bei der Entwicklung eines Bildes von Kirsten Klöckner. -Sie hat einen Titel bekommen und dazu ein Bild gemalt. Bitte generiere einen Englischen Prompt für eine Bild KI basierend auf dieser Liste. +Wenn sie einen Titel bekommen hat und dazu ein Bild malen sollte, hat sie so gearbeitet. Bitte generiere einen Englischen Prompt für eine Bild KI basierend auf den gennanten Aspekten. Hier findest du Beispiele, wie der Promt aussehen soll: