package com.yb.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.yb.util.OkHttpUtil;
|
import jakarta.annotation.Resource;
|
|
import net.sf.json.JSONObject;
|
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;
|
|
|
@RestController
|
@RequestMapping("/api/v1")
|
public class AiController {
|
@Resource
|
private OllamaChatModel chatModel;
|
|
@Autowired
|
private OkHttpUtil okHttpUtil ;
|
|
@Value("${spring.intent}")
|
String intent ;
|
|
@GetMapping("/chat")
|
public String chat(@RequestParam(value = "message",defaultValue = "Hi") String message){
|
return chatModel.call("请用中文回答如下问题,如果有地名出现,回到内容包括经纬度并使用json返回,"+message);
|
}
|
|
@GetMapping("/intent")
|
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")
|
public String mix(@RequestParam(value = "message",defaultValue = "Hi") String message){
|
String json = okHttpUtil.getMessage(intent+"="+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));
|
}
|
return JSON.toJSON(hashMap).toString() ;
|
|
|
}
|
}
|