mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-29 10:43:06 +08:00
chat2db add model
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package ai.chat2db.server.web.api.controller.ai.chat2db.client;
|
||||
|
||||
import ai.chat2db.server.tools.common.exception.ParamBusinessException;
|
||||
import ai.chat2db.server.web.api.controller.ai.chat2db.interceptor.Chat2dbHeaderAuthorizationInterceptor;
|
||||
import ai.chat2db.server.web.api.controller.ai.fastchat.client.FastChatOpenAiApi;
|
||||
import ai.chat2db.server.web.api.controller.ai.fastchat.embeddings.FastChatEmbedding;
|
||||
import ai.chat2db.server.web.api.controller.ai.fastchat.embeddings.FastChatEmbeddingResponse;
|
||||
@ -100,7 +101,7 @@ public class Chat2DBAIStreamClient {
|
||||
private OkHttpClient okHttpClient() {
|
||||
OkHttpClient okHttpClient = new OkHttpClient
|
||||
.Builder()
|
||||
.addInterceptor(new HeaderAuthorizationInterceptor(Lists.newArrayList(this.apiKey)))
|
||||
.addInterceptor(new Chat2dbHeaderAuthorizationInterceptor(this.apiKey, this.model))
|
||||
.connectTimeout(50, TimeUnit.SECONDS)
|
||||
.writeTimeout(50, TimeUnit.SECONDS)
|
||||
.readTimeout(50, TimeUnit.SECONDS)
|
||||
|
@ -24,6 +24,11 @@ public class Chat2dbAIClient {
|
||||
*/
|
||||
public static final String CHAT2DB_OPENAI_HOST = "chat2db.apiHost";
|
||||
|
||||
/**
|
||||
* OPENAI模型
|
||||
*/
|
||||
public static final String CHAT2DB_OPENAI_MODEL = "chat2db.model";
|
||||
|
||||
/**
|
||||
* FASTCHAT OPENAI embedding model
|
||||
*/
|
||||
@ -68,9 +73,11 @@ public class Chat2dbAIClient {
|
||||
} else {
|
||||
apikey = ApplicationContextUtil.getProperty(CHAT2DB_OPENAI_KEY);
|
||||
}
|
||||
Config modelConfig = configService.find(CHAT2DB_OPENAI_MODEL).getData();
|
||||
String model = modelConfig.getContent();
|
||||
log.info("refresh chat2db apikey:{}", maskApiKey(apikey));
|
||||
CHAT2DB_AI_STREAM_CLIENT = Chat2DBAIStreamClient.builder().apiHost(apiHost).apiKey(
|
||||
apikey).build();
|
||||
CHAT2DB_AI_STREAM_CLIENT = Chat2DBAIStreamClient.builder().apiHost(apiHost)
|
||||
.apiKey(apikey).model(model).build();
|
||||
}
|
||||
|
||||
private static String maskApiKey(String input) {
|
||||
|
@ -0,0 +1,46 @@
|
||||
package ai.chat2db.server.web.api.controller.ai.chat2db.interceptor;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.AiSqlSourceEnum;
|
||||
import ai.chat2db.server.web.api.util.StringUtils;
|
||||
import cn.hutool.http.ContentType;
|
||||
import cn.hutool.http.Header;
|
||||
import lombok.Getter;
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 描述:请求增加header apikey
|
||||
*
|
||||
* @author grt
|
||||
* @since 2023-03-23
|
||||
*/
|
||||
@Getter
|
||||
public class Chat2dbHeaderAuthorizationInterceptor implements Interceptor {
|
||||
|
||||
private String apiKey;
|
||||
|
||||
private String model;
|
||||
|
||||
public Chat2dbHeaderAuthorizationInterceptor(String apiKey, String model) {
|
||||
this.apiKey = apiKey;
|
||||
this.model = model;
|
||||
if (StringUtils.isEmpty(model)) {
|
||||
this.model = AiSqlSourceEnum.OPENAI.getCode();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response intercept(Chain chain) throws IOException {
|
||||
Request original = chain.request();
|
||||
Request request = original.newBuilder()
|
||||
.header(Header.AUTHORIZATION.getValue(), "Bearer " + apiKey)
|
||||
.header("X-CHAT2DB-AI-TYPE", model)
|
||||
.header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue())
|
||||
.method(original.method(), original.body())
|
||||
.build();
|
||||
return chain.proceed(request);
|
||||
}
|
||||
}
|
@ -119,6 +119,9 @@ public class ConfigController {
|
||||
SystemConfigParam hostParam = SystemConfigParam.builder().code(Chat2dbAIClient.CHAT2DB_OPENAI_HOST).content(
|
||||
request.getApiHost()).build();
|
||||
configService.createOrUpdate(hostParam);
|
||||
SystemConfigParam modelParam = SystemConfigParam.builder().code(Chat2dbAIClient.CHAT2DB_OPENAI_MODEL).content(
|
||||
request.getModel()).build();
|
||||
configService.createOrUpdate(modelParam);
|
||||
Chat2dbAIClient.refresh();
|
||||
}
|
||||
|
||||
@ -312,9 +315,11 @@ public class ConfigController {
|
||||
case CHAT2DBAI:
|
||||
DataResult<Config> chat2dbApiKey = configService.find(Chat2dbAIClient.CHAT2DB_OPENAI_KEY);
|
||||
DataResult<Config> chat2dbApiHost = configService.find(Chat2dbAIClient.CHAT2DB_OPENAI_HOST);
|
||||
DataResult<Config> chat2dbModel = configService.find(Chat2dbAIClient.CHAT2DB_OPENAI_MODEL);
|
||||
config.setApiKey(Objects.nonNull(chat2dbApiKey.getData()) ? chat2dbApiKey.getData().getContent() : "");
|
||||
config.setApiHost(
|
||||
Objects.nonNull(chat2dbApiHost.getData()) ? chat2dbApiHost.getData().getContent() : "");
|
||||
config.setModel(Objects.nonNull(chat2dbModel.getData()) ? chat2dbModel.getData().getContent() : "");
|
||||
break;
|
||||
case AZUREAI:
|
||||
DataResult<Config> azureApiKey = configService.find(AzureOpenAIClient.AZURE_CHATGPT_API_KEY);
|
||||
|
Reference in New Issue
Block a user