package org.ruoyi.chat.controller.chat;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.validation.Valid;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.ruoyi.chat.service.chat.ISseService;
|
import org.ruoyi.common.chat.entity.Tts.TextToSpeech;
|
import org.ruoyi.common.chat.entity.files.UploadFileResponse;
|
import org.ruoyi.common.chat.entity.whisper.WhisperResponse;
|
import org.ruoyi.common.chat.request.ChatRequest;
|
import org.springframework.core.io.Resource;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|
|
/**
|
* 聊天管理
|
*
|
* @author ageerle@163.com
|
* @date 2023-03-01
|
*/
|
@Controller
|
@Slf4j
|
@RequiredArgsConstructor
|
@RequestMapping("/chat")
|
public class ChatController {
|
|
private final ISseService sseService;
|
|
/**
|
* 聊天接口
|
*/
|
@PostMapping("/send")
|
@ResponseBody
|
public SseEmitter sseChat(@RequestBody @Valid ChatRequest chatRequest, HttpServletRequest request) {
|
return sseService.sseChat(chatRequest,request);
|
}
|
|
/**
|
* 上传文件
|
*/
|
@PostMapping("/upload")
|
@ResponseBody
|
public UploadFileResponse upload(@RequestPart("file") MultipartFile file) {
|
return sseService.upload(file);
|
}
|
|
|
/**
|
* 语音转文本
|
*
|
* @param file
|
*/
|
@PostMapping("/audio")
|
@ResponseBody
|
public WhisperResponse audio(@RequestParam("file") MultipartFile file) {
|
return sseService.speechToTextTranscriptionsV2(file);
|
}
|
|
/**
|
* 文本转语音
|
*
|
* @param textToSpeech
|
*/
|
@PostMapping("/speech")
|
@ResponseBody
|
public ResponseEntity<Resource> speech(@RequestBody TextToSpeech textToSpeech) {
|
return sseService.textToSpeed(textToSpeech);
|
}
|
|
}
|