From 28fc8b028099f0fd4719b0a35d4fb98a728d73cd Mon Sep 17 00:00:00 2001
From: leutu <leutu@qq.com>
Date: 星期三, 19 六月 2024 14:20:57 +0800
Subject: [PATCH] 新增对fastgpt api请求知识库接口

---
 src/main/java/com/yb/util/OkHttpUtil.java         |  143 +++++++++++++++++++++++++++++++++++
 src/main/java/com/yb/OllamaAiApplication.java     |    1 
 src/main/java/com/yb/controller/AiController.java |   28 ++++++
 pom.xml                                           |   13 +++
 src/main/resources/application.yml                |   11 ++
 5 files changed, 194 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index db3575d..8d85da5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,19 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.14</version>
         </dependency>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+            <version>2.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
+            <version>2.1.0</version>
+        </dependency>
+
+
     </dependencies>
     <dependencyManagement>
         <dependencies>
diff --git a/src/main/java/com/yb/OllamaAiApplication.java b/src/main/java/com/yb/OllamaAiApplication.java
index dc18a3c..5dceb92 100644
--- a/src/main/java/com/yb/OllamaAiApplication.java
+++ b/src/main/java/com/yb/OllamaAiApplication.java
@@ -3,6 +3,7 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+
 @SpringBootApplication
 public class OllamaAiApplication {
 
diff --git a/src/main/java/com/yb/controller/AiController.java b/src/main/java/com/yb/controller/AiController.java
index fb007e8..dbd9b3b 100644
--- a/src/main/java/com/yb/controller/AiController.java
+++ b/src/main/java/com/yb/controller/AiController.java
@@ -3,9 +3,11 @@
 
 import com.alibaba.fastjson.JSON;
 import com.yb.util.OkHttpUtil;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
 
 import net.sf.json.JSONObject;
+import okhttp3.Response;
 import org.springframework.ai.ollama.OllamaChatModel;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -20,6 +22,7 @@
 import java.util.Set;
 
 
+@Tag(name="terra openai")
 @RestController
 @RequestMapping("/api/v1")
 public class AiController {
@@ -31,6 +34,8 @@
 
     @Value("${spring.intent}")
     String intent ;
+
+
 
     @GetMapping("/chat")
     public String chat(@RequestParam(value = "message",defaultValue = "Hi") String message){
@@ -63,7 +68,8 @@
 
     @GetMapping("/mix")
     public String mix(@RequestParam(value = "message",defaultValue = "Hi") String message){
-        String json = okHttpUtil.getMessage(intent+"="+message);
+        String json = okHttpUtil.postFastgpt(message);
+        System.out.println(message);
 //        JSONObject jsonObject = JSONObject.parseObject(json);
         Map<String,String> hashMap = new HashMap<>() ;
         iteraJson(json,hashMap);
@@ -77,8 +83,28 @@
         }else{
             json = hashMap.put("content", chatModel.call("璇风敤涓枃鍥炵瓟濡備笅闂,濡傛灉鏈夊湴鍚嶅嚭鐜帮紝鍥炲埌鍐呭鍖呮嫭缁忕含搴﹀苟浣跨敤json杩斿洖,"+message));
         }
+        System.out.println(JSON.toJSON(hashMap).toString());
+        System.out.println("====================================");
         return JSON.toJSON(hashMap).toString() ;
 
 
     }
+
+    @GetMapping("/fastgpt")
+    public String fastgpt(@RequestParam(value = "message",defaultValue = "Hi") String message){
+
+        okHttpUtil.requesFast(message);
+        String json = okHttpUtil.requesFast(message);
+
+        return  json ;
+    }
+
+    @GetMapping("/fastgpt_list")
+    public String fastgpt_list(String parentId){
+
+
+        String json = okHttpUtil.requesFast_kl(parentId);
+
+        return  json ;
+    }
 }
diff --git a/src/main/java/com/yb/util/OkHttpUtil.java b/src/main/java/com/yb/util/OkHttpUtil.java
index c7a9807..94d050e 100644
--- a/src/main/java/com/yb/util/OkHttpUtil.java
+++ b/src/main/java/com/yb/util/OkHttpUtil.java
@@ -1,11 +1,28 @@
 package com.yb.util;
 
+import com.alibaba.fastjson.JSON;
 import okhttp3.*;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 @Component
+@RestController
 public class OkHttpUtil {
+    @Value("${spring.fastgpt.apikey}")
+    String apikey ;
+
+    @Value("${spring.fastgpt.url}")
+    String url ;
+
+
+    @Value("${spring.fastgpt.kl}")
+    String fastgpt_kl ;
     // get璇锋眰
     public  String getMessage(String url)  {
         try {
@@ -40,4 +57,130 @@
         }
         return  null ;
     }
+
+    public  String postFastgpt( String params) {
+        try {
+            OkHttpClient client = new OkHttpClient();
+            RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);
+            Request request = new Request.Builder()
+                    .addHeader("Authorization"," Bearer "+apikey)
+                    .addHeader("Content-Type","application/json")
+                    .url(url)
+                    .post(body)
+                    .build();
+
+            Response response = client.newCall(request).execute();
+            return response.body().string();
+
+        } catch (IOException e) {
+            System.out.println(e.getMessage());
+        }
+        return  null ;
+    }
+
+    public String requesFast(String message){
+        OkHttpClient client = new OkHttpClient();
+        Response response = null ;
+        // 鍒涘缓璇锋眰澶达紙Headers锛�
+        okhttp3.Headers headers = new okhttp3.Headers.Builder()
+                .add("Authorization", "Bearer fastgpt-rML09d7nyx8Bn2Al3UipZia3Q8FNuXdekU1nyMlgCfHNwS8NN1giSPNZ1y6Wmt")
+                .build();
+
+        /*
+        curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \
+            --header 'Authorization: Bearer fastgpt-xxxxxx' \
+            --header 'Content-Type: application/json' \
+            --data-raw '{
+                "chatId": "111",
+                "stream": false,
+                "detail": false,
+                "messages": [
+                    {
+                        "content": "瀵兼紨鏄皝",
+                        "role": "user"
+                    }
+                ]
+            }'
+         */
+        // 鏋勫缓璇锋眰浣擄紙RequestBody锛夛紝杩欓噷浣跨敤鐨勬槸瀛楃涓茬被鍨嬬殑璇锋眰鏁版嵁
+
+        HashMap<String,Object> hashMap = new HashMap<>() ;
+        hashMap.put("chatId",""+Math.random()*100000);
+        hashMap.put("stream","false");
+        hashMap.put("detail","false");
+        List<HashMap<String,String>> list = new ArrayList<>();
+        HashMap<String,String> messageMap = new HashMap<>();
+        messageMap.put("content",message);
+        messageMap.put("role","user");
+        list.add(messageMap);
+        hashMap.put("messages",list);
+        MediaType contentType = MediaType.parse("application/json; charset=utf-8");
+        RequestBody body = RequestBody.create(contentType, JSON.toJSON(hashMap).toString());
+
+        // 鍒涘缓璇锋眰锛圧equest锛�
+        okhttp3.Request.Builder builder = new okhttp3.Request.Builder()
+                .url(url)
+                .headers(headers)
+                .post(body);
+        okhttp3.Request request = builder.build();
+
+        // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+        try {
+             response = client.newCall(request).execute();
+            if (response.isSuccessful()) {
+                //System.out.println("Success: " + response.body().string());
+                String rep = response.body().string();
+                return rep ;
+            } else {
+                System.out.println("Error: " + response.code() + " " + response.message());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+
+         return response != null?response.body().toString():"null" ;
+    }
+
+    public String requesFast_kl(String parentId){
+        OkHttpClient client = new OkHttpClient();
+        Response response = null ;
+        // 鍒涘缓璇锋眰澶达紙Headers锛�
+        okhttp3.Headers headers = new okhttp3.Headers.Builder()
+                .add("Authorization", "Bearer fastgpt-rML09d7nyx8Bn2Al3UipZia3Q8FNuXdekU1nyMlgCfHNwS8NN1giSPNZ1y6Wmt")
+                .build();
+
+        /*
+        curl --location --request GET 'http://localhost:3000/api/core/dataset/list?parentId=' \
+--header 'Authorization: Bearer {{authorization}}' \
+         */
+        // 鏋勫缓璇锋眰浣擄紙RequestBody锛夛紝杩欓噷浣跨敤鐨勬槸瀛楃涓茬被鍨嬬殑璇锋眰鏁版嵁
+
+
+
+        // 鍒涘缓璇锋眰锛圧equest锛�
+        if( parentId != null ) fastgpt_kl = fastgpt_kl+"锛焢arentId="+parentId;
+        okhttp3.Request.Builder builder = new okhttp3.Request.Builder()
+                .url(fastgpt_kl)
+                .headers(headers) ;
+
+        okhttp3.Request request = builder.build();
+
+        // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+        try {
+            response = client.newCall(request).execute();
+            if (response.isSuccessful()) {
+                //System.out.println("Success: " + response.body().string());
+                String rep = response.body().string();
+                return rep ;
+            } else {
+                System.out.println("Error: " + response.code() + " " + response.message());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+
+        return response != null?response.body().toString():"null" ;
+    }
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 1deea57..0247aeb 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,5 +10,14 @@
       base-url: http://192.168.11.41:11434
       chat:
 #        model: yi:9b-chat-v1.5-q4_0
-        model: llama3:8b
+        model: qwen:1.8b
   intent: http://106.120.22.26:5367/intention?message
+  fastgpt:
+    apikey: fastgpt-rML09d7nyx8Bn2Al3UipZia3Q8FNuXdekU1nyMlgCfHNwS8NN1giSPNZ1y6Wmt
+    url: http://192.168.11.28/api/v1/chat/completions
+    kc: http://192.168.11.28/api/core/dataset/create
+    kl: http://192.168.11.28/api/core/dataset/list
+    kd: http://192.168.11.28/api/core/dataset/detail
+
+
+

--
Gitblit v1.9.3