langchain4j整合springboot
环境介绍
- JDK17
- Spring Boot: 3.0.2
创建springboot工程
IDEA新建一个springboot项目,使用Spring lnitializr快速构建。
选择Spring Boot: 3.0.2以及Spring Web依赖
添加maven依赖
创建完springboot项目之后,在pom中添加关键依赖
<properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version><langchain4j.version>1.0.0-beta3</langchain4j.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 百炼 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
创建一个Controller
简单的创建一个controller用于Web访问
package com.kizzo.langchain4j_spingboot_demo.controller;import dev.langchain4j.community.model.dashscope.QwenChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/ai")
public class ChatController {@AutowiredQwenChatModel qwenChatModel;@RequestMapping("/chat")public String test(@RequestParam(defaultValue="你是谁") String message){String chat = qwenChatModel.chat(message);return chat;}
}
这里可以直接用@Autowired注解引入QwenChatModel,在pom中已经做了自动装配。查看AutoConfig源码发现@ConditionalOnProperty({“langchain4j.community.dashscope.chat-model.api-key”})。这个注解的意思就是 Spring 将检查是否存在名为 langchain4j.community.dashscope.chat-model.api-key 的属性,并且其值非空。
除了api-key还必须要加上langchain4j.community.dashscope.chat-model.model-name。否则在 QwenHelper 类的 isMultimodalModel 方法会报空指针异常
以上源码说明配置类必须要有api-keys和model-name,这里在原来的配置文件上进行新增属性
langchain4j.community.dashscope.chat-model.api-key=${QWEN_API_KEY}
langchain4j.community.dashscope.chat-model.model-name=qwen-plus