leutu
2024-06-19 28fc8b028099f0fd4719b0a35d4fb98a728d73cd
新增对fastgpt api请求知识库接口
已修改5个文件
196 ■■■■■ 文件已修改
pom.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/OllamaAiApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/controller/AiController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/util/OkHttpUtil.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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 {
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 ;
    }
}
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());
        // 创建请求(Request)
        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),这里使用的是字符串类型的请求数据
        // 创建请求(Request)
        if( parentId != null ) fastgpt_kl = fastgpt_kl+"?parentId="+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" ;
    }
}
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