package com.trafficaudit.llmintegration.controller; import com.trafficaudit.common.Result; import com.trafficaudit.llmintegration.service.AuditExplanationService; import com.trafficaudit.llmintegration.service.LLMService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api/llm") public class LLMController { @Resource private AuditExplanationService explanationService; @Resource private LLMService llmService; @PostMapping("/analyze") public Result analyzeExplanation(@RequestBody Map params) { String explanation = (String) params.get("explanation"); String ruleDesc = (String) params.get("ruleDesc"); Long reportId = Long.valueOf(params.get("reportId").toString()); String analysis = explanationService.analyze(explanation, ruleDesc, reportId); return Result.ok(analysis); } /** 多轮对话:AI 可调用 query_database 工具查库后回答 */ @PostMapping("/chat") public Result chat(@RequestBody Map params) { Object msgsObj = params.get("messages"); List> messages = new ArrayList<>(); if (msgsObj instanceof List) { for (Object o : (List) msgsObj) { if (o instanceof Map) { messages.add((Map) o); } } } Object ctxObj = params.get("context"); Map context = ctxObj instanceof Map ? (Map) ctxObj : new HashMap<>(); String reply = llmService.chatWithTools(messages, context); return Result.ok(reply); } }