+ * 原因:Spring AI 框架的 ChatClient 内部通过 RestClient(Spring Framework 6 和 Spring Boot 3 中引入) 发起 HTTP REST 请求与远程的大模型服务进行通信, + * 如果项目中没有配置自定义的 RestClientBuilder 对象, 那么在 RestClient 的自动配置类 org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration + * 中配置的 RestClientBuilder 对象会使用 Spring 容器中提供的 HttpMessageConverters, 由于本项目中配置了 spring.jackson.generator.write-numbers-as-strings + * = true, 所以 Spring 容器中的 HttpMessageConverters 在 RestClient 发起 HTTP REST 请求转换 Java 对象为 JSON 字符串时会自动将 Number 类型的 + * Java 对象属性转换为字符串而导致请求参数错误 + *
+ * 示例:"temperature": 0.7 =》"temperature": "0.7" + * {"code":20015,"message":"The parameter is invalid. Please check again.","data":null} + */ + @Bean + public RestClient.Builder restClientBuilder() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + // 连接超时时间 + factory.setConnectTimeout(5000); + // 读取超时时间 + factory.setReadTimeout(60000); + return RestClient.builder().requestFactory(factory); + } + + @Bean + public ChatClient chatClient(ChatClient.Builder chatClientBuilder) { + return chatClientBuilder.build(); + } + +} diff --git a/src/main/java/io/github/xxyopen/novel/core/constant/ApiRouterConsts.java b/src/main/java/io/github/xxyopen/novel/core/constant/ApiRouterConsts.java index 4a62610..8dbefd3 100644 --- a/src/main/java/io/github/xxyopen/novel/core/constant/ApiRouterConsts.java +++ b/src/main/java/io/github/xxyopen/novel/core/constant/ApiRouterConsts.java @@ -62,6 +62,11 @@ public class ApiRouterConsts { */ public static final String SEARCH_URL_PREFIX = "/search"; + /** + * AI模块请求路径前缀 + */ + public static final String AI_URL_PREFIX = "/ai"; + /** * 前台门户首页API请求路径前缀 */ @@ -94,4 +99,10 @@ public class ApiRouterConsts { public static final String API_FRONT_SEARCH_URL_PREFIX = API_FRONT_URL_PREFIX + SEARCH_URL_PREFIX; + /** + * 作家后台AI相关API请求路径前缀 + */ + public static final String API_AUTHOR_AI_URL_PREFIX = API_AUTHOR_URL_PREFIX + AI_URL_PREFIX; + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2d4c302..9c8d536 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -34,6 +34,18 @@ server: # 端口号 port: 8888 +--- #--------------------- Spring AI 配置---------------------- +spring: + ai: + openai: + api-key: + base-url: https://api.siliconflow.cn + chat: + options: + model: deepseek-ai/DeepSeek-R1-Distill-Llama-8B + + + --- #---------------------数据库配置--------------------------- spring: datasource: