Langchain4j的使用!Java实现对AI模型的使用!

目录

一、 引言

二、介绍

三、LangChain4j的学习使用

(一) LangChain4j的初步了解

功能能力

(二) LangChain4j语言大模型使用

1. 支持openAI,DeepSeek,Qwen等,也支持本地模型的调用

2. 图片大模型

(三) SpringBoot项目中使用LangChain4j

1. 普通的使用

2. Stream流的使用

3. Chat Memory

4. function-call

5. 更高层次的抽象

6. RAG

7. 检索增强阶段

四、结尾


一、 引言


  • 所以 LangChain4j 就是一个通过抽象统一API提供便捷可用的工具箱来简化 Java 应用程序集成LLMs的框架
  • LangChain4j 与 Spring AI 的宗旨基本一致,为简化 Java 应用快速接入 LLMs 而生,只是其各自侧重点、框架的能力有所不同而已。

二、介绍

记录本人对LangChain4j的学习使用,以及对AI模型的使用!

本文没有实现过程,只记录实现结果,和学习过程中的总结

LangChain4j官网 :LangChain4j | LangChain4j

三、LangChain4j的学习使用

(一) LangChain4j的初步了解

集成能力

功能能力

(二) LangChain4j语言大模型使用
1. 支持openAI,DeepSeek,Qwen等,也支持本地模型的调用

本地模型

2. 图片大模型

https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/1d/20/20250318/eca8532e/d5dc6f27-faeb-4a5f-8642-36b7fc36da66-1.png?Expires=1742375527&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4G8qL&Signature=BmQFVVLlN1AqGIznRLJAlmSFa2c%3D
(三) SpringBoot项目中使用LangChain4j
1. 普通的使用

2. Stream流的使用

在页面上的直观感受是AI在进行思考般对话

3. Chat Memory

普通对话不会保存上段对话的记忆

会话记忆保存

4. function-call

设置一个预设的场景"某个地区有多少个名字",当 对话中有触发的场景,走到方法中

5. 更高层次的抽象
  1. 可以预设语言模型的信息,充当助手的功能

  1. 当配合上function-call 可以实现一定的业务逻辑处理

6. RAG

检索增强生成(Retrieval-augmented Generation)对于基础大模型来说,他只具备通用信息,他的参数都是拿公网进行训练,并且有一定的时间延迟,无法得知一些具体业务数据和实时数据,这些数据往往在各种文件中(比如txt、word、html、数据库)

虽然function-call、SystemMessage可以用来解决一部分问题但是它只能少量,如果你要提供大量的业务领域信息,就需要给他外接一个知识库:

向量:向量通常用来做相似性搜索,比如语义的一维向量,可以表示词语或短语的语义相似性。例如,“你好”、"hello”和“见到你很高兴”可以通过一维向量来表示它们的语义接近程度。然而,对于更复杂的对象,比如小狗,无法仅通过一个维度来进行相似性搜索。这时,我们需要提取多个特征,如颜色、大小、品种等,将每个特征表示为向量的一个维度,从而形成一个多维向量。例如,一只棕色的小型泰迪犬可以表示为一个多维向量[棕色,小型,泰迪犬。如果需要检索见过更加精准,我们肯定还需要更多维度的向量,组成更多维度的空间,在多维向量空间中,相似性检索变得更加复杂。我们需要使用一些算法,如余弦相似度或欧几里得距离,来计算向量之间的相似性。向量数据库会帮我实现。

文本向量化

  1. 文本向量化分为两个阶段
    1. 数据嵌入阶段:将 文本信息 -->调用向量模型(Embedding) --> 转换为向量数据-->将向量数据存放在向量数据库中
    2. 数据检索阶段: 数据准备好之后 -->在用户提出问题后(退单操作)--> 由向量模型将问题向量化后-->在从向量数据库中查询相似性的信息-->将相似性的信息结合用户提问信息一起发送给LLM(大语言模型)-->LLM结合对话信息和相似向量数据,返回给用户数据!

知识库RAG演练

  1. 两个阶段: 数据嵌入阶段,数据使用阶段

解析器

TextDocumentParser来自 langchain4j模块的TextDocumentParser,它可以解析纯文本格式(e.g.TXT、HTML、MD等)的文件。

ApachePdfBoxDocumentParser 来自 langchain4j-document-parser-apache-pdfbox,它可以解析PDF文件

ApachePoiDocumentParser 来自 langchain4j-document-parser-apache-poi,可以解析 MS Office文件格式(e.g.DOC、DOCX、PPT、PPTX、XLS、XLSX等)

ApacheTikaDocumentParser来自 langchain4j-document-parser-apache-tika模块中,可以自动检测和解析几乎所有现有的文件格式

FileSystemDocumentLoader 来自dev.langchain4j.data.document.loader.FileSystemDocumentLoader,可以自动检测和解析几乎所有现有的文件格式

文本分割,对获取到的文本进行一定的分词处理

7. 检索增强阶段

当 RAG(本地知识库)中设置了某些信息的时候,在对话的时候出现一些词汇,会从本地知识库中进行检索

四、结尾

通过 LangChain4j的学习使用语言模型,加深了对于AI模型的了解,学习完成!

### LangChain4j与百炼大规模预训练模型使用指南 #### 一、环境准备 为了能够顺利运行LangChain4j并加载百炼大模型,需先准备好Java开发环境以及必要的依赖库。确保已安装JDK版本8及以上,并配置好Maven作为项目构建工具。 #### 二、引入依赖项 在`pom.xml`文件中加入如下片段来添加LangChain4j及相关组件的支持: ```xml <dependencies> <!-- LangChain4j核心包 --> <dependency> <groupId>com.langchain</groupId> <artifactId>langchain-core</artifactId> <version>${latest.version}</version> </dependency> <!-- 百炼模型支持插件 --> <dependency> <groupId>baidu.ai</groupId> <artifactId>bailian-model-support</artifactId> <version>${bailian.model.support.version}</version> </dependency> </dependencies> ``` 此处`${latest.version}`和`${bailian.model.support.version}`应替换为实际可用的最新稳定版号[^1]。 #### 三、初始化设置 创建一个新的Java类,在其中完成基本框架搭建工作,包括但不限于实例化链式处理器对象、指定要使用的具体模型名称等操作。 ```java import com.langchain.core.ChainProcessor; import baidu.ai.bailian.BaiLianModel; public class Main { public static void main(String[] args){ ChainProcessor processor = new ChainProcessor(); // 加载特定的大规模预训练模型——这里假设选择了名为'百炼'的那个 BaiLianModel model = (BaiLianModel)processor.loadModel("bailian"); System.out.println("成功加载了百炼大模型!"); } } ``` 这段代码展示了如何通过LangChain4j API接口调用来获取所需的语言处理能力[^2]。 #### 四、执行预测任务 当一切就绪之后就可以编写具体的业务逻辑了,比如向模型输入一段文字然后接收其返回的结果。 ```java String inputText = "你好世界"; Map<String, Object> result = model.predict(inputText); // 输出解析后的响应数据 System.out.println(result); ``` 以上就是关于利用LangChain4j结合百度研发的百炼系列大型自然语言理解模型的一个简单入门教程示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值