From 42f2202abc566cddfa57bb12a6dc4caf5ef4b9b1 Mon Sep 17 00:00:00 2001 From: ljcleo Date: Mon, 31 Jul 2023 18:57:18 +0800 Subject: [PATCH] allow custom base url update openai-java version include .vscode in gitignore --- .gitignore | 1 + pom.xml | 7 +++++- src/main/java/com/theaiguy_/craftgpt/gpt.java | 23 +++++++++++++++++-- src/main/resources/config.yml | 5 ++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 6a3dda3..91e931f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +.vscode target pom.xml CraftGPT.iml diff --git a/pom.xml b/pom.xml index f6e235f..d6535c8 100644 --- a/pom.xml +++ b/pom.xml @@ -85,7 +85,7 @@ com.theokanning.openai-gpt3-java service - 0.12.0 + 0.14.0 compile @@ -106,5 +106,10 @@ 4.3.0 compile + + io.github.zawn.retrofit2 + converter-jackson + 2.10.6 + diff --git a/src/main/java/com/theaiguy_/craftgpt/gpt.java b/src/main/java/com/theaiguy_/craftgpt/gpt.java index c3fd9aa..2c1234f 100644 --- a/src/main/java/com/theaiguy_/craftgpt/gpt.java +++ b/src/main/java/com/theaiguy_/craftgpt/gpt.java @@ -1,11 +1,18 @@ package com.theaiguy_.craftgpt; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.theokanning.openai.client.OpenAiApi; import com.theokanning.openai.completion.chat.ChatCompletionRequest; import com.theokanning.openai.completion.chat.ChatMessage; import com.theokanning.openai.service.OpenAiService; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; + import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -22,6 +29,7 @@ public class gpt implements CommandExecutor public static final HashMap> messages = new HashMap<>(); private static final HashMap cooldowns = new HashMap<>(); static Long cooldownMs = config.getLong("cooldown"); + static String baseUrl = config.getString("chatgpt.base-url"); static String token = config.getString("chatgpt.token"); @@ -63,7 +71,18 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command { adventure.sender(sender).sendMessage(getFormattedString("messages.generating")); - OpenAiService service = new OpenAiService(Objects.requireNonNull(token), Duration.ofMinutes(3)); + ObjectMapper mapper = OpenAiService.defaultObjectMapper(); + OkHttpClient client = OpenAiService.defaultClient(Objects.requireNonNull(token), Duration.ofMinutes(3)); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl(Objects.requireNonNull(baseUrl)) + .client(client) + .addConverterFactory(JacksonConverterFactory.create(mapper)) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build(); + + OpenAiService service = new OpenAiService(retrofit.create(OpenAiApi.class), client.dispatcher().executorService()); + ChatCompletionRequest.ChatCompletionRequestBuilder completionRequestBuilder = ChatCompletionRequest.builder() .messages(messages.get(sender.getName())) .model(config.getString("chatgpt.model")) @@ -94,4 +113,4 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command }); return true; } -} \ No newline at end of file +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0185b04..97a8da5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -40,6 +40,11 @@ chatgpt: # NOTE: This is only stored locally and is not used for anything other than making requests. token: "" + # API base url. + # Change this if you wish to use alternative API endpoints (e.g. https://api.openai-proxy.com/). + # Make sure that it is compatible with OpenAI API calls. + base-url: https://api.openai.com/ + # ID of the model to use. # See https://platform.openai.com/docs/models/model-endpoint-compatibility # for details on which models work with the Chat API.