Spring-Cloud-Alibaba:2023.0.1.X引起的dashscope-sdk-java依赖冲突问题
问题描述
在进行AI应用开发时,引入了langchain4j-community-dashscope包:
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope</artifactId><version>1.3.0-beta9</version>
</dependency>
此时,langchain4j-community-dashscope包中ashscope-sdk-java的版本是2.21.1.
当我们将AI应用作为微服务,引入Spring-Cloud-Alibaba:2023.0.1.0:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.0</version>
</dependency>
系统在执行到大模型调用时报错:
Caused by: java.lang.NoSuchMethodError: 'com.alibaba.dashscope.aigc.generation.GenerationParam$GenerationParamBuilder com.alibaba.dashscope.aigc.generation.GenerationParam$GenerationParamBuilder.searchOptions(com.alibaba.dashscope.aigc.generation.SearchOptions)'at dev.langchain4j.community.model.dashscope.QwenHelper.toGenerationParam(QwenHelper.java:750) ~[langchain4j-community-dashscope-1.3.0-beta9.jar:na]at dev.langchain4j.community.model.dashscope.QwenChatModel.generateByNonMultimodalModel(QwenChatModel.java:132) ~[langchain4j-community-dashscope-1.3.0-beta9.jar:na]at dev.langchain4j.community.model.dashscope.QwenChatModel.doChat(QwenChatModel.java:158) ~[langchain4j-community-dashscope-1.3.0-beta9.jar:na]at dev.langchain4j.model.chat.ChatModel.chat(ChatModel.java:46) ~[langchain4j-core-1.3.0.jar:na]at dev.langchain4j.model.chat.ChatModel.chat(ChatModel.java:76) ~[langchain4j-core-1.3.0.jar:na]at cn.daydayup.dev.manus.core.node.ChapterAnalyseNode.apply(ChapterAnalyseNode.java:58) ~[classes/:na]at cn.daydayup.dev.manus.core.node.ChapterAnalyseNode.apply(ChapterAnalyseNode.java:27) ~[classes/:na]at org.bsc.langgraph4j.action.AsyncNodeAction.lambda$node_async$0(AsyncNodeAction.java:36) ~[langgraph4j-core-1.6.2.jar:na]at org.bsc.langgraph4j.action.AsyncNodeActionWithConfig.lambda$of$1(AsyncNodeActionWithConfig.java:53) ~[langgraph4j-core-1.6.2.jar:na]at org.bsc.langgraph4j.CompiledGraph$AsyncNodeGenerator.evaluateAction(CompiledGraph.java:721) ~[langgraph4j-core-1.6.2.jar:na]at org.bsc.langgraph4j.CompiledGraph$AsyncNodeGenerator.next(CompiledGraph.java:863) ~[langgraph4j-core-1.6.2.jar:na]at org.bsc.async.AsyncGenerator$WithEmbed.next(AsyncGenerator.java:127) ~[async-generator-3.2.2.jar:na]at org.bsc.async.AsyncGeneratorOperators.forEachAsync(AsyncGeneratorOperators.java:86) ~[async-generator-3.2.2.jar:na]
问题定位
引入的Spring-Cloud-Alibaba:2023.0.1.0后,发现langchain4j-community-dashscope中dashscope-sdk-java版本变成了2.12.0。
因此,可以确定是因为引入spring-cloud-alibaba-dependencies:2023.0.1.0导致的,原因可能是该版本开始引入了spring-ai的相关依赖:
同时,我们可以发现在spring-cloud-alibaba:2023.0.1.x版本中均存在特定版本的dashscope-sdk-java:
解决方法
在最新的2023.0.3.x版本中已经没有了spring-ai相关的依赖了,因此我们升级一下spring-cloud-alibaba-dependencies的版本:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.3.3</version>
</dependency>
升级后,langchain4j-community-dashscope中dashscope-sdk-java版本就变正常了。