人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口
整体逻辑:
自建系统的web UI界面调用接口:
1.SpringBoot接口:/anything/chatMessageAnything
2.调用anythingLLM - 调用知识库+deepseek r1 .
部署 AnythingLLM + DeepSeek 本地知识库 的环境要求如下:
一、硬件要求
-
CPU
- 最低:4核(如 Intel Core i5 或 AMD Ryzen 5)
- 推荐:高性能 CPU(如 Intel Core i7 或 AMD Ryzen 7)
-
内存
- 最低:16GB RAM(需启用交换空间扩展)
- 推荐:32GB 或更高(支持大模型推理与多任务处理)
-
存储
- 最低:20GB 可用空间(用于模型与依赖库)
- 推荐:50GB+(支持多模型存储与数据扩展)
二、软件要求
-
操作系统
- 支持 Linux(CentOS 7+/Ubuntu 12+) 或 Windows 10+(WSL2 推荐)
-
运行时环境
- Python 3.8+ (用于数据处理与服务端逻辑)
- Node.js 16+ (用于启动 AnythingLLM 前端与后端服务)
- Ollama (用于本地部署 DeepSeek 等大语言模型)
-
容器化工具(可选)
- Docker (支持通过容器快速部署,避免环境冲突)


GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。
https://gitcode.com/gh_mirrors/an/anything-llm
Windows Installation ~ AnythingLLM
https://docs.anythingllm.com/installation-desktop/windows
http://localhost:3001/api/docs/
http://localhost:3001/api/docs/
三、功能实现
要在 Spring Boot 中调用 AnythingLLM 的发消息接口,可以通过以下步骤实现。假设你已经了解 AnythingLLM 的 API 文档(如端点、认证方式、请求参数等),以下是通用实现方案:
1. 添加依赖
在 pom.xml 中添加 Spring Web 依赖(如果项目中没有):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2. 配置 AnythingLLM API 参数
在 application.properties 或 application.yml 中配置 API 的基础信息:
properties
# application.properties
anythingllm.api.url=https://api.anythingllm.com/v1/messages
anythingllm.api.key=your_api_key_here

3. 创建 API 调用服务
使用 RestTemplate 或 WebClient 调用 AnythingLLM 的接口。以下是两种实现方式:
方式一:使用 RestTemplate
java
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class AnythingLLMService {
private final RestTemplate restTemplate;
private final String apiUrl;
private final String apiKey;
public AnythingLLMService(
RestTemplate restTemplate,
@Value("${anythingllm.api.url}") String apiUrl,
@Value("${anythingllm.api.key}") String apiKey) {
this.restTemplate = restTemplate;
this.apiUrl = apiUrl;
this.apiKey = apiKey;
}
public ResponseEntity<String> sendMessage(String messageContent) {
// 设置请求头(包含 API Key)
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + apiKey);
headers.set("Content-Type", "application/json");
// 构建请求体
String requestBody = "{\"content\": \"" + messageContent + "\"}";
// 发送 POST 请求
HttpEntity<String> request = new HttpEntity<>(requestBody, headers);
return restTemplate.exchange(
apiUrl,
HttpMethod.POST,
request,
String.class
);
}
}
方式二:使用 WebClient(推荐响应式编程)
java
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
@Service
public class AnythingLLMService {
private final WebClient webClient;
private final String apiUrl;
private final String apiKey;
public AnythingLLMService(
WebClient.Builder webClientBuilder,
@Value("${anythingllm.api.url}") String apiUrl,
@Value("${anythingllm.api.key}") String apiKey) {
this.webClient = webClientBuilder.baseUrl(apiUrl).build();
this.apiUrl = apiUrl;
this.apiKey = apiKey;
}
public Mono<String> sendMessage(String messageContent) {
return webClient.post()
.uri("/")
.header(HttpHeaders.AUTHORIZATION, "Bearer " + apiKey)
.contentType(MediaType.APPLICATION_JSON)
.bodyValue("{\"content\": \"" + messageContent + "\"}")
.retrieve()
.bodyToMono(String.class);
}
}
4. 控制器层(可选)
如果需要通过 HTTP 接口触发消息发送,可以添加一个 Controller:
java
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Mono;
@RestController
@RequestMapping("/api/messages")
public class MessageController {
private final AnythingLLMService anythingLLMService;
public MessageController(AnythingLLMService anythingLLMService) {
this.anythingLLMService = anythingLLMService;
}
@PostMapping
public Mono<String> sendMessage(@RequestBody String messageContent) {
return anythingLLMService.sendMessage(messageContent);
}
}

5. 异常处理
添加全局异常处理,捕获 API 调用中的错误:
java
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.client.HttpClientErrorException;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(HttpClientErrorException.class)
public ResponseEntity<String> handleHttpClientError(HttpClientErrorException ex) {
return ResponseEntity.status(ex.getStatusCode())
.body("API调用失败: " + ex.getResponseBodyAsString());
}
}
6. 测试调用
使用 RestTemplate 测试
java
@SpringBootTest
public class AnythingLLMServiceTest {
@Autowired
private AnythingLLMService anythingLLMService;
@Test
public void testSendMessage() {
ResponseEntity<String> response = anythingLLMService.sendMessage("Hello, AnythingLLM!");
assertEquals(HttpStatus.OK, response.getStatusCode());
}
}
使用 WebClient 测试
java
@Test
public void testSendMessage() {
anythingLLMService.sendMessage("Hello, AnythingLLM!")
.subscribe(response -> {
assertNotNull(response);
System.out.println("API Response: " + response);
});
}
注意事项
- API 认证 :根据 AnythingLLM 的文档调整认证方式(如 API Key、OAuth 等)。
- 请求体格式 :确保请求体的 JSON 结构与 API 要求一致(如字段名称、嵌套结构)。
- 超时配置 :如果接口响应较慢,需配置
RestTemplate或WebClient的超时时间。 - 日志记录 :建议在调用过程中添加日志,方便调试和监控。
如果需要更具体的实现(如文件上传、复杂参数),请提供 AnythingLLM 的 API 文档细节!
知识库文件上传


相关文章:
人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口
整体逻辑: 自建系统的web UI界面调用接口: 1.SpringBoot接口:/anything/chatMessageAnything 2.调用anythingLLM - 调用知识库deepseek r1 . 部署 AnythingLLM DeepSeek 本地知识库 的环境要求如下: 一、硬件要求 CPU 最低:4核&#x…...
体育直播模板nba英超直播欧洲杯直播模板手机自适应
源码名称:体育直播模板nba英超直播欧洲杯直播模板手机自适应帝国cms 7.5模板 开发环境:帝国cms7.5 空间支持:phpmysql 带软件采集,可以挂着自动采集发布,无需人工操作! 模板特点: 程序伪静态…...
STM32-ARM
一、体系架构 ARM里有37个寄存器ALU算数逻辑单元PC程序计数器:指向哪里执行哪里SP栈指针寄存器LR链接寄存器:保存函数入口地址CPSR(current program status register)当前程序状态寄存器:SOSR(CPSR的备份)MMU(内存管理单元)Cache高速缓冲(iCa…...
ripro 主题激活 问题写入授权Token失败,可能无文件写入权限
ripro 主题激活 问题 写入授权Token失败,可能无文件写入权限 找到主题下面的functions.php文件,给其他写入权限。就好了。...
Lustre 语言的 Rust 生成相关的工作
目前 Lustre V6 编译器支持编译生成的语言为C语言。但也注意到,以 Rust 语言为生成目标语言,也存在若干相关工作。 rustre(elegaanz) 该项工作为 Lustre v6 语言的解析器,使用 Rust 语言实现。生成 Lustre AST。 项…...
计算机网络——通信基础和传输介质
物理层任务:实现相邻节点之间比特(0或1)的传输 到了数据链路层之后,它会以帧为单位,把若干个比特交给物理层,物理层需要把这些比特信息转化成信号,在物理传输媒体上进行传输 通信基础基本概念 信…...
python-selenium 爬虫 由易到难
本质 python第三方库 selenium 控制 浏览器驱动 浏览器驱动控制浏览器 推荐 edge 浏览器驱动(不容易遇到版本或者兼容性的问题) 驱动下载网址:链接: link 1、实战1 (1)安装 selenium 库 pip install selenium&#…...
Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac‘.
What went wrong: Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac’. Could not resolve all files for configuration ‘:path_provider_android:androidJdkImage’. Failed to transform core-for-system-modules.jar to match attributes {…...
【Linux 维测专栏 2 -- Deadlock detection介绍】
文章目录 kernel 编译选项配置deadlock 测试代码deadlock 测试 logkernel 编译选项配置 通过 menuconfig 配置下面编译选项 # lockdep CONFIG_LOCK_STAT=y CONFIG_PROVE_LOCKING=y CONFIG_DEBUG_LOCKDEP=y上面配置完成后会定义下面宏: CONFIG_LOCK_DEBUGGING_SUPPORT=y CONF…...
T113-i开发板的休眠与RTC定时唤醒指南
在嵌入式系统设计中,休眠与唤醒技术是优化电源管理、延长设备续航的关键。飞凌嵌入式基于全志T113-i处理器开发设计的OK113i-S开发板提供了两种休眠模式:freeze和mem,以满足不同应用场景下的功耗与恢复速度需求。本文将详细介绍如何让OK1…...
Node.js系列(4)--微服务架构实践
Node.js微服务架构实践 🔄 引言 微服务架构已成为构建大规模Node.js应用的主流选择。本文将深入探讨Node.js微服务架构的设计与实现,包括服务拆分、服务治理、通信机制等方面,帮助开发者构建可扩展的微服务系统。 微服务架构概述 Node.js…...
基于Spring Boot的公司资产网站的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
CSS 中flex - grow、flex - shrink和flex - basis属性的含义及它们在弹性盒布局中的协同作用。
大白话CSS 中flex - grow、flex - shrink和flex - basis属性的含义及它们在弹性盒布局中的协同作用。 在 CSS 的弹性盒布局(Flexbox)里,flex-grow、flex-shrink 和 flex-basis 这三个属性对弹性元素的尺寸和伸缩性起着关键作用。下面为你详细…...
基于CVX优化器的储能电池调峰调频算法matlab仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 原理概述 4.2 CVX工具箱概述 5.完整工程文件 1.课题概述 基于CVX优化器的储能电池调峰调频算法matlab仿真。CVX 是一种用于求解凸优化问题的强大工具。凸优化问题具有良好的数学性质,能…...
SpringBoot3+Vue3开发学生成绩管理系统
系统介绍 此系统功能包含:首页、课程管理、成绩查询、成绩详情、班级管理、专业管理、用户管理等功能。用户管理又细分为账号管理、学生管理、教师管理、管理员管理。 基础功能包含:登录、退出、修改登录人信息、修改登录人密码。 分为4种角色&#x…...
正则魔法:解码 return /^\d+$/.test(text) ? text : ‘0‘ 的秘密
🚀 正则魔法:解码 return /^\d$/.test(text) ? text : 0 的秘密 🌟 嘿,技术探险家们!👋 今天我们要破解一段看似简单的代码:return /^\d$/.test(text) ? text : 0。它藏在一个 Vue 前端组件中…...
基于BClinux8部署Ceph 19.2(squid)集群
#作者:闫乾苓 文章目录 1.版本选择Ceph版本发布历史目前官方在维护的版本 2.部署方法3.服务器规划4.前置配置4.1系统更新4.2配置hosts cat >> /etc/hosts << EOFssh-keygenssh-copy-id ceph01ssh-copy-id ceph02ssh-copy-id ceph034.5 Python34.6 Syst…...
CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~
汇总结果来源:CVPR 2025 Accepted Papers 若文中出现的 论文链接 和 GitHub链接 点不开,则说明还未公布,在公布后笔者会及时添加. 若笔者未及时添加,欢迎读者告知. 文章根据题目关键词搜索,可能会有遗漏. 若笔者出现…...
[leetcode]1631. 最小体力消耗路径(bool类型dfs+二分答案/记忆化剪枝/并查集Kruskal思想)
题目链接 题意 给定 n m n\times m nm地图 要从(1,1) 走到 (n,m) 定义高度绝对差为四联通意义下相邻的两个点高度的绝对值之差 定义路径的体力值为整条路径上 所有高度绝对差的max 求所有路径中 最小的路径体力值是多少 方法1 这是我一开始自己写的记忆化剪枝 比较暴力 时…...
Linux-Ubuntu 系统学习笔记 | 从入门到实战
📘 Linux-Ubuntu 系统学习笔记 | 从入门到实战 📜 目录 环境安装基本操作Linux操作系统介绍文件系统常用命令用户权限管理编辑器vimGCC编译器动态库与静态库Makefile 1. 环境安装 🌟 下载镜像 推荐使用清华大学开源镜像站下载Ubuntu镜像&a…...
Java学习笔记-XXH3哈希算法
XXH3是由Yann Collet设计的非加密哈希算法,属于XXHash系列的最新变种,专注于极速性能与低碰撞率,适用于对计算效率要求极高的场景。 极速性能 在RAM速度限制下运行,小数据(如 1-128 字节)处理可达纳秒级&…...
【容器运维】docker搭建私有仓库
一、基础方案:使用 Docker Registry 快速搭建 1. 拉取并启动 Registry 镜像 # 拉取官方镜像 docker pull registry:2# 运行容器(数据持久化到宿主机目录) docker run -d -p 5000:5000 \--name my-registry \-v /opt/data/registry:/var/lib…...
深入理解 Spring 框架中的 AOP 技术
一、引言 在 Java 开发领域,Spring 框架凭借其强大的功能和丰富的特性,成为了众多开发者构建企业级应用的首选。其中,面向切面编程(AOP)作为 Spring 框架的核心技术之一,为开发者提供了一种全新的程序结构…...
磁盘清理工具-TreeSize Free介绍
TreeSizeFree是一个磁盘空间管理工具,主要用于分析磁盘使用情况,帮助用户找到占用空间大的文件和文件夹: 特点:按大小排序:快速找到占用空间最大的文件或文件夹 一般可以删除: 扫描 C:\Users\XXX\AppData\Local\Temp 或 C:\Window…...
redis MISCONF Redis is configured to save RDB snapshots报错解决
直接上解决方案 修改redis配置文件 stop-writes-on-bgsave-error no 重启redis...
c#知识点补充2
1.非静态类能否调用静态方法可以 2.对string类型扩展方法,如何进行 类用静态类,参数是this 调用如下 3.out的用法 一定要给a赋值 这种写法不行 这样才行 4.匿名类 5.委托的使用 无论是匿名委托,还是具命委托,委托实例化后一定要…...
循环神经网络(Recurrent Neural Network, RNN)与 Transformer
循环神经网络(RNN)与 Transformer 1. 循环神经网络(RNN)简介 1.1 RNN 结构 循环神经网络(Recurrent Neural Network, RNN)是一种适用于处理序列数据的神经网络。其核心特点是通过隐藏状态(Hi…...
力扣45.跳跃游戏
45. 跳跃游戏 II - 力扣(LeetCode) 代码区: #include<vector> class Solution {public:int jump(vector<int>& nums) {int ans[10005] ;memset(ans,1e4,sizeof(ans));ans[0]0;for(int i0;i<nums.size();i){for(int j1;j…...
招聘面试季--方法论--如何从零到-规划一个新的app产品
规划一个新APP产品的系统化步骤及关键要点: 一、需求验证阶段 明确目标用户与核心需求 通过用户调研(问卷、访谈)定义目标人群的痛点和场景,例如购物类APP需优先满足浏览、支付等核心需求。判断APP的必要性:若功…...
MacOS安装 nextcloud 的 Virtual File System
需求 在Mac上安装next cloud实现类似 OneDrive 那样,文件直接保存在服务器,需要再下载到本地。 方法 在 官网下载Download for desktop,注意要下对版本,千万别下 Mac OS默认的那个。 安装了登录在配置过程中千万不要设置任何同…...
