diff --git a/pom.xml b/pom.xml index 5c81464..5f4fd7d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,10 +4,9 @@ plinfa 0.0.1-SNAPSHOT - 6.10.0 + 6.11.0 3.0.3 - 24 - 24 + 25 diff --git a/src/main/java/de/derpandaa/plinfa/ChatWindow.java b/src/main/java/de/derpandaa/plinfa/ChatWindow.java index c2c1920..6ccf1f8 100644 --- a/src/main/java/de/derpandaa/plinfa/ChatWindow.java +++ b/src/main/java/de/derpandaa/plinfa/ChatWindow.java @@ -6,8 +6,10 @@ import de.derpandaa.plinfa.dto.ChatDto; import de.derpandaa.plinfa.dto.MessageDto; import de.derpandaa.plinfa.dto.MessageDto.Role; import de.derpandaa.plinfa.dto.OpenAiDto; +import io.qt.core.QMetaObject; import io.qt.core.QMimeData; import io.qt.core.Qt.AlignmentFlag; +import io.qt.core.Qt.ConnectionType; import io.qt.core.Qt.TextFormat; import io.qt.gui.QColor; import io.qt.gui.QKeySequence; @@ -163,7 +165,7 @@ public class ChatWindow extends QWidget { OpenAiDto openAiDto = chatDto.getOpenAiDto(); - openAiDto.setModel((de.derpandaa.plinfa.aiprovider.Model) modelComboBox.currentData()); + openAiDto.setModel((Model) modelComboBox.currentData()); MessageDto messageDto = new MessageDto(Role.user, message); openAiDto.addMessage(messageDto); @@ -180,20 +182,21 @@ public class ChatWindow extends QWidget { chatWidget.adjustSize(); try { -// .runAsync(openAiDto, answer -> { -// QMetaObject.invokeMethod(this, () -> { -// chatLayout.removeWidget(loadingWidget); -// loadingWidget.disposeLater(); -// -// openAiDto.addMessage(new MessageDto(Role.assistant, answer)); -// QWidget assistantWidget = createMessage(answer, Role.assistant); -// chatLayout.addWidget(assistantWidget); -// scrollArea.ensureWidgetVisible(assistantWidget); -// chatWidget.adjustSize(); -// chatDto.writeToFile(); -// -// }, ConnectionType.QueuedConnection); -// }); + AiProviderManager.getAiProviderManager().getProviderForModel((Model) modelComboBox.currentData()) + .runAsync(openAiDto, answer -> { + QMetaObject.invokeMethod(this, () -> { + chatLayout.removeWidget(loadingWidget); + loadingWidget.disposeLater(); + + openAiDto.addMessage(new MessageDto(Role.assistant, answer)); + QWidget assistantWidget = createMessage(answer, Role.assistant); + chatLayout.addWidget(assistantWidget); + scrollArea.ensureWidgetVisible(assistantWidget); + chatWidget.adjustSize(); + chatDto.writeToFile(); + + }, ConnectionType.QueuedConnection); + }); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/de/derpandaa/plinfa/aiprovider/AbstractAiProvider.java b/src/main/java/de/derpandaa/plinfa/aiprovider/AbstractAiProvider.java index cc77bf2..9b329aa 100644 --- a/src/main/java/de/derpandaa/plinfa/aiprovider/AbstractAiProvider.java +++ b/src/main/java/de/derpandaa/plinfa/aiprovider/AbstractAiProvider.java @@ -14,9 +14,6 @@ import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; public abstract class AbstractAiProvider { - public enum Provider { - OPEN_AI - } protected static final ObjectMapper mapper = new ObjectMapper(); @@ -54,6 +51,7 @@ public abstract class AbstractAiProvider { String jsonBody = mapper.writeValueAsString(dto); HttpRequest request = buildRequest(jsonBody); + System.out.println(jsonBody); HttpClient client = HttpClient.newHttpClient(); client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body) diff --git a/src/main/java/de/derpandaa/plinfa/aiprovider/AiProviderManager.java b/src/main/java/de/derpandaa/plinfa/aiprovider/AiProviderManager.java index e34b1a2..562ea1d 100644 --- a/src/main/java/de/derpandaa/plinfa/aiprovider/AiProviderManager.java +++ b/src/main/java/de/derpandaa/plinfa/aiprovider/AiProviderManager.java @@ -31,4 +31,13 @@ public class AiProviderManager { return models; } + public AbstractAiProvider getProviderForModel(Model model) { + for (AbstractAiProvider aiProvider : providers) { + if (model.clazz().equals(aiProvider.getClass())) { + return aiProvider; + } + } + return null; + } + } diff --git a/src/main/java/de/derpandaa/plinfa/aiprovider/Model.java b/src/main/java/de/derpandaa/plinfa/aiprovider/Model.java index 091f020..804e614 100644 --- a/src/main/java/de/derpandaa/plinfa/aiprovider/Model.java +++ b/src/main/java/de/derpandaa/plinfa/aiprovider/Model.java @@ -1,11 +1,16 @@ package de.derpandaa.plinfa.aiprovider; -import de.derpandaa.plinfa.aiprovider.AbstractAiProvider.Provider; +import com.fasterxml.jackson.annotation.JsonValue; -public record Model(String modelName, Provider provider) { +public record Model(String modelName, Class clazz) { @Override public String toString() { return modelName; } + @JsonValue + public String modelName() { + return modelName; + } + } diff --git a/src/main/java/de/derpandaa/plinfa/aiprovider/OpenAiProvider.java b/src/main/java/de/derpandaa/plinfa/aiprovider/OpenAiProvider.java index bae0abc..70aa27a 100644 --- a/src/main/java/de/derpandaa/plinfa/aiprovider/OpenAiProvider.java +++ b/src/main/java/de/derpandaa/plinfa/aiprovider/OpenAiProvider.java @@ -25,7 +25,7 @@ public class OpenAiProvider extends AbstractAiProvider { @Override public List getModels() { - return List.of(new Model("gpt-5-nano", Provider.OPEN_AI)); + return List.of(new Model("gpt-5-nano", this.getClass())); } @Override diff --git a/src/main/java/de/derpandaa/plinfa/dto/OpenAiDto.java b/src/main/java/de/derpandaa/plinfa/dto/OpenAiDto.java index 3b4a979..0aa5b13 100644 --- a/src/main/java/de/derpandaa/plinfa/dto/OpenAiDto.java +++ b/src/main/java/de/derpandaa/plinfa/dto/OpenAiDto.java @@ -19,7 +19,7 @@ public class OpenAiDto { @JsonProperty("messages") private List messages; - @JsonProperty("max_tokens") + @JsonProperty("max_completion_tokens") private int maxTokens; public OpenAiDto() { @@ -28,6 +28,7 @@ public class OpenAiDto { public OpenAiDto(int maxTokens) { this.maxTokens = maxTokens; + this.messages = new ArrayList(); } public OpenAiDto(Model model) {