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 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 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 ; } }