package cc.mrbird.febs.ai.controller.talk;
|
|
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkAnswerDto;
|
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkDto;
|
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto;
|
import cc.mrbird.febs.ai.req.talk.ApiTalkDto;
|
import cc.mrbird.febs.ai.req.talk.ApiTalkPageDto;
|
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo;
|
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo;
|
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo;
|
import cc.mrbird.febs.ai.res.talk.ApiTalkPageVo;
|
import cc.mrbird.febs.ai.res.talk.ApiTalkVo;
|
import cc.mrbird.febs.ai.service.AiMemberTalkService;
|
import cc.mrbird.febs.ai.service.AiTalkService;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import io.swagger.annotations.*;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
import reactor.core.publisher.Flux;
|
|
import java.io.IOException;
|
|
/**
|
* @author Administrator
|
*/
|
@Slf4j
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping(value = "/api/ai/talk")
|
@Api(value = "ApiAiTalkController", tags = "AI-灵通")
|
public class ApiAiTalkController {
|
|
private final AiTalkService aiTalkService;
|
|
@ApiOperation(value = "用户AI问答", notes = "用户AI问答")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiTalkVo.class)
|
})
|
@PostMapping(value = "/talkOpen")
|
public FebsResponse talkOpen(@RequestBody @Validated ApiTalkDto dto) {
|
|
return aiTalkService.talkOpen(dto);
|
}
|
|
@ApiOperation(value = "用户AI问答记录分页查询", notes = "用户AI问答记录分页查询")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiTalkPageVo.class)
|
})
|
@PostMapping(value = "/talkList")
|
public FebsResponse talkList(@RequestBody @Validated ApiTalkPageDto dto) {
|
|
return aiTalkService.talkList(dto);
|
}
|
|
@ApiOperation("提问AI(流式)")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVo.class),
|
})
|
@GetMapping("/answer-stream")
|
public Flux<FebsResponse> answerStream(@RequestParam String question) {
|
|
return aiTalkService.answerStream(question);
|
}
|
}
|