代码格式化
This commit is contained in:
@@ -31,16 +31,16 @@ public class CmsAiChatConfig {
|
|||||||
* 聊天对话客户端
|
* 聊天对话客户端
|
||||||
* @author ThinkGem
|
* @author ThinkGem
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public ChatClient chatClient(ChatClient.Builder builder, CmsAiProperties properties) {
|
public ChatClient chatClient(ChatClient.Builder builder, CmsAiProperties properties) {
|
||||||
if (StringUtils.isNotBlank(properties.getDefaultSystem())) {
|
if (StringUtils.isNotBlank(properties.getDefaultSystem())) {
|
||||||
builder.defaultSystem(properties.getDefaultSystem());
|
builder.defaultSystem(properties.getDefaultSystem());
|
||||||
}
|
}
|
||||||
if (properties.getToolCalls()) {
|
if (properties.getToolCalls()) {
|
||||||
builder.defaultTools(new CmsAiTools());
|
builder.defaultTools(new CmsAiTools());
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 聊天对话数据存储
|
* 聊天对话数据存储
|
||||||
|
|||||||
@@ -18,19 +18,19 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||||||
@Configuration
|
@Configuration
|
||||||
public class CmsAiWebMvcConfig implements WebMvcConfigurer {
|
public class CmsAiWebMvcConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
|
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
|
||||||
configurer.setTaskExecutor(webMvcAsyncTaskExecutor());
|
configurer.setTaskExecutor(webMvcAsyncTaskExecutor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ThreadPoolTaskExecutor webMvcAsyncTaskExecutor() {
|
public ThreadPoolTaskExecutor webMvcAsyncTaskExecutor() {
|
||||||
ThreadPoolTaskExecutor bean = new ThreadPoolTaskExecutor();
|
ThreadPoolTaskExecutor bean = new ThreadPoolTaskExecutor();
|
||||||
bean.setCorePoolSize(Global.getPropertyToInteger("web.taskPool.corePoolSize", "8"));
|
bean.setCorePoolSize(Global.getPropertyToInteger("web.taskPool.corePoolSize", "8"));
|
||||||
bean.setMaxPoolSize(Global.getPropertyToInteger("web.taskPool.maxPoolSize", "20"));
|
bean.setMaxPoolSize(Global.getPropertyToInteger("web.taskPool.maxPoolSize", "20"));
|
||||||
bean.setKeepAliveSeconds(Global.getPropertyToInteger("web.taskPool.keepAliveSeconds", "60"));
|
bean.setKeepAliveSeconds(Global.getPropertyToInteger("web.taskPool.keepAliveSeconds", "60"));
|
||||||
bean.setQueueCapacity(Global.getPropertyToInteger("web.taskPool.queueCapacity", String.valueOf(Integer.MAX_VALUE)));
|
bean.setQueueCapacity(Global.getPropertyToInteger("web.taskPool.queueCapacity", String.valueOf(Integer.MAX_VALUE)));
|
||||||
bean.setThreadNamePrefix("web-async-");
|
bean.setThreadNamePrefix("web-async-");
|
||||||
return bean;
|
return bean;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,18 +36,18 @@ public class WebClientThinkConfig {
|
|||||||
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(WebClientThinkConfig.class);
|
private final Logger logger = LoggerFactory.getLogger(WebClientThinkConfig.class);
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
public WebClientCustomizer webClientCustomizerThink() {
|
public WebClientCustomizer webClientCustomizerThink() {
|
||||||
return webClientBuilder -> {
|
return webClientBuilder -> {
|
||||||
ExchangeFilterFunction requestFilter = ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
|
ExchangeFilterFunction requestFilter = ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
|
||||||
logger.trace("Request url: {}: {}", clientRequest.method(), clientRequest.url());
|
logger.trace("Request url: {}: {}", clientRequest.method(), clientRequest.url());
|
||||||
return Mono.just(clientRequest);
|
return Mono.just(clientRequest);
|
||||||
});
|
});
|
||||||
ExchangeFilterFunction responseFilter = ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
|
ExchangeFilterFunction responseFilter = ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
|
||||||
logger.trace("Response status: {}", clientResponse.statusCode());
|
logger.trace("Response status: {}", clientResponse.statusCode());
|
||||||
AtomicBoolean thinkingFlag = new AtomicBoolean(false);
|
AtomicBoolean thinkingFlag = new AtomicBoolean(false);
|
||||||
Flux<DataBuffer> modifiedBody = clientResponse.bodyToFlux(DataBuffer.class)
|
Flux<DataBuffer> modifiedBody = clientResponse.bodyToFlux(DataBuffer.class)
|
||||||
.map(buf -> {
|
.map(buf -> {
|
||||||
byte[] bytes = new byte[buf.readableByteCount()];
|
byte[] bytes = new byte[buf.readableByteCount()];
|
||||||
buf.read(bytes);
|
buf.read(bytes);
|
||||||
@@ -117,13 +117,13 @@ public class WebClientThinkConfig {
|
|||||||
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
|
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
|
||||||
return new DefaultDataBufferFactory().wrap(bytes);
|
return new DefaultDataBufferFactory().wrap(bytes);
|
||||||
});
|
});
|
||||||
ClientResponse modifiedResponse = ClientResponse.from(clientResponse)
|
ClientResponse modifiedResponse = ClientResponse.from(clientResponse)
|
||||||
.headers(headers -> headers.remove(HttpHeaders.CONTENT_LENGTH))
|
.headers(headers -> headers.remove(HttpHeaders.CONTENT_LENGTH))
|
||||||
.body(modifiedBody)
|
.body(modifiedBody)
|
||||||
.build();
|
.build();
|
||||||
return Mono.just(modifiedResponse);
|
return Mono.just(modifiedResponse);
|
||||||
});
|
});
|
||||||
webClientBuilder.filter(requestFilter).filter(responseFilter);
|
webClientBuilder.filter(requestFilter).filter(responseFilter);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user