From 17ba40880674bf472d49d7a6c74d1e21fba248e0 Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Sun, 2 Mar 2025 21:34:44 +0800 Subject: [PATCH] =?UTF-8?q?20250302=20langchain+dashscope+deepseek?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=AE=80=E5=8D=95=E7=9A=84ai=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 71 +++++++++++++++++++ src/main/java/com/ai/LiangAiApplication.java | 11 +++ .../com/ai/config/LanguageModelConfig.java | 25 +++++++ .../ai/controller/LangChainController.java | 27 +++++++ src/main/java/com/ai/http/chat.http | 2 + .../java/com/ai/service/LangChainService.java | 21 ++++++ src/main/resources/application.properties | 4 ++ 7 files changed, 161 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/com/ai/LiangAiApplication.java create mode 100644 src/main/java/com/ai/config/LanguageModelConfig.java create mode 100644 src/main/java/com/ai/controller/LangChainController.java create mode 100644 src/main/java/com/ai/http/chat.http create mode 100644 src/main/java/com/ai/service/LangChainService.java create mode 100644 src/main/resources/application.properties diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..03d69c7 --- /dev/null +++ b/pom.xml @@ -0,0 +1,71 @@ + + 4.0.0 + + com.example + langchain-deepseek-r1 + 1.0-SNAPSHOT + + + 17 + 17 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + dev.langchain4j + langchain4j-core + 1.0.0-beta1 + + + dev.langchain4j + langchain4j-community-bom + 1.0.0-beta1 + pom + import + + + + dev.langchain4j + langchain4j-community-dashscope-spring-boot-starter + 1.0.0-beta1 + + + + + + + + org.springframework.boot + spring-boot-dependencies + 3.2.2 + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 17 + 17 + + -parameters + + + + + + diff --git a/src/main/java/com/ai/LiangAiApplication.java b/src/main/java/com/ai/LiangAiApplication.java new file mode 100644 index 0000000..b985495 --- /dev/null +++ b/src/main/java/com/ai/LiangAiApplication.java @@ -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); + } +} diff --git a/src/main/java/com/ai/config/LanguageModelConfig.java b/src/main/java/com/ai/config/LanguageModelConfig.java new file mode 100644 index 0000000..07f1d64 --- /dev/null +++ b/src/main/java/com/ai/config/LanguageModelConfig.java @@ -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(); + } +} diff --git a/src/main/java/com/ai/controller/LangChainController.java b/src/main/java/com/ai/controller/LangChainController.java new file mode 100644 index 0000000..25a8748 --- /dev/null +++ b/src/main/java/com/ai/controller/LangChainController.java @@ -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); + } +} diff --git a/src/main/java/com/ai/http/chat.http b/src/main/java/com/ai/http/chat.http new file mode 100644 index 0000000..ca7bb26 --- /dev/null +++ b/src/main/java/com/ai/http/chat.http @@ -0,0 +1,2 @@ +### 测试 LangChainController 的 chat 接口 +GET http://localhost:8080/langchain/chat?input=今天天气如何 diff --git a/src/main/java/com/ai/service/LangChainService.java b/src/main/java/com/ai/service/LangChainService.java new file mode 100644 index 0000000..adef403 --- /dev/null +++ b/src/main/java/com/ai/service/LangChainService.java @@ -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 response = model.generate(input); + return response.content(); + } +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..2a9d3da --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,4 @@ +server.port=8080 + +langchain4j.community.dashscope.api-key=sk-2f703a41fff0488e9b6888013d2ee58a +langchain4j.community.dashscope.model-name=deepseek-r1