Skip to content

Commit eca488f

Browse files
committed
feat: 增加对第三方api的支持
1 parent af897cd commit eca488f

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@
5252
<artifactId>service</artifactId>
5353
<version>0.18.2</version>
5454
</dependency>
55+
<dependency>
56+
<groupId>com.squareup.retrofit2</groupId>
57+
<artifactId>converter-jackson</artifactId>
58+
<version>2.9.0</version>
59+
</dependency>
5560
<dependency>
5661
<groupId>com.knuddels</groupId>
5762
<artifactId>jtokkit</artifactId>

src/main/java/com/ashin/client/GptClient.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22

33
import com.ashin.config.GptConfig;
44
import com.ashin.config.ProxyConfig;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.theokanning.openai.client.OpenAiApi;
57
import com.theokanning.openai.service.OpenAiService;
68
import lombok.Getter;
79
import lombok.extern.slf4j.Slf4j;
10+
import okhttp3.OkHttpClient;
811
import org.springframework.stereotype.Component;
12+
import retrofit2.Retrofit;
13+
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
14+
import retrofit2.converter.jackson.JacksonConverterFactory;
915

1016
import javax.annotation.PostConstruct;
1117
import javax.annotation.Resource;
@@ -39,9 +45,21 @@ public void init() {
3945
for (String apiKey : gptConfig.getApiKey()) {
4046
apiKey = apiKey.trim();
4147
if (!apiKey.isEmpty()) {
42-
openAiServiceList.add(new OpenAiService(apiKey, Duration.ofSeconds(gptConfig.getOfSeconds())));
48+
openAiServiceList.add(customOpenAiService(apiKey, gptConfig.getBaseUrl()));
4349
log.info("apiKey为 {} 的账号初始化成功", apiKey);
4450
}
4551
}
4652
}
53+
54+
private OpenAiService customOpenAiService(String token, String baseUrl) {
55+
ObjectMapper mapper = OpenAiService.defaultObjectMapper();
56+
OkHttpClient client = OpenAiService.defaultClient(token, Duration.ofSeconds(gptConfig.getOfSeconds()));
57+
Retrofit retrofit = new Retrofit.Builder()
58+
.baseUrl(baseUrl)
59+
.client(client)
60+
.addConverterFactory(JacksonConverterFactory.create(mapper))
61+
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
62+
.build();
63+
return new OpenAiService(retrofit.create(OpenAiApi.class), client.dispatcher().executorService());
64+
}
4765
}

src/main/java/com/ashin/config/GptConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
@Component
1717
@ConfigurationProperties("gpt")
1818
public class GptConfig {
19+
private String baseUrl;
1920
private String model;
2021
private Integer maxToken;
2122
private Double temperature;

src/main/resources/application.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ proxy:
88
port:
99

1010
gpt:
11+
# 如果你使用了第三方GPT 请修改baseUrl
12+
# (OPENAI官方地址 https://api.openai.com/)
13+
baseUrl: https://api.openai.com/
1114
# 使用的 chat 模型 如gpt-3.5-turbo/gpt-4 (https://platform.openai.com/docs/models/models)
1215
model: gpt-3.5-turbo
1316
# 最大token限制 越多的token意味着越多的花费(gpt-3.5-turbo上限为4096token, gpt-4则为8192)

0 commit comments

Comments
 (0)