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<String> analyzeExplanation(@RequestBody Map<String, Object> 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<String> chat(@RequestBody Map<String, Object> params) {
|
Object msgsObj = params.get("messages");
|
List<Map<String, Object>> messages = new ArrayList<>();
|
if (msgsObj instanceof List) {
|
for (Object o : (List<?>) msgsObj) {
|
if (o instanceof Map) {
|
messages.add((Map<String, Object>) o);
|
}
|
}
|
}
|
Object ctxObj = params.get("context");
|
Map<String, Object> context = ctxObj instanceof Map ? (Map<String, Object>) ctxObj : new HashMap<>();
|
String reply = llmService.chatWithTools(messages, context);
|
return Result.ok(reply);
|
}
|
}
|