package com.zy.ai.controller;
|
|
import com.zy.ai.entity.ChatCompletionRequest;
|
import com.zy.ai.entity.WcsDiagnosisRequest;
|
import com.zy.ai.entity.WcsDiagnosisResponse;
|
import com.zy.ai.service.WcsDiagnosisService;
|
import com.zy.ai.utils.AiUtils;
|
import com.zy.common.web.BaseController;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@RestController
|
@RequestMapping("/ai/diagnose")
|
@RequiredArgsConstructor
|
public class WcsDiagnosisController extends BaseController {
|
|
@Autowired
|
private WcsDiagnosisService wcsDiagnosisService;
|
@Autowired
|
private AiUtils aiUtils;
|
|
@GetMapping("/runAi")
|
public WcsDiagnosisResponse runAi() {
|
WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "系统当前不执行任务,但具体原因不明,请根据以下信息帮助判断。\n\n");
|
WcsDiagnosisResponse response = diagnose(request);
|
return response;
|
}
|
|
@GetMapping("/runAiStream")
|
public SseEmitter runAiStream() {
|
SseEmitter emitter = new SseEmitter(0L);
|
|
new Thread(() -> {
|
try {
|
WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "系统当前不执行任务,但具体原因不明,请根据以下信息帮助判断。\n\n");
|
wcsDiagnosisService.diagnoseStream(request, emitter);
|
} catch (Exception e) {
|
emitter.completeWithError(e);
|
}
|
}).start();
|
|
return emitter;
|
}
|
|
@GetMapping("/askStream")
|
public SseEmitter askStream(@RequestParam("prompt") String prompt,
|
@RequestParam(value = "chatId", required = false) String chatId,
|
@RequestParam(value = "reset", required = false, defaultValue = "false") boolean reset) {
|
SseEmitter emitter = new SseEmitter(0L);
|
new Thread(() -> {
|
try {
|
WcsDiagnosisRequest request = aiUtils.makeAiRequest(100, null);
|
wcsDiagnosisService.askStream(request, prompt, chatId, reset, emitter);
|
} catch (Exception e) {
|
emitter.completeWithError(e);
|
}
|
}).start();
|
return emitter;
|
}
|
|
@GetMapping("/chats")
|
public List<Map<String, Object>> listChats() {
|
return wcsDiagnosisService.listChats();
|
}
|
|
@DeleteMapping("/chats/{chatId}")
|
public Boolean deleteChat(@PathVariable("chatId") String chatId) {
|
return wcsDiagnosisService.deleteChat(chatId);
|
}
|
|
@GetMapping("/chats/{chatId}/history")
|
public List<ChatCompletionRequest.Message> getChatHistory(@PathVariable("chatId") String chatId) {
|
return wcsDiagnosisService.getChatHistory(chatId);
|
}
|
|
/**
|
* POST /api/ai/diagnose/wcs
|
*/
|
@PostMapping("/wcs")
|
public WcsDiagnosisResponse diagnose(@RequestBody WcsDiagnosisRequest request) {
|
String analysis = wcsDiagnosisService.diagnose(request);
|
|
WcsDiagnosisResponse resp = new WcsDiagnosisResponse();
|
resp.setAnalysis(analysis);
|
resp.setOriginalRequest(request);
|
return resp;
|
}
|
}
|