68 lines
1.8 KiB
Java
68 lines
1.8 KiB
Java
package de.derpandaa.plinfa.aiprovider;
|
|
|
|
import java.net.URI;
|
|
import java.net.http.HttpRequest;
|
|
import java.util.List;
|
|
|
|
import de.derpandaa.plinfa.dto.AiRequest;
|
|
import de.derpandaa.plinfa.dto.AiResponseDto;
|
|
import de.derpandaa.plinfa.dto.MessageDto;
|
|
import de.derpandaa.plinfa.dto.OpenAiResponseDto;
|
|
import tools.jackson.databind.node.ArrayNode;
|
|
import tools.jackson.databind.node.ObjectNode;
|
|
|
|
public class OpenAiProvider extends AbstractAiProvider {
|
|
public static String API_KEY;
|
|
private static int maxTokens;
|
|
private static OpenAiProvider openAiProvider;
|
|
|
|
public OpenAiProvider() {
|
|
}
|
|
|
|
@Override
|
|
public HttpRequest buildRequest(String jsonBody) {
|
|
return HttpRequest.newBuilder().uri(URI.create("https://api.openai.com/v1/chat/completions"))
|
|
.header("Content-Type", "application/json").header("Authorization", "Bearer " + API_KEY)
|
|
.POST(HttpRequest.BodyPublishers.ofString(jsonBody)).build();
|
|
}
|
|
|
|
@Override
|
|
public List<Model> getModels() {
|
|
|
|
return List.of(new Model("gpt-5-nano", this.getClass()));
|
|
}
|
|
|
|
@Override
|
|
public AiResponseDto parseResponse(String body) {
|
|
return new OpenAiResponseDto(body);
|
|
}
|
|
|
|
@Override
|
|
public String buildRequestBody(AiRequest request) throws Exception {
|
|
|
|
ObjectNode root = mapper.createObjectNode();
|
|
|
|
root.put("model", request.getModel().modelName());
|
|
root.put("max_completion_tokens", request.getMaxTokens());
|
|
|
|
if (request.getSystemPrompt() != null) {
|
|
ArrayNode messages = root.putArray("messages");
|
|
|
|
ObjectNode system = mapper.createObjectNode();
|
|
system.put("role", "system");
|
|
system.put("content", request.getSystemPrompt());
|
|
messages.add(system);
|
|
|
|
for (MessageDto m : request.getMessages()) {
|
|
ObjectNode msg = mapper.createObjectNode();
|
|
msg.put("role", m.getRole().name());
|
|
msg.put("content", m.getContent());
|
|
messages.add(msg);
|
|
}
|
|
}
|
|
|
|
return mapper.writeValueAsString(root);
|
|
}
|
|
|
|
}
|