ChatModel 核心概念

ChatModel 是 LangChain4j 中最基础的核心组件,主要负责与 AI 大模型进行交互,封装了模型调用、请求封装、响应解析等底层逻辑,是实现 AI 对话功能的基础。

导入依赖

以对接阿里云通义千问(DashScope)模型为例,需导入以下依赖,适用于 Spring Boot 项目:


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

ChatModel 的两种创建方法

创建 ChatModel 有两种常用方式,分别适用于不同场景。

方式一:通过配置文件创建(Spring 集成)

在 Spring Boot 项目中,可通过配置文件(如 application-local.yml)配置模型参数,框架会自动注入 ChatModel 实例,无需手动构建。

配置文件示例


langchain4j:
  community:
    dashscope:
      chat-model:
        model-name: qwen-max  ## 通义千问高质量模型,适合对效果有要求的场景
        # model-name: qwen-plus  ## 通义千问高速模型,适合对响应速度有要求的场景
        api-key: <Your API Key here>  ## 替换为你的通义千问API密钥

配置完成后,可直接通过 @Resource 或 @Autowired 注解注入 ChatModel 实例使用。

方式二:通过构造器创建

通过 QwenChatModel.builder() 构造器创建实例,支持灵活配置更多参数(如温度、最大 tokens、停止词等),适配复杂业务场景,是更推荐的创建方式。

构造器创建示例


// 手动构建通义千问ChatModel实例
ChatModel qwenModel = QwenChatModel.builder()
        .apiKey("Your API Key here")  // 替换为你的通义千问API密钥
        .modelName("qwen-max")        // 模型名称,可根据需求切换qwen-plus
        .enableSearch(true)           // 启用搜索增强功能
        .temperature(0.7)             // 控制生成内容的随机性,0-1之间,值越大越随机
        .maxTokens(4096)              // 模型生成内容的最大令牌数
        .stops(List.of("Hello"))      // 生成停止词,遇到该词则停止生成
        .build();

项目实战编码

基于 Spring Boot 编写服务类,封装 ChatModel 调用逻辑,实现 AI 对话功能。

1. 服务类实现


import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.ChatResponse;
import dev.langchain4j.model.input.UserMessage;
import dev.langchain4j.model.output.AiMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service
@Slf4j
public class AiCodeHelper {

    // 注入通过配置文件创建的ChatModel实例(若用构造器创建,可直接在类中初始化)
    @Resource
    private ChatModel qwenChatModel;

    /**
     * AI对话核心方法
     * @param message 用户输入消息
     * @return AI生成的回复内容
     */
    public String chat(String message) {
        // 封装用户输入为UserMessage
        UserMessage userMessage = UserMessage.from(message);
        // 调用ChatModel与AI模型交互,获取响应
        ChatResponse chatResponse = qwenChatModel.chat(userMessage);
        // 解析响应中的AI回复内容
        AiMessage aiMessage = chatResponse.aiMessage();
        // 打印AI输出日志
        log.info("AI 输出:" + aiMessage.toString());
        // 返回AI回复的文本内容
        return aiMessage.text();
    }
}

说明:若采用构造器方式创建 ChatModel,可直接在服务类中初始化实例,无需通过 @Resource 注入。

2. 单元测试

编写 Spring Boot 单元测试,验证 AI 对话功能是否正常工作。


import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;

@SpringBootTest
class AiCodeHelperTest {

    @Resource
    private AiCodeHelper aiCodeHelper;

    @Test
    void chat() {
        // 调用对话方法,传入测试消息
        aiCodeHelper.chat("你好啊,朋友");
    }
}

测试说明

运行测试方法后,可通过日志查看 AI 输出内容,验证 ChatModel 是否成功与通义千问模型交互,且回复内容正常解析。

五、注意事项

  • API 密钥需妥善保管,避免泄露,建议通过配置中心或环境变量注入,而非硬编码。

  • 模型参数(temperature、maxTokens 等)需根据业务场景调整,平衡生成内容的随机性和长度限制。

  • 若切换其他模型(如 GPT、 Claude),需替换对应依赖和配置,ChatModel 的核心调用逻辑保持一致。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐