人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口

06-01 1684阅读

 整体逻辑:

自建系统的web UI界面调用接口:

1.SpringBoot接口:/anything/chatMessageAnything

2.调用anythingLLM - 调用知识库+deepseek r1 .

部署 AnythingLLM + DeepSeek 本地知识库 的环境要求如下:


一、硬件要求

  1. CPU

    • 最低:4核(如 Intel Core i5 或 AMD Ryzen 5)
  • 推荐:高性能 CPU(如 Intel Core i7 或 AMD Ryzen 7)
  • 内存

    • 最低:16GB RAM(需启用交换空间扩展)
    • 推荐:32GB 或更高(支持大模型推理与多任务处理)
    • 存储

      • 最低:20GB 可用空间(用于模型与依赖库)
      • 推荐:50GB+(支持多模型存储与数据扩展)

        二、软件要求

        1. 操作系统

          • 支持 Linux(CentOS 7+/Ubuntu 12+) 或 Windows 10+(WSL2 推荐)
        • 运行时环境

          • Python 3.8+ (用于数据处理与服务端逻辑)
          • Node.js 16+ (用于启动 AnythingLLM 前端与后端服务)
          • Ollama (用于本地部署 DeepSeek 等大语言模型)
          • 容器化工具(可选)

            • Docker (支持通过容器快速部署,避免环境冲突)

              人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口

               人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口

              GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。https://gitcode.com/gh_mirrors/an/anything-llm

              Windows Installation ~ AnythingLLMhttps://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 依赖(如果项目中没有):

              org.springframework.boot

              spring-boot-starter-web


              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

              人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口


              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 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 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 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 sendMessage(@RequestBody String messageContent) {

              return anythingLLMService.sendMessage(messageContent);

              }

              }

              人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口


              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 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 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);

              });

              }


              注意事项

              1. API 认证 :根据 AnythingLLM 的文档调整认证方式(如 API Key、OAuth 等)。
              2. 请求体格式 :确保请求体的 JSON 结构与 API 要求一致(如字段名称、嵌套结构)。
              3. 超时配置 :如果接口响应较慢,需配置 RestTemplate 或 WebClient 的超时时间。
              4. 日志记录 :建议在调用过程中添加日志,方便调试和监控。

              如果需要更具体的实现(如文件上传、复杂参数),请提供 AnythingLLM 的 API 文档细节!

              知识库文件上传

              人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口

              人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码