LangChain4j ChatModel
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 的核心调用逻辑保持一致。
更多推荐


所有评论(0)