Skip to content

Commit d1a5098

Browse files
authored
Merge pull request #14 from LIlGG/fix/proxy
fix: 修复代理无效的问题
2 parents 88ddd63 + 48d0595 commit d1a5098

3 files changed

Lines changed: 18 additions & 7 deletions

File tree

src/main/java/run/halo/live2d/openai/service/OpenAiService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package run.halo.live2d.openai.service;
22

3+
import com.fasterxml.jackson.databind.JsonNode;
34
import com.theokanning.openai.completion.chat.ChatCompletionChunk;
45
import com.theokanning.openai.completion.chat.ChatCompletionRequest;
56
import com.theokanning.openai.completion.chat.ChatCompletionResult;
@@ -9,4 +10,6 @@ public interface OpenAiService {
910
ChatCompletionResult createChatCompletion(ChatCompletionRequest request);
1011

1112
Flowable<ChatCompletionChunk> streamChatCompletion(ChatCompletionRequest request);
13+
14+
JsonNode getOpenAiConfig();
1215
}

src/main/java/run/halo/live2d/openai/service/impl/OpenAIServiceImpl.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public static OpenAiService getOpenAiService(JsonNode openAiConfig) {
3030
if (!openAiConfig.has("isOpenai") || !openAiConfig.get("isOpenai").asBoolean()) {
3131
return null;
3232
}
33+
34+
if (singleton != null && !openAiConfig.equals(singleton.getOpenAiConfig())) {
35+
singleton = null;
36+
}
37+
3338
if (singleton == null) {
3439
synchronized (OpenAiService.class) {
3540
if (singleton == null) {
@@ -75,22 +80,22 @@ OkHttpClient defaultClient() {
7580
throw new IllegalArgumentException("OpenAI token is required");
7681
}
7782

78-
OkHttpClient client
83+
OkHttpClient.Builder builder
7984
= com.theokanning.openai.service.OpenAiService.defaultClient(
8085
openAiConfig.get("token").asText(),
8186
Duration.ofSeconds(openAiConfig.get("timeout").asInt())
82-
);
87+
).newBuilder();
8388

8489
if (openAiConfig.get("isProxy").asBoolean()) {
8590
Proxy proxy = new Proxy(Proxy.Type.HTTP,
8691
new InetSocketAddress(openAiConfig.get("proxyHost").asText(),
8792
openAiConfig.get("proxyPort").asInt()
8893
)
8994
);
90-
client.newBuilder().proxy(proxy).build();
95+
builder.proxy(proxy).build();
9196
}
9297

93-
return client;
98+
return builder.build();
9499
}
95100

96101
ObjectMapper defaultObjectMapper() {
@@ -108,4 +113,8 @@ public Flowable<ChatCompletionChunk> streamChatCompletion(
108113
ChatCompletionRequest request) {
109114
return openAiService.streamChatCompletion(request);
110115
}
116+
117+
public JsonNode getOpenAiConfig() {
118+
return openAiConfig;
119+
}
111120
}

src/main/resources/extensions/settings.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ spec:
213213
help: 接口地址,国内如果访问不了,可考虑使用 openai-api-proxy
214214
name: baseUrl
215215
value: https://api.openai.com
216-
validation: required|String
216+
validation: required|url
217217
- $formkit: textarea
218218
if: "$get(isOpenai).value === true"
219219
label: 角色设定
@@ -271,12 +271,11 @@ spec:
271271
if: "$get(isOpenai).value === true && $get(isProxy).value === true"
272272
label: 代理地址
273273
name: proxyHost
274-
validation: String
275274
- $formkit: text
276275
if: "$get(isOpenai).value === true && $get(isProxy).value === true"
277276
label: 代理端口
278277
name: proxyPort
279-
validation: Number
278+
validation: Number|between:0,65535
280279
- group: advanced
281280
label: 高级设置
282281
formSchema:

0 commit comments

Comments
 (0)