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); return json ; } 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 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 ; } }