feat(ai): restClient和webClient提供给其他类使用

This commit is contained in:
2025-06-14 17:45:56 +08:00
parent f11f5e7656
commit d4d5aede31
3 changed files with 31 additions and 31 deletions

View File

@@ -0,0 +1,12 @@
import {cd, path} from 'zx'
import {trim} from "licia";
import {run_deploy} from '../../bin/library.js'
// 切换目录
cd(trim(path.dirname(import.meta.dirname)))
// 执行流程
try {
await run_deploy('service-ai-core')
} catch (e) {
console.error(e)
}

View File

@@ -1,17 +1,13 @@
package com.lanyuanxiaoyao.service.ai.chat; package com.lanyuanxiaoyao.service.ai.chat;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.net.http.HttpClient; import com.lanyuanxiaoyao.service.ai.core.configuration.WebClientConfiguration;
import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.ai.tool.annotation.Tool; import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam; import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.http.client.JdkClientHttpRequestFactory;
import org.springframework.http.client.reactive.JdkClientHttpConnector;
import org.springframework.web.client.RestClient;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.Disposable; import reactor.core.Disposable;
/** /**
@@ -26,8 +22,8 @@ public class TestSpringAiTools {
OpenAiApi.builder() OpenAiApi.builder()
.baseUrl("http://132.121.206.65:10086") .baseUrl("http://132.121.206.65:10086")
.apiKey("*XMySqV%>hR&v>>g*NwCs3tpQ5FVMFEF2VHVTj<MYQd$&@$sY7CgqNyea4giJi4") .apiKey("*XMySqV%>hR&v>>g*NwCs3tpQ5FVMFEF2VHVTj<MYQd$&@$sY7CgqNyea4giJi4")
.restClientBuilder(restClientBuilder()) .restClientBuilder(WebClientConfiguration.generateRestClientBuilder())
.webClientBuilder(webClientBuilder()) .webClientBuilder(WebClientConfiguration.generateWebClientBuilder())
.build() .build()
) )
.defaultOptions( .defaultOptions(
@@ -48,22 +44,6 @@ public class TestSpringAiTools {
} }
} }
private static HttpClient httpClient() {
return HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.build();
}
private static RestClient.Builder restClientBuilder() {
return RestClient.builder()
.requestFactory(new JdkClientHttpRequestFactory(httpClient()));
}
private static WebClient.Builder webClientBuilder() {
return WebClient.builder()
.clientConnector(new JdkClientHttpConnector(httpClient()));
}
public static final class TestTool { public static final class TestTool {
@Tool(description = "传入任意动物名称,返回一个关于这个动物的笑话") @Tool(description = "传入任意动物名称,返回一个关于这个动物的笑话")
public String submit(@ToolParam(description = "动物名称") String animalName) { public String submit(@ToolParam(description = "动物名称") String animalName) {

View File

@@ -17,22 +17,30 @@ import org.springframework.web.reactive.function.client.WebClient;
*/ */
@Configuration @Configuration
public class WebClientConfiguration { public class WebClientConfiguration {
private HttpClient httpClient() {
return HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.build();
}
@Bean @Bean
@Primary @Primary
public RestClient.Builder restClientBuilder() { public RestClient.Builder restClientBuilder() {
return RestClient.builder() return generateRestClientBuilder();
.requestFactory(new JdkClientHttpRequestFactory(httpClient()));
} }
@Bean @Bean
@Primary @Primary
public WebClient.Builder webClientBuilder() { public WebClient.Builder webClientBuilder() {
return generateWebClientBuilder();
}
private static HttpClient httpClient() {
return HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.build();
}
public static RestClient.Builder generateRestClientBuilder() {
return RestClient.builder()
.requestFactory(new JdkClientHttpRequestFactory(httpClient()));
}
public static WebClient.Builder generateWebClientBuilder() {
return WebClient.builder() return WebClient.builder()
.clientConnector(new JdkClientHttpConnector(httpClient())); .clientConnector(new JdkClientHttpConnector(httpClient()));
} }