LangChain4j入门二:构建基于阿里云通义千问的 简单AI 会话

发布于:2025-09-06 ⋅ 阅读:(16) ⋅ 点赞:(0)

ChatModel是LangChain4j中用于与聊天模型进行交互的核心接口。它抽象了发送消息、接收响应以及处理流式输出等操作。

一、ChatModel 核心特性

  • 消息交互:支持 UserMessageSystemMessageAiMessage 等消息类型,模拟真实对话流程。
  • 流式响应:通过 StreamingChatLanguageModel 支持实时接收模型输出,提升用户体验。
  • 灵活配置:可设置温度(temperature)、最大生成 token 数(maxTokens)等参数。
  • 多平台支持:通过不同实现类无缝切换后端模型(如 Qwen、GPT、LLaMA 等)。

二、为什么选择阿里云通义千问?

由于 OpenAI 在国内访问受限,我们选择国产优秀大模型——阿里云通义千问(Qwen)。它具备强大的中文理解与生成能力,且通过阿里云百炼平台提供稳定 API 接口,非常适合国内开发者使用。

三、项目搭建步骤

第一步:创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA,选择 New Project

  2. 选择 Spring Initializr,填写项目名称、路径。

  3. 技术栈选择:

    • 构建工具:Maven
    • Java 版本:17 或以上(推荐)
    • Spring Boot 版本:3.5.5(兼容性良好)
  4. 添加依赖:

    • Spring Web
    • Lombok

    点击“Create”完成项目创建。

第二步:配置文件格式化(.properties → .yml)

为便于管理复杂配置,建议将默认的 application.properties 改为 YAML 格式:

  1. 删除 src/main/resources/application.properties
  2. 新建 application.yml

第三步:引入 LangChain4j 与阿里云 DashScope 依赖

pom.xml 中添加以下依赖:

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

第四步:获取阿里云 API Key

  1. 访问 阿里云百炼平台
  2. 注册并登录账号
  3. 进入「模型广场」,选择 通义千问系列模型(如 qwen-max)
  4. 获取您的专属 API Key(请妥善保管,勿泄露)

第五步:配置 application.yml

application.yml 中添加 LangChain4j 配置:

langchain4j:
  community:
    dashscope:
      chat-model:
        model-name: qwen-max
        api-key: <Your-API-Key-Here>  # 替换为实际密钥

注:配置完成后,Spring Boot 会自动注入 ChatModel 实例,无需手动初始化。


第六步:编写 AI 助手服务类

创建包 com.example.ai,并在其中新建 AIHelper.java

package com.example.ai;

import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.UserMessage;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.message.AiMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Resource;

@Service
@Slf4j
public class AIHelper {

    @Resource
    private ChatModel chatModel;

    /**
     * 与 AI 进行对话
     * @param message 用户输入的消息
     * @return AI 返回的文本
     */
    public String aiChat(String message) {
        // 构造用户消息
        UserMessage userMessage = UserMessage.from(message);

        // 发起请求并获取响应
        ChatResponse chatResponse = chatModel.chat(userMessage);

        // 提取 AI 回复内容
        AiMessage aiMessage = chatResponse.aiMessage();

        // 输出日志(便于调试)
        log.info("AI 输出:{}", aiMessage.text());

        return aiMessage.text();
    }
}

注解说明:

  • @Service:将此类注册为 Spring 容器中的服务 Bean
  • @Slf4j:使用 Lombok 自动生成日志对象 log
  • @Resource:自动注入 LangChain4j 提供的 ChatModel

第七步:编写单元测试

  1. src/test/java 下创建测试类 AIHelperTest
  2. 使用 IDEA 快捷键 Alt + EnteraiChat 方法上生成测试
package com.example.ai;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.assertNotNull;

@SpringBootTest
class AIHelperTest {

    @Autowired
    private AIHelper aiHelper;

    @Test
    void chat() {
        String response = aiHelper.aiChat("你好,请介绍一下你自己,以及你能做什么?");
        assertNotNull(response);
        System.out.println("AI 回应:\n" + response);
    }
}

运行测试,效果如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


四、常见问题与解决方案

问题 原因 解决方案
中文乱码 JVM 编码与控制台不一致 添加 VM 参数:-Dfile.encoding=UTF-8
找不到 log 符号 Lombok 未启用 安装 Lombok 插件,开启注解处理器
TypeTag.UNKNOWN 错误 JDK 24 不兼容旧版 Lombok 降级至 JDK 17 或升级 Lombok 到 1.18.30+
API 调用失败 密钥错误或网络不通 检查 API Key 是否正确,确认网络可达


网站公告

今日签到

点亮在社区的每一天
去签到