20250302 langchain+dashscope+deepseek实现简单的ai聊天案例

This commit is contained in:
liangjinglin 2025-03-02 21:34:44 +08:00
commit 17ba408806
7 changed files with 161 additions and 0 deletions

71
pom.xml Normal file
View File

@ -0,0 +1,71 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>langchain-deepseek-r1</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- LangChain Java -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-core</artifactId>
<version>1.0.0-beta1</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>1.0.0-beta1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
<version>1.0.0-beta1</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.2.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version> <!-- 可以根据实际情况调整版本 -->
<configuration>
<source>17</source> <!-- 可以根据你的 Java 版本调整 -->
<target>17</target> <!-- 可以根据你的 Java 版本调整 -->
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,11 @@
package com.ai;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LiangAiApplication {
public static void main(String[] args) {
SpringApplication.run(LiangAiApplication.class, args);
}
}

View File

@ -0,0 +1,25 @@
package com.ai.config;
import dev.langchain4j.community.model.dashscope.QwenLanguageModel;
import dev.langchain4j.model.language.LanguageModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class LanguageModelConfig {
@Value("${langchain4j.community.dashscope.api-key}")
private String apiKey;
@Value("${langchain4j.community.dashscope.model-name}")
private String modelName;
@Bean
public LanguageModel languageModel() {
return QwenLanguageModel.builder()
.apiKey(apiKey)
.modelName(modelName)
.build();
}
}

View File

@ -0,0 +1,27 @@
package com.ai.controller;
import com.ai.service.LangChainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/langchain")
public class LangChainController {
@Autowired
private LangChainService langChainService;
/**
* 处理用户输入并调用 LangChainService 获取响应
* @param input 用户输入的内容
* @return 大语言模型生成的响应
*/
@GetMapping("/chat")
public String chat(@RequestParam("input") String input) {
System.out.println("start chat...");
return langChainService.getResponse(input);
}
}

View File

@ -0,0 +1,2 @@
### 测试 LangChainController 的 chat 接口
GET http://localhost:8080/langchain/chat?input=今天天气如何

View File

@ -0,0 +1,21 @@
package com.ai.service;
import dev.langchain4j.community.model.dashscope.QwenLanguageModel;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.language.LanguageModel;
import dev.langchain4j.model.output.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LangChainService {
@Autowired
private LanguageModel model;
public String getResponse(String input) {
Response<String> response = model.generate(input);
return response.content();
}
}

View File

@ -0,0 +1,4 @@
server.port=8080
langchain4j.community.dashscope.api-key=sk-2f703a41fff0488e9b6888013d2ee58a
langchain4j.community.dashscope.model-name=deepseek-r1