创建项目

ChatModel

负责和AI大模型进行交互

LangChain4j 是 Java 生态的大模型开发框架,阿里大模型(通义千问)是它支持的众多模型之一

引入AI大模型的依赖(阿里云,提供了和Springboot项目整合依赖包)

https://docs.langchain4j.info/integrations/language-models/dashscope

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
            <version>1.1.0-beta7</version>
        </dependency>

阿里百炼平台创建APIKEY后,配置在项目中

langchain4j:
  community:
    dashscope:
      model: qwen-max
      api-key: xxxxxxxx

当前官方文档中也提供了代码的方式

ChatLanguageModel qwenModel = QwenChatModel.builder()
                    .apiKey("您的 API 密钥")
                    .modelName("qwen-max")
                    .enableSearch(true)
                    .temperature(0.7)
                    .maxTokens(4096)
                    .stops(List.of("Hello"))
                    .build();

代码追踪是qwen的,为什么是qwen的?怎么做到的?

1. 先看清楚:ChatModel 是什么?

你导入的 dev.langchain4j.model.chat.ChatModel 是一个接口(或者抽象父类),它定义了聊天模型的通用行为(比如发送消息、接收回复),但它本身没有具体实现,就像一个 “标准契约”。


2. 为什么引入通义千问(Qwen)依赖后,就变成了 Qwen 的实现?

这背后是两个关键机制在起作用:

QwenChatModel 实现了 ChatModel 接口

当你引入 langchain4j-community-dashscope(通义千问的 LangChain4j 适配依赖)后,依赖里会自带一个实现类 QwenChatModel,它会实现 ChatModel 接口,完成通义千问 API 的具体调用逻辑。

用代码类比就是:

// 这是你导入的通用接口
public interface ChatModel {
    ChatResponse chat(UserMessage message);
}

// 这是Qwen依赖提供的实现类
public class QwenChatModel implements ChatModel {
    @Override
    public ChatResponse chat(UserMessage message) {
        // 这里是通义千问API的具体调用逻辑
        return callQwenApi(message);
    }
}
② Spring Boot 自动配置 + 依赖注入

当你引入 Qwen 的依赖后,它的 spring-boot-autoconfigure 模块会自动生效:

  • 会根据你 application.yml 里配置的通义千问 API 密钥、模型名称,自动创建一个 QwenChatModel 的实例
  • 并把这个实例注册到 Spring 容器中,Bean 的名称通常是 qwenChatModel(和你代码里写的变量名一致)

而你代码里:

@Resource
private ChatModel qwenChatModel;

这里的 @Resource 会按名称 qwenChatModel 去 Spring 容器中找对应的 Bean,注入的实际对象就是 QwenChatModel,但因为它实现了 ChatModel 接口,所以你依然可以用 ChatModel 这个接口类型来声明变量,这就是 Java 的多态特性

如果遇到lombok报错

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐