Merge branch 'main' of https://gitfrieds.nackenbox.xyz/Gottfried/KI-Kunst-Kirsten-Kloeckner
This commit is contained in:
@ -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;
|
||||
|
||||
<PageTitle>AiArt</PageTitle>
|
||||
|
||||
<h1>Wunschbilder von KI nur für dich</h1>
|
||||
@ -42,7 +39,7 @@
|
||||
AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenText>Temperature:</RadzenText>
|
||||
<RadzenSlider @bind-Value=@temperature TValue="float"
|
||||
Step="0.0001" Min="0.0m" Max="2.0m">
|
||||
Step="0.1" Min="0.0m" Max="2.0m">
|
||||
</RadzenSlider>
|
||||
<RadzenText>@temperature</RadzenText>
|
||||
</RadzenStack>
|
||||
@ -73,7 +70,7 @@
|
||||
|
||||
<RadzenImage Path=@_imageUrl></RadzenImage>
|
||||
|
||||
<RadzenText Visible=@_addonsVisible TextStyle="TextStyle.H4">Verändere hier dein Bild durch Worte:</RadzenText>
|
||||
<RadzenText Visible=@_addonsVisible TextStyle="TextStyle.H2">Verändere hier dein Bild durch Worte:</RadzenText>
|
||||
<RadzenTextBox Visible=@_addonsVisible @bind-Value=@addons Placeholder="Mehr Farben" />
|
||||
<RadzenButton Visible=@_bothVisible Click=@(async ()=> await DoStuff(false))>Generate</RadzenButton>
|
||||
|
||||
@ -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<string>("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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Geneiert das Bild für den aktuellen <see cref="_imagePrompt"/>
|
||||
/// </summary>
|
||||
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();
|
||||
|
||||
|
||||
@ -34,25 +34,5 @@
|
||||
</div>
|
||||
|
||||
<script src="_framework/blazor.server.js"></script>
|
||||
|
||||
<script type="module" src="scripts/ImageMaster3000.js"></script>
|
||||
|
||||
<script>
|
||||
window.DoSexyStuffBridge = async function (prompt)
|
||||
{
|
||||
// Stellen Sie sicher, dass das Modul geladen und die Funktion verfügbar ist
|
||||
if (typeof DoSexyStuff === "function")
|
||||
{
|
||||
return await DoSexyStuff(prompt);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.error("Die Funktion DoSexyStuff ist nicht verfügbar.");
|
||||
|
||||
return "Error";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user