From 217718d8f78e9e54f23209458d865de341a3d4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radim=20Lipov=C4=8Dan?= Date: Fri, 29 Mar 2024 18:56:28 +0100 Subject: [PATCH] Aktualizovat src/main/java/it/ohalee/minecraftgpt/OpenAI.java --- .../java/it/ohalee/minecraftgpt/OpenAI.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/it/ohalee/minecraftgpt/OpenAI.java b/src/main/java/it/ohalee/minecraftgpt/OpenAI.java index 372eeb1..45893df 100644 --- a/src/main/java/it/ohalee/minecraftgpt/OpenAI.java +++ b/src/main/java/it/ohalee/minecraftgpt/OpenAI.java @@ -59,3 +59,35 @@ public class OpenAI { } } + +public class CustomOpenAiService extends OpenAiService { + private final ExecutorService executorService; + private final String openaiBaseUrl = "http://frigate.lipovcan.cz:3001"; + + public CustomOpenAiService(String token, Duration timeout) { + super(token, timeout); + ObjectMapper mapper = OpenAiService.defaultObjectMapper(); + OkHttpClient client = OpenAiService.defaultClient(token, timeout); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl(openaiBaseUrl) + .client(client) + .addConverterFactory(JacksonConverterFactory.create(mapper)) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build(); + + OpenAiApi customApi = retrofit.create(OpenAiApi.class); + + // 使用反射设置 OpenAiService 类的 api 字段 + try { + Field apiField = OpenAiService.class.getDeclaredField("api"); + apiField.setAccessible(true); + apiField.set(this, customApi); + } catch (NoSuchFieldException | IllegalAccessException e) { + // 处理异常 + e.printStackTrace(); + } + + this.executorService = client.dispatcher().executorService(); + } +}