Langchain4j怎么结合DeepSeek打造本地知识库

Langchain4j 是一款优秀的AI Agent 开发框架。我们可以借助其快速的开发AI Agent的应用,它提供了大量主流的模型接入的实现方式。由于是外国开发的原因,国内的一些框架很多都没有单独的开发。好在他有标准的OpenAI 接口,由于大部分的大模型都支持标准的OpenAI。这就给我们创造了便利的条件去接入更多的优秀的模型。本文就是以 DeepSeek 为例子。

就在昨天之前。Langchain4j 的OpenAI,接口是无法兼容 DeepSeek 的 reasoning_content 内容的,然后就在 6天之后有人提交了兼容的PR。官方也在昨天发布了 V1.2.0 版本,这也就使得我们更加方便的无需自己手动改造的使用DeepSeek。

工欲善其事必先利其器,我们从头开发会面临很多的问题。今天我们就拿一款优秀的开源的AI知识库系统SparkX来看看他是怎么实现接入DeepSeek的。

SparkX 是采用 Springboot3 开发的 基于大语言模型和 RAG 的知识库问答系统。开箱即用、模型中立、灵活编排,支持快速嵌入到第三方业务系统。

开源地址:

gitee.com/shop-sparke...

github.com/nick-bai/Sp...

SparkX在版本 V1.1.2 中引入了对DeepSeek的的支持,我们打开代码,发现pom.xml中增加了几个依赖

xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>${langchain4j.version}</version>
</dependency>

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-core</artifactId>
    <version>${langchain4j.version}</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>${langchain4j.version}</version>
</dependency>

三个依赖的版本保持一致,都是V1.2.0。1.2.0之后OpenAI新增了 returnThinking 这个参数,如果设置成true则表示允许返回思考过程。

打开源码:sparkx.service.helper.StreamChatModelBuildHelper#buildOpenAI

添加图片注释,不超过 140 字(可选)

SparkX在构建 OpenAI 的时候,设置了 returnThinking 为true。在不支持 推理的模型上,这个参数是不起作用的。

接下来的新特性是。TokenStream 多了一个 onPartialThinking 的回调方法,我们在词方法内,就可以输出推理的思考信息了。思考信息与正常的回复信息是通过不同的回调给出的。

打开源码:sparkx.service.helper.SseEmitterHelper#asyncSend2Client

添加图片注释,不超过 140 字(可选)

这里SparkX设置了开启思考信息的<think>标签,这样,前端就可以根据 标签去区别渲染 思考部分和回复部分,给用户更好的体验。

打开前端源码:web\src\components\chatContent\index.vue

添加图片注释,不超过 140 字(可选)

在think标签周围增加 blockquote 这样 markdown 文本就可以轻而易举的区分内容了。于是我们就可以得到如下的效果:

添加图片注释,不超过 140 字(可选)

更多的细节,可以前往下载 SparkX 查看

相关推荐
知乎的哥廷根数学学派5 分钟前
基于物理信息嵌入与多维度约束的深度学习地基承载力智能预测与可解释性评估算法(以模拟信号为例,Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习
格林威31 分钟前
印刷电路板阻焊层缺失识别:防止短路风险的 7 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·机器学习·计算机视觉·视觉检测·工业相机
liu****36 分钟前
git工具
git·python·算法·机器学习·计算机基础
冰西瓜6001 小时前
从项目入手机器学习——(一)数据预处理(上)
人工智能·机器学习
sunfove1 小时前
空间几何的基石:直角、柱、球坐标系的原理与转换详解
人工智能·python·机器学习
知乎的哥廷根数学学派1 小时前
基于多尺度特征提取和注意力自适应动态路由胶囊网络的工业轴承故障诊断算法(Pytorch)
开发语言·网络·人工智能·pytorch·python·算法·机器学习
Yuer20251 小时前
低熵回答倾向:语言模型中的一种系统稳定态
人工智能·机器学习·语言模型·ai安全·edca os
郝学胜-神的一滴2 小时前
《机器学习》经典教材全景解读:周志华教授匠心之作的技术深探
数据结构·人工智能·python·程序人生·机器学习·sklearn
知乎的哥廷根数学学派2 小时前
基于物理约束与多源知识融合的浅基础极限承载力智能预测与工程决策优化(以模拟信号为例,Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
小棠师姐2 小时前
随机森林原理与实战:如何解决过拟合问题?
算法·机器学习·随机森林算法·python实战·过拟合解决