Fix: Remove all OpenAI references and correctly configure Ollama for KI generation

This commit is contained in:
rewa81 committed 2026-01-02 18:06:27 +01:00
1 parent a286267fc3
commit 76c6b17a80
6 files changed
+1134 -314

No files matched your search

+1123 -244
View File
File diff suppressed because it is too large. Load diff
+5 -14
View File
@@ -2,22 +2,13 @@ package ch.rwcloud
import ai.koog.ktor.Koog
import ai.koog.ktor.aiAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import com.fasterxml.jackson.databind.*
import io.ktor.serialization.jackson.*
import io.ktor.serialization.kotlinx.json.*
import ai.koog.prompt.llm.LLMCapability
import ai.koog.prompt.llm.LLMProvider
import ai.koog.prompt.llm.LLModel
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.csrf.*
import io.ktor.server.routing.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import kotlin.random.Random
import kotlinx.html.*
import kotlinx.serialization.Serializable
fun Application.configureFrameworks() {
install(Koog) {
@@ -32,7 +23,7 @@ fun Application.configureFrameworks() {
route("/ai") {
post("/chat") {
val userInput = call.receive<String>()
val output = aiAgent(userInput, model = ai.koog.prompt.executor.clients.openai.OpenAIModels.Chat.GPT4_1)
val output = aiAgent(userInput, model = LLModel(id = "ministral-3:latest", provider = LLMProvider.Ollama, capabilities = listOf(LLMCapability.Completion), contextLength = 4096))
call.respondText(output)
}
}
+5 -18
View File
@@ -2,24 +2,14 @@ package ch.rwcloud
import ai.koog.ktor.Koog
import ai.koog.ktor.aiAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import com.fasterxml.jackson.databind.*
import io.ktor.serialization.jackson.*
import io.ktor.serialization.kotlinx.json.*
import ai.koog.prompt.llm.LLMCapability
import ai.koog.prompt.llm.LLMProvider
import ai.koog.prompt.llm.LLModel
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.csrf.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import kotlin.random.Random
import kotlinx.html.*
import kotlinx.serialization.Serializable
import io.ktor.server.request.*
import java.time.LocalTime
import java.time.format.DateTimeFormatter
import org.apache.commons.mail.SimpleEmail
@@ -67,11 +57,8 @@ fun Application.configureRouting() {
val generatedEmail = try {
application.log.info("Starte KI-Generierung mit Prompt: $prompt")
// Da OllamaModels nicht direkt auflösbar ist, nutzen wir eine generische LLModel-Ansprache
// falls das Framework das unterstützt, oder wir bleiben beim Catch-Block.
// In Koog 0.5.1 scheint der Zugriff auf Ollama über ai.koog.prompt.executor.clients.ollama.OllamaModels.Chat möglich zu sein.
// Da der Compiler meckert, versuchen wir es mit einem Trick:
aiAgent(prompt, model = ai.koog.prompt.executor.clients.openai.OpenAIModels.Chat.GPT4_1)
// Verwende Ollama mit dem konfigurierten Modell ministral-3:latest
aiAgent(prompt, model = LLModel(id = "ministral-3:latest", provider = LLMProvider.Ollama, capabilities = listOf(LLMCapability.Completion), contextLength = 4096))
} catch (e: Exception) {
application.log.error("Fehler beim KI-Aufruf", e)
"--- Bestellung Behindertentransport ---\n\n$data\n\n(Hinweis: KI-Generierung war nicht möglich, Daten wurden manuell formatiert.)"
-12
View File
@@ -1,22 +1,10 @@
package ch.rwcloud
import ai.koog.ktor.Koog
import ai.koog.ktor.aiAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import com.fasterxml.jackson.databind.*
import io.ktor.serialization.jackson.*
import io.ktor.serialization.kotlinx.json.*
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.csrf.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import kotlin.random.Random
import kotlinx.html.*
import kotlinx.serialization.Serializable
fun Application.configureSecurity() {
+1 -13
View File
@@ -1,23 +1,11 @@
package ch.rwcloud
import ai.koog.ktor.Koog
import ai.koog.ktor.aiAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import com.fasterxml.jackson.databind.*
import io.ktor.serialization.jackson.*
import io.ktor.serialization.kotlinx.json.*
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.csrf.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import kotlin.random.Random
import kotlinx.html.*
import kotlinx.serialization.Serializable
import com.fasterxml.jackson.databind.*
fun Application.configureSerialization() {
install(ContentNegotiation) {
-13
View File
@@ -1,23 +1,10 @@
package ch.rwcloud
import ai.koog.ktor.Koog
import ai.koog.ktor.aiAgent
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import com.fasterxml.jackson.databind.*
import io.ktor.serialization.jackson.*
import io.ktor.serialization.kotlinx.json.*
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.csrf.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import kotlin.random.Random
import kotlinx.html.*
import kotlinx.serialization.Serializable
fun HTML.transportPage() {
head {