package com.yb.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.yb.util.OkHttpUtil;
|
import io.swagger.v3.oas.annotations.Operation;
|
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;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.Map;
|
import java.util.Set;
|
|
|
@Tag(name="terra openai")
|
@RestController
|
@RequestMapping("/api/v1")
|
public class AiController {
|
@Resource
|
private OllamaChatModel chatModel;
|
|
@Autowired
|
private OkHttpUtil okHttpUtil ;
|
|
@Value("${spring.intent}")
|
String intent ;
|
|
|
|
@GetMapping("/chat")
|
@Operation(summary = "大模型对话")
|
public String chat(@RequestParam(value = "message",defaultValue = "Hi") String message){
|
return chatModel.call("请用中文回答如下问题,如果有地名出现,回到内容包括经纬度并使用json返回,"+message);
|
}
|
|
@GetMapping("/intent")
|
@Operation(summary = "意图请求")
|
public String intent(@RequestParam(value = "message",defaultValue = "Hi") String message){
|
String json = okHttpUtil.getMessage(intent+"="+message);
|
Map<String,String> hashMap = new HashMap<>() ;
|
iteraJson(json,hashMap);
|
return JSON.toJSON(hashMap).toString() ;
|
}
|
public boolean iteraJson(String str, Map res){
|
if(str.toString().indexOf(":") == -1){
|
return true;
|
}
|
JSONObject fromObject = JSONObject.fromObject(str);
|
Iterator keys = fromObject.keys();
|
while(keys.hasNext()){
|
String key = keys.next().toString();
|
Object value = fromObject.get(key);
|
if(iteraJson(value.toString(),res)){
|
res.put(key, value);
|
}
|
}
|
return false;
|
|
}
|
|
@GetMapping("/mix")
|
@Operation(summary = "意图与大模型请求")
|
public String mix(@RequestParam(value = "message",defaultValue = "Hi") String message){
|
String json = okHttpUtil.postFastgpt(message);
|
System.out.println(message);
|
// JSONObject jsonObject = JSONObject.parseObject(json);
|
Map<String,String> hashMap = new HashMap<>() ;
|
iteraJson(json,hashMap);
|
|
String place = hashMap.get("place");
|
if( place != null ){
|
String llm = chatModel.call("请用中文回答如下问题,如果有地名出现,回到内容包括经纬度并使用json返回,"+place);
|
hashMap.put("content",llm);
|
|
json = JSON.toJSON(hashMap).toString() ;
|
}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")
|
@Operation(summary = "知识库查询")
|
public String fastgpt(@RequestParam(value = "message",defaultValue = "三维实景") String message){
|
|
okHttpUtil.requesFast(message);
|
String json = okHttpUtil.requesFast(message);
|
|
return json ;
|
}
|
|
@GetMapping("/fastgpt_list")
|
@Operation(summary = "知识库列表")
|
public String fastgpt_list(){
|
|
|
String json = okHttpUtil.requesFast_kl();
|
|
return json ;
|
}
|
}
|