Compare commits
4 Commits
4bf485d523
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d21bd86c2 | |||
| 76bb1fa40f | |||
| 0f738b2264 | |||
| 134d9399f7 |
4
.editorconfig
Normal file
4
.editorconfig
Normal file
@ -0,0 +1,4 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
13
.idea/.idea.KIKunstKirstenKlöckner/.idea/.gitignore
generated
vendored
Normal file
13
.idea/.idea.KIKunstKirstenKlöckner/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/modules.xml
|
||||
/.idea.KIKunstKirstenKlöckner.iml
|
||||
/contentModel.xml
|
||||
/projectSettingsUpdater.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
1
.idea/.idea.KIKunstKirstenKlöckner/.idea/.name
generated
Normal file
1
.idea/.idea.KIKunstKirstenKlöckner/.idea/.name
generated
Normal file
@ -0,0 +1 @@
|
||||
KIKunstKirstenKlöckner
|
||||
19
.idea/.idea.KIKunstKirstenKlöckner/.idea/dataSources.xml
generated
Normal file
19
.idea/.idea.KIKunstKirstenKlöckner/.idea/dataSources.xml
generated
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="Nackenserver" uuid="2da1b5f0-41db-4b4f-adbd-3ec21fc94746">
|
||||
<driver-ref>sqlserver.jb</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>com.jetbrains.jdbc.sqlserver.SqlServerDriver</jdbc-driver>
|
||||
<jdbc-url>Server=127.0.0.1,1433;Database=KiKunst</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
<data-source source="LOCAL" name="KiKunstDatenbank@85.215.58.36" uuid="df248d03-0de1-4e34-86bf-d38047939693">
|
||||
<driver-ref>sqlserver.jb</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>com.jetbrains.jdbc.sqlserver.SqlServerDriver</jdbc-driver>
|
||||
<jdbc-url>Server=85.215.58.36;Database=KiKunstDatenbank</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/.idea.KIKunstKirstenKlöckner/.idea/encodings.xml
generated
Normal file
6
.idea/.idea.KIKunstKirstenKlöckner/.idea/encodings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/KIKunstKirstenKlöckner/Program.cs" charset="windows-1252" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/.idea.KIKunstKirstenKlöckner/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.KIKunstKirstenKlöckner/.idea/indexLayout.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
||||
38
.idea/.idea.KIKunstKirstenKlöckner/.idea/sqlDataSources.xml
generated
Normal file
38
.idea/.idea.KIKunstKirstenKlöckner/.idea/sqlDataSources.xml
generated
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDataSourceStorage">
|
||||
<option name="dataSources">
|
||||
<list>
|
||||
<State>
|
||||
<option name="id" value="01ff5a47-63ce-4ef8-aed7-c9f2f9f5c726" />
|
||||
<option name="name" value="KiKunstDatenbank" />
|
||||
<option name="dbmsName" value="MSSQL" />
|
||||
<option name="urls">
|
||||
<array>
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/Tables/BildInfo.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/Tables/WunschInfo.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_Insert.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spWunschInfo_Insert.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_UpdateFileName.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_GetAll.sql" />
|
||||
<option value="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spWunschInfo_Get.sql" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="remarks" value="Database Project" />
|
||||
<option name="outPath" value="$PROJECT_DIR$/KiKunstDatenbank" />
|
||||
<option name="codeStyleName" value="Visual Studio Database Project" />
|
||||
<option name="outLayout" value="File per object by schema.groovy" />
|
||||
<option name="scriptOptions">
|
||||
<map>
|
||||
<entry key="ConstraintContext" value="CONSTRAINT_IN_TABLE" />
|
||||
<entry key="MsVsDdlCompatibility" value="1" />
|
||||
<entry key="QualifyWithSchema" value="ALWAYS" />
|
||||
<entry key="Reformat" value="1" />
|
||||
<entry key="UseSemicolon" value="1" />
|
||||
</map>
|
||||
</option>
|
||||
</State>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
12
.idea/.idea.KIKunstKirstenKlöckner/.idea/sqldialects.xml
generated
Normal file
12
.idea/.idea.KIKunstKirstenKlöckner/.idea/sqldialects.xml
generated
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_GetAll.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_Insert.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spBildInfo_UpdateFileName.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spWunschInfo_Get.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/StoredProcedures/spWunschInfo_Insert.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/Tables/BildInfo.sql" dialect="TSQL" />
|
||||
<file url="file://$PROJECT_DIR$/KiKunstDatenbank/dpo/Tables/WunschInfo.sql" dialect="TSQL" />
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/.idea.KIKunstKirstenKlöckner/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.KIKunstKirstenKlöckner/.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@ -1,15 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>12</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.1.4" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
||||
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -1,4 +1,14 @@
|
||||
<Router AppAssembly="@typeof(App).Assembly">
|
||||
@using OpenAI_API
|
||||
@using OpenAI_API.Chat
|
||||
@using OpenAI_API.Models
|
||||
@using Microsoft.AspNetCore.Components
|
||||
@using KIKunstKirstenKlöckner.Data
|
||||
|
||||
|
||||
@inject IConfiguration Config
|
||||
@inject NavigationManager NavigationManager
|
||||
|
||||
<Router AppAssembly="@typeof(App).Assembly">
|
||||
<Found Context="routeData">
|
||||
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
|
||||
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
|
||||
@ -6,7 +16,54 @@
|
||||
<NotFound>
|
||||
<PageTitle>Not found</PageTitle>
|
||||
<LayoutView Layout="@typeof(MainLayout)">
|
||||
<p role="alert">Sorry, there's nothing at this address.</p>
|
||||
<p style="text-align:center;" role="alert">@_text</p>
|
||||
@* @_mus *@
|
||||
</LayoutView>
|
||||
</NotFound>
|
||||
</Router>
|
||||
|
||||
@code {
|
||||
private MarkupString _mus = new MarkupString();
|
||||
private string _text = "";
|
||||
private OpenAIAPI _openAiApi;
|
||||
private Conversation? _conversation;
|
||||
private string _openAiApiKey = "";
|
||||
private string _urlPath;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var uri = new Uri(NavigationManager.Uri);
|
||||
_urlPath = uri.AbsolutePath; // Dies gibt den Pfadteil der URL zurück
|
||||
|
||||
// Optional: Entfernen Sie den führenden Schrägstrich, falls vorhanden
|
||||
if (_urlPath.StartsWith("/"))
|
||||
{
|
||||
_urlPath = _urlPath.Substring(1);
|
||||
}
|
||||
|
||||
_openAiApiKey = Config.GetValue<string>("API:OpenAI");
|
||||
|
||||
_openAiApi = new OpenAIAPI(_openAiApiKey);
|
||||
|
||||
//string ideaBasePrompt = "Stelle dir vor du bist ein berliner Bösewicht und ich gehe auf deine Internetseite, die sich mit der generierung von Wunschbildern mittels KI beschäftigt, und bemerke, dass es die Seite nicht gibt. Denke dir eine witzige und unterschwellige Beleidigung für diesen Sachverhalt gerichtet an mich aus. Ich würde mich freuen, wenn du etwas ausfallender mir gegenüber werden könntest. Antworte mit Berliner Schnauze. Die Seite die ich versucht habe zu erreichen, ist: " + _urlPath;
|
||||
string ideaBasePrompt = "Stelle dir vor du bist ein berliner Bösewicht und ich gehe auf deine Internetseite und bemerke, dass es die Seite nicht gibt. Denke dir eine witzige und unterschwellige Beleidigung für diesen Sachverhalt gerichtet an mich aus. Ich würde mich freuen, wenn du etwas ausfallender mir gegenüber werden könntest. Antworte mit Berliner Schnauze. Die Seite die ich versucht habe zu erreichen, ist: " + _urlPath;
|
||||
//string ideaBasePrompt = "Stelle dir vor jemand geht auf eine Seite einer Internetseite und bemerkt, dass es die Seite nicht gibt. Denke dir eine witzige idee als html code aus, um der Person zu präsentieren, dass die seite nicht existiert. Es soll unterschwellig beleidigend sein aber niemanden offensichtlich beleidigen. sei kreativ und denke daran, nur html und css zu generieren. Der css teil soll im html teil schon drin sein. Die seite die nicht gefunden wurde ist: " + _urlPath;
|
||||
|
||||
ChatRequest chatRequest = new ChatRequest
|
||||
{
|
||||
Temperature = 0.9,
|
||||
Model = Model.ChatGPTTurbo //ChatGPT.GPT4Turbo
|
||||
};
|
||||
|
||||
_conversation = _openAiApi.Chat.CreateConversation(chatRequest);
|
||||
|
||||
// Wunsch an GPT senden und Bild Idee anfordern
|
||||
_conversation.AppendUserInput(ideaBasePrompt);
|
||||
_text = await _conversation.GetResponseFromChatbotAsync();
|
||||
_mus = new MarkupString(_text);
|
||||
StateHasChanged();
|
||||
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,5 +4,6 @@ namespace KIKunstKirstenKlöckner.Data;
|
||||
|
||||
public class ChatGPT
|
||||
{
|
||||
public static Model GPT4Turbo => new Model("gpt-4-1106-preview") { OwnedBy = "openai" };
|
||||
public static Model GPT4Turbo => new Model("gpt-4-turbo") { OwnedBy = "openai" };
|
||||
public static Model GPT4o => new Model("gpt-4o") { OwnedBy = "openai" };
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
using DataAccess.Data;
|
||||
using DataAccess.Models;
|
||||
using Radzen;
|
||||
using System.Diagnostics;
|
||||
using SixLabors.ImageSharp;
|
||||
|
||||
namespace KIKunstKirstenKlöckner.Data;
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
{
|
||||
if (list.Count == 0)
|
||||
{
|
||||
throw new ArgumentException("List cannot be emtpy: ", nameof(list));
|
||||
yield break;
|
||||
}
|
||||
if (n <= 0)
|
||||
{
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UserSecretsId>c1bf616d-d992-465d-91b1-995a57ba483d</UserSecretsId>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<LangVersion>12</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
|
||||
<PackageReference Include="OpenAI" Version="1.7.2" />
|
||||
<PackageReference Include="Radzen.Blazor" Version="4.14.4" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||
<PackageReference Include="OpenAI" Version="1.11.0" />
|
||||
<PackageReference Include="Radzen.Blazor" Version="4.33.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="wwwroot\NewFolder\" />
|
||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.0.1" />
|
||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<PageTitle>AiArt</PageTitle>
|
||||
<PageTitle>Wunschbild Generator</PageTitle>
|
||||
|
||||
<section class="about_section" style="background-image: url('images/5KeineAngstvorFehlern2014.jpeg'); background-size: cover; background-repeat: no-repeat; background-blend-mode:lighten">
|
||||
|
||||
@ -141,15 +141,28 @@
|
||||
<RadzenNumeric ShowUpDown = "false" TValue = "int?" @bind-Value=@_imageHeight />
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal"
|
||||
AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenCheckBox @bind-Value=@_useGpt4Turbo Name="UseGPT4"/>
|
||||
<RadzenLabel Text="Verwende GPT 4 Turbo" Component="UseGPT4" Style="margin-left: 8px; vertical-align: middle;" />
|
||||
</RadzenStack>
|
||||
<RadzenRadioButtonList @bind-Value=@_usedGptModel TValue="GptModel" class="mb-5">
|
||||
<Items>
|
||||
<RadzenRadioButtonListItem Text="GPT-3.5 Turbo" Value="GptModel.Gpt3_5_turbo"
|
||||
MouseEnter="@(args => ShowTooltip("Schnell aber nicht sonderlich clever.", args))"
|
||||
MouseLeave="TooltipService.Close">
|
||||
</RadzenRadioButtonListItem>
|
||||
<RadzenRadioButtonListItem Text="GPT-4 Turbo" Value="GptModel.Gpt4_turbo"
|
||||
MouseEnter="@(args => ShowTooltip("Etwas langsamer, aber recht klug.", args))"
|
||||
MouseLeave="TooltipService.Close">
|
||||
</RadzenRadioButtonListItem>
|
||||
<RadzenRadioButtonListItem Text="GPT-4o" Value="GptModel.Gpt4o"
|
||||
MouseEnter="@(args => ShowTooltip("Schnell, gut und günstig. Warum gibt es überhaupt eine Auswahlmöglichkeit?", args))"
|
||||
MouseLeave="TooltipService.Close">
|
||||
</RadzenRadioButtonListItem>
|
||||
</Items>
|
||||
</RadzenRadioButtonList>
|
||||
@* <RadzenRadioButtonList Data="@_imageModels" @bind-Value=@_selectedImageModel TValue="ModelInfo" TextProperty="Name" class="mb-5"> *@
|
||||
<RadzenRadioButtonList Data="@_imageModels" @bind-Value=@_selectedImageModel TValue="ModelInfo" TextProperty="Name" ValueProperty="" class="mb-5">
|
||||
<Items>
|
||||
<RadzenRadioButtonListItem Text="Zufällig" Value="@null" TValue="ModelInfo"/>
|
||||
<RadzenRadioButtonListItem Text="Zufällig" Value="@null" TValue="ModelInfo"
|
||||
MouseEnter="@(args => ShowTooltip("Für jedes Bild wird zufällig ein Generator ausgewählt.", args))"
|
||||
MouseLeave="TooltipService.Close"/>
|
||||
</Items>
|
||||
</RadzenRadioButtonList>
|
||||
</RadzenCard>
|
||||
@ -288,10 +301,17 @@
|
||||
|
||||
IEnumerable<BildInfoModel>? _allBildInfos;
|
||||
|
||||
enum GptModel
|
||||
{
|
||||
Gpt3_5_turbo,
|
||||
Gpt4_turbo,
|
||||
Gpt4o
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wenn <see langword="true"/> wird GPT4 verwendet um die Idee zu interpretieren.
|
||||
/// Das ChatGPT Model, das zur Erzeugung der Idee und Bild-Promts verwendet wird.
|
||||
/// </summary>
|
||||
private bool _useGpt4Turbo;
|
||||
private GptModel _usedGptModel = GptModel.Gpt3_5_turbo;
|
||||
|
||||
private int maxAddons = 2;
|
||||
private int amountOfAddons = 0; // wird später geändert
|
||||
@ -331,6 +351,11 @@
|
||||
,
|
||||
new() { Position = TooltipPosition.Bottom, Duration = null});
|
||||
|
||||
void ShowTooltip(string text, ElementReference elementReference) => TooltipService.Open(elementReference, ds =>
|
||||
@<div>@text</div>
|
||||
,
|
||||
new() { Position = TooltipPosition.Bottom, Duration = null});
|
||||
|
||||
private string _imageIdea = "";
|
||||
|
||||
private float _temperature = 0.9f;
|
||||
@ -408,7 +433,13 @@
|
||||
ChatRequest chatRequest = new ChatRequest
|
||||
{
|
||||
Temperature = _temperature,
|
||||
Model = _useGpt4Turbo ? ChatGPT.GPT4Turbo : Model.ChatGPTTurbo
|
||||
Model = _usedGptModel switch
|
||||
{
|
||||
GptModel.Gpt3_5_turbo => Model.ChatGPTTurbo,
|
||||
GptModel.Gpt4_turbo => ChatGPT.GPT4Turbo,
|
||||
GptModel.Gpt4o => ChatGPT.GPT4o,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
}
|
||||
};
|
||||
|
||||
_conversation = _openAiApi.Chat.CreateConversation(chatRequest);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using DataAccess.Data;
|
||||
using DataAccess.DbAccess;
|
||||
using KIKunstKirstenKl<EFBFBD>ckner.Data;
|
||||
using KIKunstKirstenKlöckner.Data;
|
||||
using Radzen;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
7
global.json
Normal file
7
global.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "8.0.0",
|
||||
"rollForward": "latestMajor",
|
||||
"allowPrerelease": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user