当前位置: 首页 > news >正文

LangChain4J实战,高效速通

文章目录

  • 1.LangChain4J理论概述
    • 介绍
    • 大模型能干什么
    • LLM应用技术架构
    • 大模型开发分类
  • 2.LangChain4J之HelloWorld
    • LangChain4J支持的大语言模型
    • 接入阿里云百炼
      • 获得Api-key
      • 创建工程
      • 创建Module
    • 如果保证多种大模型在系统里共存
      • DeepSeek
      • 创建Module
  • 3.LangChain4J整合Springboot
      • SpringBoot整合低阶API
      • SpringBoot整合高阶API
      • LangChain4J原生整合
      • LangChain4J-Boot整合
      • 总结
      • 开发

1.LangChain4J理论概述

随着人工智能(AI)技术的迅猛发展,越来越多的开发者开始将目光投向AI应用的开发。然而,目前市场上大多数AI框架和工具如LangChain、PyTorch等主要支持Python,而Java开发者常常面临工具缺乏和学习门槛较高的问题,但是不用担心,谁让Java/Spring群体强大那?,O(∩_∩)O

任何一个框架/XXX云服务器,想要大面积推广,应该不会忘记庞大的Spring社区和Java程序员

在这里插入图片描述

https://docs.langchain4j.dev

在这里插入图片描述

介绍

在这里插入图片描述

大模型能干什么

在这里插入图片描述

LLM应用技术架构

在这里插入图片描述

https://docs.langchain4j.dev/get-started

大模型开发分类

在这里插入图片描述

2.LangChain4J之HelloWorld

LangChain4J支持的大语言模型

https://docs.langchain4j.dev/category/language-models

在这里插入图片描述

接入阿里云百炼

https://bailian.console.aliyun.com/

获得Api-key

在这里插入图片描述

创建工程

<?xml version="1.0" encoding="UTF-8"?>
<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.atguigu.stduy</groupId><artifactId>langchain4j-atguiguV5</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>langchain4j-atguiguV5-Maven父工程POM配置</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>17</java.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><!-- Spring Boot --><spring-boot.version>3.5.0</spring-boot.version><!-- Spring AI --><spring-ai.version>1.0.0</spring-ai.version><!-- Spring AI Alibaba --><spring-ai-alibaba.version>1.0.0-M6.1</spring-ai-alibaba.version><!-- langchain4j --><langchain4j.version>1.0.1</langchain4j.version><!--langchain4j-community 引入阿里云百炼平台依赖管理清单--><langchain4j-community.version>1.0.1-beta6</langchain4j-community.version><!-- maven plugin --><maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version><flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version><maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version></properties><dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring AI --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring AI Alibaba --><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>${spring-ai-alibaba.version}</version></dependency><!--langchain4j的依赖清单,加载BOM后所有langchain4j版本号可以被统一管理起来https://docs.langchain4j.dev/get-started--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency><!--引入阿里云百炼平台依赖管理清单https://docs.langchain4j.dev/integrations/language-models/dashscope--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-bom</artifactId><version>${langchain4j-community.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>${maven-deploy-plugin.version}</version><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><release>${java.version}</release><compilerArgs><compilerArg>-parameters</compilerArg></compilerArgs></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>${flatten-maven-plugin.version}</version><inherited>true</inherited><executions><execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals><configuration><updatePomFile>true</updatePomFile><flattenMode>ossrh</flattenMode><pomElements><distributionManagement>remove</distributionManagement><dependencyManagement>remove</dependencyManagement><repositories>remove</repositories><scm>keep</scm><url>keep</url><organization>resolve</organization></pomElements></configuration></execution><execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

创建Module

引入pom

<?xml version="1.0" encoding="UTF-8"?>
<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><parent><groupId>com.atguigu.stduy</groupId><artifactId>langchain4j-atguiguV5</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>langchain4j-01helloworld</artifactId><name>langchain4j-01helloworld入门案例</name><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--langchain4j-open-ai 基础--><!--所有调用均基于 OpenAI 协议标准,实现一致的接口设计与规范LangChain4j 提供与许多 LLM 提供商的集成从最简单的开始方式是从 OpenAI 集成开始https://docs.langchain4j.dev/get-started    --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!--langchain4j 高阶--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

在这里插入图片描述

server.port=9001spring.application.name=langchain4j-01helloworld
package com.atguigu.study.config;import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @auther zzyybs@126.com* @Date 2025-05-27 22:04* @Description: 知识出处 https://docs.langchain4j.dev/get-started*/
@Configuration
public class LLMConfig {@Beanpublic ChatModel chatModelQwen(){return OpenAiChatModel.builder().apiKey(System.getenv("aliQwen-api"))  // 注意:这里api-key放在本地环境变量中.modelName("qwen-plus").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build();}}

package com.atguigu.study.controller;import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @auther zzyybs@126.com* @Date 2025-05-27 21:43* @Description: TODO*/
@RestController
@Slf4j
public class HelloLangChain4JController
{@Resourceprivate ChatModel chatModelQwen;// http://localhost:9001/langchain4j/hello?prompt=如何学习java@GetMapping(value = "/langchain4j/hello")public String hello(@RequestParam(value = "prompt", defaultValue = "你是谁") String prompt){String result = chatModelQwen.chat(prompt);System.out.println("通过langchain4j调用模型返回结果:\n"+result);return result;}
}

测试:

http://localhost:9001/langchain4j/hello?question=如何学习mysql
在这里插入图片描述

如果保证多种大模型在系统里共存

DeepSeek

https://platform.deepseek.com/usage

API文档

https://api-docs.deepseek.com/zh-cn/

在这里插入图片描述

创建Module

<?xml version="1.0" encoding="UTF-8"?>
<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><parent><groupId>com.atguigu.stduy</groupId><artifactId>langchain4j-atguiguV5</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>langchain4j-02multi-model-together</artifactId><name>langchain4j-02multi-model-together多模型共存</name><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--langchain4j-open-ai 基础--><!--所有调用均基于 OpenAI 协议标准,实现一致的接口设计与规范LangChain4j 提供与许多 LLM 提供商的集成从最简单的开始方式是从 OpenAI 集成开始https://docs.langchain4j.dev/get-started    --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!--langchain4j 高阶--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

配置类

package com.atguigu.study.config;import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @auther zzyybs@126.com* @Date 2025-05-27 22:04* @Description: 知识出处 https://docs.langchain4j.dev/get-started*/
@Configuration
public class LLMConfig
{@Bean(name = "qwen")public ChatModel chatModelQwen(){return OpenAiChatModel.builder().apiKey(System.getenv("aliQwen-api")).modelName("qwen-plus").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build();}/*** @Description: 知识出处,https://api-docs.deepseek.com/zh-cn/* @Auther: zzyybs@126.com*/@Bean(name = "deepseek")public ChatModel chatModelDeepSeek(){return  OpenAiChatModel.builder().apiKey(System.getenv("deepseek-api")).modelName("deepseek-chat")//.modelName("deepseek-reasoner").baseUrl("https://api.deepseek.com/v1").build();}
}
package com.atguigu.study.controller;import dev.langchain4j.model.chat.ChatModel;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @auther zzyybs@126.com* @Date 2025-05-28 11:27* @Description: TODO*/
@RestController
@Slf4j
public class MultiModelController
{@Resource(name = "qwen")private ChatModel chatModelQwen;@Resource(name = "deepseek")private ChatModel chatModelDeepSeek;// http://localhost:9002/multimodel/qwen@GetMapping(value = "/multimodel/qwen")public String qwenCall(@RequestParam(value = "prompt", defaultValue = "你是谁") String prompt){String result = chatModelQwen.chat(prompt);System.out.println("通过langchain4j调用模型返回结果:\n"+result);return result;}// http://localhost:9002/multimodel/deepseek@GetMapping(value = "/multimodel/deepseek")public String deepseekCall(@RequestParam(value = "prompt", defaultValue = "你是谁") String prompt){String result = chatModelDeepSeek.chat(prompt);System.out.println("通过langchain4j调用模型返回结果:\n"+result);return result;}
}

3.LangChain4J整合Springboot

https://docs.langchain4j.dev/tutorials/spring-boot-integration
在这里插入图片描述

在这里插入图片描述

SpringBoot整合低阶API

在这里插入图片描述

SpringBoot整合高阶API

在这里插入图片描述

LangChain4J原生整合

在这里插入图片描述

LangChain4J-Boot整合

在这里插入图片描述

总结

在这里插入图片描述

开发

创建Module

langchain4j-03boot-integration

pom

<?xml version="1.0" encoding="UTF-8"?>
<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><parent><groupId>com.atguigu.stduy</groupId><artifactId>langchain4j-atguiguV5</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>langchain4j-03boot-integration</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--langchain4j原生 基础--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!--langchain4j原生 高阶--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!--1 LangChain4j 整合boot底层支持--><!--   https://docs.langchain4j.dev/tutorials/spring-boot-integration  --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId></dependency><!--2 LangChain4j 整合boot高阶支持--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

配置

server.port=9003spring.application.name=langchain4j-12boot-integration# https://docs.langchain4j.dev/tutorials/spring-boot-integration
langchain4j.open-ai.chat-model.api-key=${aliQwen-api}
langchain4j.open-ai.chat-model.model-name=qwen-plus
langchain4j.open-ai.chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1

在这里插入图片描述

低阶API

package com.atguigu.study.controller;import dev.langchain4j.model.chat.ChatModel;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @auther zzyybs@126.com* @Date 2025-06-18 15:43* @Description: TODO*/
@RestController
public class PopularIntegrationController
{@Resourceprivate ChatModel chatModel;// http://localhost:9003/lc4j/boot/chat@GetMapping(value = "/lc4j/boot/chat")public String chat(@RequestParam(value = "prompt", defaultValue = "你是谁") String prompt){return chatModel.chat(prompt);}
}

高阶API

自定义一个接口并添加注解@AiService

package com.atguigu.study.service;import dev.langchain4j.service.spring.AiService;/*** @auther zzyybs@126.com* @Date 2025-06-18 15:40* @Description: 知识出处,https://docs.langchain4j.dev/tutorials/spring-boot-integration/#spring-boot-starter-for-declarative-ai-services*/
@AiService
public interface ChatAssistant
{String chat(String prompt);
}
package com.atguigu.study.controller;import com.atguigu.study.service.ChatAssistant;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @auther zzyybs@126.com* @Date 2025-06-18 15:43* @Description: TODO*/
@RestController
public class DeclarativeAIServiceController
{@Resourceprivate ChatAssistant chatAssistantQwen;// http://localhost:9003/lc4j/boot/declarative@GetMapping(value = "/lc4j/boot/declarative")public String declarative(@RequestParam(value = "prompt", defaultValue = "你是谁") String prompt){return chatAssistantQwen.chat(prompt);}
}
http://www.dtcms.com/a/484032.html

相关文章:

  • 万万州州微微网站网站建建设设做ppt图片网站 知乎
  • 20251014 区间DP总结
  • 商城系统网站模板免费下载浙江平台网站建设公司
  • html5:拖放 / demo / 拖放事件(Drag Events)/ DataTransfer 对象方法
  • 早期小软件与现代大软件的区别与发展问题
  • 图解网络(第二集)
  • 做外贸服装的网站微信如何引流推广精准加人
  • 多态:C++面向对象编程的“灵魂”所在
  • 大连网站快速排名提升深圳互联网公司网站
  • 建设银行广西分行网站做自媒体的网站有哪些
  • 楼市南京做凶宅的网站郑州营销网站建设公司
  • 搭建网站需要备案吗上海网站工作室
  • 学校网站建设计入哪个会计科目类似于wordpress的网站
  • 网站seo其应用买的网站模板怎么做
  • 【GESP】C++五级考试大纲知识点梳理, (3-4) 链表-双向循环链表
  • wordpress打开网站前广告怎样免费建设个人网站
  • 网站logo更换旅游做攻略用什么网站好
  • 天津黑曼巴网站建设无锡网站排名公司
  • 【鸿蒙5.0】Scroll左右滑动
  • 抢购网站源码dz门户 WordPress
  • 百度官方网站网址wordpress微博登陆
  • 团购网站 设计方案那些网站可以做行测题
  • Spring Boot中Spring Data JPA的常用注解
  • 02117 信息组织【第四章】
  • 做带会员后台的网站用什么软件建设工程信息网一体化平台
  • 做刷单网站违法吗win7 asp.net网站架设
  • DyCoke论文阅读
  • 做翻译网站 知乎丹阳网站建设方案
  • 门户网站建设基础术语制作旅游网站的步骤
  • 开发网站建设设计公司中天建设集团网站