From e4cd769f5529bd6a89a0965dbc9ec2dbb7e2b638 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Fri, 22 Sep 2023 16:09:29 +0000 Subject: [PATCH 01/86] change: back to HM --- img/logo.svg | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/img/logo.svg b/img/logo.svg index eb78004..86ffe9c 100644 --- a/img/logo.svg +++ b/img/logo.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + + + From 77bf875d95b67fed6b470fcd7941fd63f99fd434 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Fri, 22 Sep 2023 16:10:03 +0000 Subject: [PATCH 02/86] change: filename until sso redirect update --- oidc_login.php => oic_login.php | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename oidc_login.php => oic_login.php (100%) diff --git a/oidc_login.php b/oic_login.php similarity index 100% rename from oidc_login.php rename to oic_login.php From 8d4be88078f9ca33d3242a2733db16e396f664a7 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Fri, 22 Sep 2023 16:15:51 +0000 Subject: [PATCH 03/86] change: login until redirect update --- login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login.php b/login.php index b7ad063..2b36cfb 100644 --- a/login.php +++ b/login.php @@ -158,7 +158,7 @@ function auth( $login_available = true; $oidc_login = isset($env) ? $env["OIDC_LOGIN_BUTTON"] ??'Login' : getenv("OIDC_LOGIN_BUTTON"); // Option for changing login button echo - "
+ "
"; } From e783f21cb9220bfde54d2739a4a75e58ee20648a Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Mon, 25 Sep 2023 07:25:15 +0000 Subject: [PATCH 04/86] change: filename --- login.php | 2 +- oic_login.php => oidc_login.php | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename oic_login.php => oidc_login.php (100%) diff --git a/login.php b/login.php index 2b36cfb..b7ad063 100644 --- a/login.php +++ b/login.php @@ -158,7 +158,7 @@ function auth( $login_available = true; $oidc_login = isset($env) ? $env["OIDC_LOGIN_BUTTON"] ??'Login' : getenv("OIDC_LOGIN_BUTTON"); // Option for changing login button echo - "
+ "
"; } diff --git a/oic_login.php b/oidc_login.php similarity index 100% rename from oic_login.php rename to oidc_login.php From 4596f066da8aa207e2ae74b2af311abaf270ed0b Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Mon, 25 Sep 2023 08:51:53 +0000 Subject: [PATCH 05/86] change: title to HM-KI --- interface.php | 2 +- login.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface.php b/interface.php index 9c1de3a..2177295 100644 --- a/interface.php +++ b/interface.php @@ -8,7 +8,7 @@ ?> - HAWKI + HM-KI - HAWKI + HM-KI Date: Mon, 25 Sep 2023 12:24:50 +0000 Subject: [PATCH 06/86] change: about section --- interface.php | 2 +- views/about.htm | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/interface.php b/interface.php index 2177295..d82f1a7 100644 --- a/interface.php +++ b/interface.php @@ -110,7 +110,7 @@
- Über HAWKI + Über HM-KI Feedback -

Über HAWK-KI

-

Das Angebot wurde im Interaction Design Lab der HAWK entwickelt, um allen Hochschulangehörigen die Möglichkeit zu geben, künstliche Intelligenz in die Arbeitsprozesse zu integrieren und einen Begegnungsraum zu haben, damit sich eventuell neue Arbeitsweisen ergeben und eine hochschulinterne Diskussion über den Einsatz von K.I. entstehen kann. Dieses Angebot möchte auch didaktisch unterstützen, ein Verständnis für die Wirkungsweise eines solchen Sprachmodells zu entwickeln und gibt daher in den verschiedenen Bereichen auch Hinweise auf gut funktionierende Prompts (Texteingaben). Wir freuen uns über konstruktives Feedback, um dieses Angebot entsprechend Ihren Bedürfnissen und Erkenntnissen weiterzuentwickeln.

-

- Prof. Stefan Wölwer | Digital Environments | Interaction Design
- Jonas Trippler | Wissenschaftlicher Mitarbeiter | Hands On
- Vincent Timm | Wissenschaftlicher Mitarbeiter | Leitung Interaction Design Lab

+

Über HM-KI (HAWK-KI)

+

Das Angebot wurde auf Basis der Entwicklung der Kollegen der HAWK vom Interaction Design Lab + für die HM angepasst und weiterentwickelt, um allen Hochschulangehörigen die Möglichkeit zu geben, + künstliche Intelligenz in die Arbeitsprozesse zu integrieren und einen Begegnungsraum zu haben, damit sich eventuell neue Arbeitsweisen + ergeben und eine hochschulinterne Diskussion über den Einsatz von K.I. entstehen kann. Dieses Angebot möchte auch didaktisch unterstützen, ein Verständnis für die Wirkungsweise eines solchen Sprachmodells zu entwickeln + und gibt daher in den verschiedenen Bereichen auch Hinweise auf gut funktionierende Prompts (Texteingaben). + Wir freuen uns über konstruktives Feedback, um dieses Angebot entsprechend Ihren Bedürfnissen und Erkenntnissen zusammen mit der HAWK weiterzuentwickeln.

+ +

+ Tobias Irlinger | Leitung IT
+ Mehmet Sagir | Praktikant IT | Entwickler
+
+ Team der HAWK:
+ Prof. Stefan Wölwer | Digital Environments | Interaction Design
+ Jonas Trippler | Wissenschaftlicher Mitarbeiter | Hands On
+ Vincent Timm | Wissenschaftlicher Mitarbeiter | Leitung Interaction Design Lab
+
+ Quellcode:
+ github +

\ No newline at end of file + + + + + + + + + + + From dfe5c6bb4cdc865d4c79ce43de6d3c7a525c0116 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Fri, 22 Sep 2023 16:10:03 +0000 Subject: [PATCH 27/86] change: filename until sso redirect update --- oidc_login.php => oic_login.php | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename oidc_login.php => oic_login.php (100%) diff --git a/oidc_login.php b/oic_login.php similarity index 100% rename from oidc_login.php rename to oic_login.php From f78deef27b2161aacfdde42da0ab10883bcecb06 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Fri, 22 Sep 2023 16:15:51 +0000 Subject: [PATCH 28/86] change: login until redirect update --- login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login.php b/login.php index b7ad063..2b36cfb 100644 --- a/login.php +++ b/login.php @@ -158,7 +158,7 @@ function auth( $login_available = true; $oidc_login = isset($env) ? $env["OIDC_LOGIN_BUTTON"] ??'Login' : getenv("OIDC_LOGIN_BUTTON"); // Option for changing login button echo - "
+ "
"; } From eb8c1618b0f88194ce86e8a9b0d3a9f38360b757 Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Mon, 25 Sep 2023 07:25:15 +0000 Subject: [PATCH 29/86] change: filename --- login.php | 2 +- oic_login.php => oidc_login.php | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename oic_login.php => oidc_login.php (100%) diff --git a/login.php b/login.php index 2b36cfb..b7ad063 100644 --- a/login.php +++ b/login.php @@ -158,7 +158,7 @@ function auth( $login_available = true; $oidc_login = isset($env) ? $env["OIDC_LOGIN_BUTTON"] ??'Login' : getenv("OIDC_LOGIN_BUTTON"); // Option for changing login button echo - "
+ "
"; } diff --git a/oic_login.php b/oidc_login.php similarity index 100% rename from oic_login.php rename to oidc_login.php From e05d8e8b23bfae8a70da02d106cb2d77ffc1558a Mon Sep 17 00:00:00 2001 From: Mehmet Sagir Date: Mon, 25 Sep 2023 08:51:53 +0000 Subject: [PATCH 30/86] change: title to HM-KI --- interface.php | 18 ++++++++++++++++++ login.php | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/interface.php b/interface.php index 6a433ff..e64426b 100644 --- a/interface.php +++ b/interface.php @@ -14,6 +14,24 @@ } ?> + + HM-KI + + + '; + } + ?> + + + + diff --git a/login.php b/login.php index b7ad063..f01de6a 100644 --- a/login.php +++ b/login.php @@ -127,7 +127,7 @@ function auth( - HAWKI + HM-KI Date: Mon, 25 Sep 2023 12:24:50 +0000 Subject: [PATCH 31/86] change: about section --- interface.php | 2 +- views/about.htm | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/interface.php b/interface.php index e64426b..970fc8a 100644 --- a/interface.php +++ b/interface.php @@ -134,7 +134,7 @@
- Über HAWK-KI + Über HM-KI Feedback Abmelden
diff --git a/views/about.htm b/views/about.htm index 835e3bc..b4e812f 100644 --- a/views/about.htm +++ b/views/about.htm @@ -1,11 +1,25 @@
-

Über HAWK-KI

-

Das Angebot wurde im Interaction Design Lab der HAWK entwickelt, um allen Hochschulangehörigen die Möglichkeit zu geben, künstliche Intelligenz in die Arbeitsprozesse zu integrieren und einen Begegnungsraum zu haben, damit sich eventuell neue Arbeitsweisen ergeben und eine hochschulinterne Diskussion über den Einsatz von K.I. entstehen kann. Dieses Angebot möchte auch didaktisch unterstützen, ein Verständnis für die Wirkungsweise eines solchen Sprachmodells zu entwickeln und gibt daher in den verschiedenen Bereichen auch Hinweise auf gut funktionierende Prompts (Texteingaben). Wir freuen uns über konstruktives Feedback, um dieses Angebot entsprechend Ihren Bedürfnissen und Erkenntnissen weiterzuentwickeln.

-

- Prof. Stefan Wölwer | Digital Environments | Interaction Design
- Jonas Trippler | Wissenschaftlicher Mitarbeiter | Hands On
- Vincent Timm | Wissenschaftlicher Mitarbeiter | Leitung Interaction Design Lab

+

Über HM-KI (HAWK-KI)

+

Das Angebot wurde auf Basis der Entwicklung der Kollegen der HAWK vom Interaction Design Lab + für die HM angepasst und weiterentwickelt, um allen Hochschulangehörigen die Möglichkeit zu geben, + künstliche Intelligenz in die Arbeitsprozesse zu integrieren und einen Begegnungsraum zu haben, damit sich eventuell neue Arbeitsweisen + ergeben und eine hochschulinterne Diskussion über den Einsatz von K.I. entstehen kann. Dieses Angebot möchte auch didaktisch unterstützen, ein Verständnis für die Wirkungsweise eines solchen Sprachmodells zu entwickeln + und gibt daher in den verschiedenen Bereichen auch Hinweise auf gut funktionierende Prompts (Texteingaben). + Wir freuen uns über konstruktives Feedback, um dieses Angebot entsprechend Ihren Bedürfnissen und Erkenntnissen zusammen mit der HAWK weiterzuentwickeln.

+ +

+ Tobias Irlinger | Leitung IT
+ Mehmet Sagir | Praktikant IT | Entwickler
+
+ Team der HAWK:
+ Prof. Stefan Wölwer | Digital Environments | Interaction Design
+ Jonas Trippler | Wissenschaftlicher Mitarbeiter | Hands On
+ Vincent Timm | Wissenschaftlicher Mitarbeiter | Leitung Interaction Design Lab
+
+ Quellcode:
+ github +

\ No newline at end of file From cca77aa47466a6107793c50774cb4b60c4e57c8d Mon Sep 17 00:00:00 2001 From: Dominik Bayerl Date: Tue, 19 Dec 2023 23:11:57 +0100 Subject: [PATCH 55/86] Interface: escape user input. This prevents local HTML injection. Signed-off-by: Dominik Bayerl --- interface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface.php b/interface.php index 006ce30..aca44d4 100644 --- a/interface.php +++ b/interface.php @@ -446,7 +446,7 @@ function addMessage(message){ const inputField = document.querySelector(".input-field"); const messageElement = messageTemplate.content.cloneNode(true); - messageElement.querySelector(".message-text").innerHTML = message.content; + messageElement.querySelector(".message-text").innerHTML = escapeHTML(message.content); messageElement.querySelector(".message").dataset.role = message.role; if(message.role == "assistant"){ From 2faa3477e786df55d0d0b9405b658de827c636f1 Mon Sep 17 00:00:00 2001 From: Dominik Bayerl Date: Tue, 19 Dec 2023 23:37:39 +0100 Subject: [PATCH 56/86] Decouple message content from representation. This allows us to sanitize the user input, while still passing the original text to the OpenAI API. Signed-off-by: Dominik Bayerl --- interface.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/interface.php b/interface.php index aca44d4..a9788e3 100644 --- a/interface.php +++ b/interface.php @@ -346,7 +346,7 @@ function handleKeydown(event){ messageElements.forEach(messageElement => { let messageObject = {}; messageObject.role = messageElement.dataset.role; - messageObject.content = messageElement.querySelector(".message-text").textContent; + messageObject.content = messageElement.dataset.content; requestObject.messages.push(messageObject); }) @@ -406,8 +406,8 @@ function handleKeydown(event){ if ("choices" in json) { // console.log(json["choices"]); // normal response - document.querySelector(".message:last-child").querySelector(".message-text").innerHTML += - json["choices"][0]["delta"].content; + document.querySelector(".message:last-child").dataset.content += json["choices"][0]["delta"].content; + document.querySelector(".message:last-child").querySelector(".message-text").innerHTML += escapeHTML(json["choices"][0]["delta"].content); } else { if ("error" in json) { if ("message" in json.error) { @@ -427,6 +427,8 @@ function handleKeydown(event){ } }) + document.querySelector(".message:last-child").querySelector(".message-text").innerHTML = document.querySelector(".message:last-child").querySelector(".message-text").innerHTML.replace(/```([\s\S]+?)```/g, '
$1
').replace(/\*\*.*?\*\*/g, '');; + hljs.highlightAll(); scrollToLast(); } } @@ -448,6 +450,8 @@ function addMessage(message){ messageElement.querySelector(".message-text").innerHTML = escapeHTML(message.content); messageElement.querySelector(".message").dataset.role = message.role; + messageElement.querySelector(".message").dataset.content = message.content; + if(message.role == "assistant"){ messageElement.querySelector(".message-icon").textContent = "AI"; From 4e515c56151f57f4097a3ce937fffa16251748d5 Mon Sep 17 00:00:00 2001 From: Dominik Bayerl Date: Wed, 20 Dec 2023 10:26:43 +0100 Subject: [PATCH 57/86] Please do not the Cloudflare. Signed-off-by: Dominik Bayerl --- composer.json | 6 ++++-- interface.php | 7 ++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 61c8173..8ac1f5a 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,7 @@ { "require": { - "jumbojett/openid-connect-php": "^0.9.10" + "jumbojett/openid-connect-php": "^0.9.10", + "thenetworg/oauth2-azure": "^2.2", + "components/highlightjs": "^9.16" } -} \ No newline at end of file +} diff --git a/interface.php b/interface.php index a9788e3..35d3fb7 100644 --- a/interface.php +++ b/interface.php @@ -1,9 +1,6 @@ - - - - - + + Date: Wed, 20 Dec 2023 10:45:03 +0100 Subject: [PATCH 58/86] Sanitize & Validate the API request objects. This is an attempt to prevent resource exhaustion attacks by abusing the `n` argument. Signed-off-by: Dominik Bayerl --- api.php | 19 +++++++++++++++++-- stream-api.php | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/api.php b/api.php index 64017cb..006ad71 100644 --- a/api.php +++ b/api.php @@ -1,4 +1,7 @@ $url, CURLOPT_POST => true, CURLOPT_HTTPHEADER => $headers, - CURLOPT_POSTFIELDS => $data, + CURLOPT_POSTFIELDS => $payload, CURLOPT_RETURNTRANSFER => true ); diff --git a/stream-api.php b/stream-api.php index 23610ed..07ee790 100644 --- a/stream-api.php +++ b/stream-api.php @@ -1,5 +1,7 @@ Date: Wed, 20 Dec 2023 11:38:18 +0100 Subject: [PATCH 59/86] Use message innerHTML if no explicit `content` is set. --- interface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface.php b/interface.php index 35d3fb7..675d223 100644 --- a/interface.php +++ b/interface.php @@ -343,7 +343,7 @@ function handleKeydown(event){ messageElements.forEach(messageElement => { let messageObject = {}; messageObject.role = messageElement.dataset.role; - messageObject.content = messageElement.dataset.content; + messageObject.content = messageElement.dataset.content || messageElement.querySelector(".message-text").innerHTML; requestObject.messages.push(messageObject); }) From ee68c07163577c9eb1dc98cedc2660e0c0c4c4f4 Mon Sep 17 00:00:00 2001 From: Florian Ritterhoff Date: Thu, 21 Dec 2023 09:30:23 +0100 Subject: [PATCH 60/86] fix interface.php --- interface.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/interface.php b/interface.php index 675d223..13054be 100644 --- a/interface.php +++ b/interface.php @@ -1,6 +1,4 @@ - - - + - + + - -