|
@@ -1,81 +0,0 @@
|
|
|
-/*
|
|
|
- * Copyright (c) 2025 GaoKunW
|
|
|
- *
|
|
|
- */
|
|
|
-
|
|
|
-package org.eco.vip.ai.knowledge.controller;
|
|
|
-
|
|
|
-
|
|
|
-import io.github.pigmesh.ai.deepseek.core.DeepSeekClient;
|
|
|
-import io.github.pigmesh.ai.deepseek.core.EmbeddingClient;
|
|
|
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionRequest;
|
|
|
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
|
|
|
-import io.milvus.v2.client.ConnectConfig;
|
|
|
-import io.milvus.v2.client.MilvusClientV2;
|
|
|
-import io.milvus.v2.service.vector.request.SearchReq;
|
|
|
-import io.milvus.v2.service.vector.request.data.FloatVec;
|
|
|
-import io.milvus.v2.service.vector.response.SearchResp;
|
|
|
-import jakarta.annotation.Resource;
|
|
|
-import org.springframework.http.MediaType;
|
|
|
-import org.springframework.web.bind.annotation.GetMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
-import reactor.core.publisher.Flux;
|
|
|
-
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
-/**
|
|
|
- * @description KnowledgeController
|
|
|
- *
|
|
|
- * @author GaoKunW
|
|
|
- * @date 2025/3/16 22:41
|
|
|
- */
|
|
|
-@RestController
|
|
|
-@RequestMapping("/ai/ollama")
|
|
|
-public class KnowledgeController {
|
|
|
-
|
|
|
- @Resource
|
|
|
- private EmbeddingClient embeddingClient;
|
|
|
-
|
|
|
- @Resource
|
|
|
- private DeepSeekClient deepSeekClient;
|
|
|
-
|
|
|
- @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
|
|
- public Flux<ChatCompletionResponse> chat(String prompt) {
|
|
|
- ConnectConfig connectConfig = ConnectConfig.builder()
|
|
|
- .uri("") // 1.2 获取的 Milvus 链接端点
|
|
|
- .token("") // 1.2 获取的 Milvus 链接信息
|
|
|
- .build();
|
|
|
-
|
|
|
-
|
|
|
- MilvusClientV2 milvusClientV2 = new MilvusClientV2(connectConfig);
|
|
|
-
|
|
|
- List<Float> floatList = embeddingClient.embed(prompt);
|
|
|
-
|
|
|
- SearchReq searchReq = SearchReq.builder()
|
|
|
- .collectionName("deepseek4j_test")
|
|
|
- .data(Collections.singletonList(new FloatVec(floatList)))
|
|
|
- .outputFields(Collections.singletonList("text"))
|
|
|
- .topK(3)
|
|
|
- .build();
|
|
|
-
|
|
|
- SearchResp searchResp = milvusClientV2.search(searchReq);
|
|
|
-
|
|
|
- List<String> resultList = new ArrayList<>();
|
|
|
- List<List<SearchResp.SearchResult>> searchResults = searchResp.getSearchResults();
|
|
|
- for (List<SearchResp.SearchResult> results : searchResults) {
|
|
|
- System.out.println("TopK results:");
|
|
|
- for (SearchResp.SearchResult result : results) {
|
|
|
- resultList.add(result.getEntity().get("text").toString());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- ChatCompletionRequest request = ChatCompletionRequest.builder()
|
|
|
- .addUserMessage(String.format("你要根据用户输入的问题:%s \n \n 参考如下内容: %s \n\n 整理处理最终结果", prompt, resultList)).build();
|
|
|
-
|
|
|
- return deepSeekClient.chatFluxCompletion(request);
|
|
|
- }
|
|
|
-}
|