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 extends AbstractAiProvider> 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) {