mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-09-21 20:13:34 +08:00
openai config update
This commit is contained in:
@ -4,6 +4,7 @@ package ai.chat2db.server.web.api.controller.config;
|
||||
import java.util.Objects;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.AiSqlSourceEnum;
|
||||
import ai.chat2db.server.domain.api.model.AIConfig;
|
||||
import ai.chat2db.server.domain.api.model.ChatGptConfig;
|
||||
import ai.chat2db.server.domain.api.model.Config;
|
||||
import ai.chat2db.server.domain.api.param.SystemConfigParam;
|
||||
@ -12,6 +13,7 @@ import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.ai.azure.client.AzureOpenAIClient;
|
||||
import ai.chat2db.server.web.api.controller.config.request.AIConfigCreateRequest;
|
||||
import ai.chat2db.server.web.api.controller.config.request.AISystemConfigRequest;
|
||||
import ai.chat2db.server.web.api.controller.config.request.SystemConfigRequest;
|
||||
import ai.chat2db.server.web.api.util.OpenAIClient;
|
||||
@ -24,6 +26,7 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
@ -50,13 +53,13 @@ public class ConfigController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存ChatGPT相关配置
|
||||
* save ai config
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/system_config/chatgpt")
|
||||
public ActionResult addChatGptSystemConfig(@RequestBody AISystemConfigRequest request) {
|
||||
public ActionResult addAiSystemConfig(@RequestBody AISystemConfigRequest request) {
|
||||
String sqlSource = StringUtils.isNotBlank(request.getAiSqlSource()) ? request.getAiSqlSource()
|
||||
: AiSqlSourceEnum.CHAT2DBAI.getCode();
|
||||
AiSqlSourceEnum aiSqlSourceEnum = AiSqlSourceEnum.getByName(sqlSource);
|
||||
@ -85,6 +88,110 @@ public class ConfigController {
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存ChatGPT相关配置
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/system_config/ai")
|
||||
public ActionResult addChatGptSystemConfig(@RequestBody AIConfigCreateRequest request) {
|
||||
String sqlSource = request.getAiSqlSource();
|
||||
AiSqlSourceEnum aiSqlSourceEnum = AiSqlSourceEnum.getByName(sqlSource);
|
||||
if (Objects.isNull(aiSqlSourceEnum)) {
|
||||
sqlSource = AiSqlSourceEnum.CHAT2DBAI.getCode();
|
||||
aiSqlSourceEnum = AiSqlSourceEnum.CHAT2DBAI;
|
||||
}
|
||||
SystemConfigParam param = SystemConfigParam.builder().code(RestAIClient.AI_SQL_SOURCE).content(sqlSource)
|
||||
.build();
|
||||
configService.createOrUpdate(param);
|
||||
|
||||
switch (Objects.requireNonNull(aiSqlSourceEnum)) {
|
||||
case OPENAI :
|
||||
saveOpenAIConfig(request);
|
||||
break;
|
||||
case CHAT2DBAI:
|
||||
saveChat2dbAIConfig(request);
|
||||
break;
|
||||
case RESTAI :
|
||||
saveRestAIConfig(request);
|
||||
break;
|
||||
case AZUREAI :
|
||||
saveAzureAIConfig(request);
|
||||
break;
|
||||
}
|
||||
return ActionResult.isSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
* save chat2db ai config
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
private void saveChat2dbAIConfig(AIConfigCreateRequest request) {
|
||||
SystemConfigParam param = SystemConfigParam.builder().code(OpenAIClient.OPENAI_KEY).content(
|
||||
request.getApiKey()).build();
|
||||
configService.createOrUpdate(param);
|
||||
SystemConfigParam hostParam = SystemConfigParam.builder().code(OpenAIClient.OPENAI_HOST).content(
|
||||
request.getApiHost()).build();
|
||||
configService.createOrUpdate(hostParam);
|
||||
OpenAIClient.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* save open ai config
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
private void saveOpenAIConfig(AIConfigCreateRequest request) {
|
||||
SystemConfigParam param = SystemConfigParam.builder().code(OpenAIClient.OPENAI_KEY).content(
|
||||
request.getApiKey()).build();
|
||||
configService.createOrUpdate(param);
|
||||
SystemConfigParam hostParam = SystemConfigParam.builder().code(OpenAIClient.OPENAI_HOST).content(
|
||||
request.getApiHost()).build();
|
||||
configService.createOrUpdate(hostParam);
|
||||
SystemConfigParam httpProxyHostParam = SystemConfigParam.builder().code(OpenAIClient.PROXY_HOST).content(
|
||||
request.getHttpProxyHost()).build();
|
||||
configService.createOrUpdate(httpProxyHostParam);
|
||||
SystemConfigParam httpProxyPortParam = SystemConfigParam.builder().code(OpenAIClient.PROXY_PORT).content(
|
||||
request.getHttpProxyPort()).build();
|
||||
configService.createOrUpdate(httpProxyPortParam);
|
||||
OpenAIClient.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* save rest ai config
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
private void saveRestAIConfig(AIConfigCreateRequest request) {
|
||||
SystemConfigParam restParam = SystemConfigParam.builder().code(RestAIClient.REST_AI_URL).content(
|
||||
request.getApiHost()).build();
|
||||
configService.createOrUpdate(restParam);
|
||||
SystemConfigParam methodParam = SystemConfigParam.builder().code(RestAIClient.REST_AI_STREAM_OUT).content(
|
||||
request.getStream().toString()).build();
|
||||
configService.createOrUpdate(methodParam);
|
||||
RestAIClient.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* save azure config
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
private void saveAzureAIConfig(AIConfigCreateRequest request) {
|
||||
SystemConfigParam apikeyParam = SystemConfigParam.builder().code(AzureOpenAIClient.AZURE_CHATGPT_API_KEY).content(
|
||||
request.getApiKey()).build();
|
||||
configService.createOrUpdate(apikeyParam);
|
||||
SystemConfigParam endpointParam = SystemConfigParam.builder().code(AzureOpenAIClient.AZURE_CHATGPT_ENDPOINT).content(
|
||||
request.getApiHost()).build();
|
||||
configService.createOrUpdate(endpointParam);
|
||||
SystemConfigParam modelParam = SystemConfigParam.builder().code(AzureOpenAIClient.AZURE_CHATGPT_DEPLOYMENT_ID).content(
|
||||
request.getModel()).build();
|
||||
configService.createOrUpdate(modelParam);
|
||||
AzureOpenAIClient.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存OPENAI相关配置
|
||||
*
|
||||
@ -161,6 +268,65 @@ public class ConfigController {
|
||||
return DataResult.of(result.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询ChatGPT相关配置
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/system_config/ai")
|
||||
public DataResult<AIConfig> getChatAiSystemConfig(String aiSqlSource) {
|
||||
if (StringUtils.isBlank(aiSqlSource)) {
|
||||
DataResult<Config> dbSqlSource = configService.find(RestAIClient.AI_SQL_SOURCE);
|
||||
if (Objects.nonNull(dbSqlSource.getData())) {
|
||||
aiSqlSource = dbSqlSource.getData().getContent();
|
||||
}
|
||||
}
|
||||
AIConfig config = new AIConfig();
|
||||
AiSqlSourceEnum aiSqlSourceEnum = AiSqlSourceEnum.getByName(aiSqlSource);
|
||||
if (Objects.isNull(aiSqlSourceEnum)) {
|
||||
aiSqlSourceEnum = AiSqlSourceEnum.CHAT2DBAI;
|
||||
aiSqlSource = AiSqlSourceEnum.CHAT2DBAI.getCode();
|
||||
}
|
||||
config.setAiSqlSource(aiSqlSource);
|
||||
switch (Objects.requireNonNull(aiSqlSourceEnum)) {
|
||||
case OPENAI :
|
||||
DataResult<Config> apiKey = configService.find(OpenAIClient.OPENAI_KEY);
|
||||
DataResult<Config> apiHost = configService.find(OpenAIClient.OPENAI_HOST);
|
||||
DataResult<Config> httpProxyHost = configService.find(OpenAIClient.PROXY_HOST);
|
||||
DataResult<Config> httpProxyPort = configService.find(OpenAIClient.PROXY_PORT);
|
||||
config.setApiKey(Objects.nonNull(apiKey.getData()) ? apiKey.getData().getContent() : null);
|
||||
config.setApiHost(Objects.nonNull(apiHost.getData()) ? apiHost.getData().getContent() : null);
|
||||
config.setHttpProxyHost(Objects.nonNull(httpProxyHost.getData()) ? httpProxyHost.getData().getContent() : null);
|
||||
config.setHttpProxyPort(Objects.nonNull(httpProxyPort.getData()) ? httpProxyPort.getData().getContent() : null);
|
||||
break;
|
||||
case CHAT2DBAI:
|
||||
apiKey = configService.find(OpenAIClient.OPENAI_KEY);
|
||||
apiHost = configService.find(OpenAIClient.OPENAI_HOST);
|
||||
config.setApiKey(Objects.nonNull(apiKey.getData()) ? apiKey.getData().getContent() : null);
|
||||
config.setApiHost(Objects.nonNull(apiHost.getData()) ? apiHost.getData().getContent() : null);
|
||||
break;
|
||||
case AZUREAI:
|
||||
DataResult<Config> azureApiKey = configService.find(AzureOpenAIClient.AZURE_CHATGPT_API_KEY);
|
||||
DataResult<Config> azureEndpoint = configService.find(AzureOpenAIClient.AZURE_CHATGPT_ENDPOINT);
|
||||
DataResult<Config> azureDeployId = configService.find(AzureOpenAIClient.AZURE_CHATGPT_DEPLOYMENT_ID);
|
||||
config.setApiKey(Objects.nonNull(azureApiKey.getData()) ? azureApiKey.getData().getContent() : null);
|
||||
config.setApiHost(Objects.nonNull(azureEndpoint.getData()) ? azureEndpoint.getData().getContent() : null);
|
||||
config.setModel(Objects.nonNull(azureDeployId.getData()) ? azureDeployId.getData().getContent() : null);
|
||||
break;
|
||||
case RESTAI:
|
||||
DataResult<Config> restAiUrl = configService.find(RestAIClient.REST_AI_URL);
|
||||
DataResult<Config> restAiHttpMethod = configService.find(RestAIClient.REST_AI_STREAM_OUT);
|
||||
config.setApiHost(Objects.nonNull(restAiUrl.getData()) ? restAiUrl.getData().getContent() : null);
|
||||
config.setStream(Objects.nonNull(restAiHttpMethod.getData()) ? Boolean.valueOf(
|
||||
restAiHttpMethod.getData().getContent()) : Boolean.TRUE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return DataResult.of(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询ChatGPT相关配置
|
||||
*
|
||||
|
@ -0,0 +1,51 @@
|
||||
|
||||
package ai.chat2db.server.web.api.controller.config.request;
|
||||
|
||||
import ai.chat2db.server.domain.api.enums.AiSqlSourceEnum;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author jipengfei
|
||||
* @version : SystemConfigRequest.java
|
||||
*/
|
||||
@Data
|
||||
public class AIConfigCreateRequest {
|
||||
|
||||
/**
|
||||
* APIKEY
|
||||
*/
|
||||
private String apiKey;
|
||||
|
||||
/**
|
||||
* APIHOST
|
||||
*/
|
||||
private String apiHost;
|
||||
|
||||
/**
|
||||
* api http proxy host
|
||||
*/
|
||||
private String httpProxyHost;
|
||||
|
||||
/**
|
||||
* api http proxy port
|
||||
*/
|
||||
private String httpProxyPort;
|
||||
|
||||
/**
|
||||
* @see AiSqlSourceEnum
|
||||
*/
|
||||
@NotNull
|
||||
private String aiSqlSource;
|
||||
|
||||
/**
|
||||
* return data stream
|
||||
* 非必填,默认值为TRUE
|
||||
*/
|
||||
private Boolean stream = Boolean.TRUE;
|
||||
|
||||
/**
|
||||
* deployed model, default gpt-3.5-turbo
|
||||
*/
|
||||
private String model;
|
||||
}
|
Reference in New Issue
Block a user