package cc.mrbird.febs.ai.controller.memberTalk;
|
|
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto;
|
import cc.mrbird.febs.ai.req.memberTalkStream.AiTalkAnswerStreamDto;
|
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkAnswerSavaDto;
|
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkReloadStreamDto;
|
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkStreamDto;
|
import cc.mrbird.febs.ai.req.talk.AiTalkAnswerStream;
|
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo;
|
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo;
|
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo;
|
import cc.mrbird.febs.ai.service.ApiMemberTalkStreamService;
|
import cc.mrbird.febs.ai.strategy.enumerates.LlmStrategyEnum;
|
import cc.mrbird.febs.ai.strategy.param.LlmStrategyDto;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.dashscope.common.Role;
|
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 reactor.core.publisher.Flux;
|
|
import java.util.ArrayList;
|
|
/**
|
* @author Administrator
|
*/
|
@Slf4j
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping(value = "/api/ai/memberTalkStream")
|
@Api(value = "ApiMemberTalkStreamController", tags = "AI-用户陪练(流式)")
|
public class ApiMemberTalkStreamController {
|
|
private final ApiMemberTalkStreamService apiMemberTalkStreamService;
|
|
@ApiOperation("生成题目")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVo.class),
|
})
|
@PostMapping("/start")
|
public FebsResponse start(@RequestBody @Validated ApiMemberTalkStreamDto dto) {
|
return apiMemberTalkStreamService.start(dto);
|
}
|
|
@ApiOperation(value = "再练一次(重新回答)", notes = "再练一次(重新回答)")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiMemberTalkReloadStreamVo.class)
|
})
|
@PostMapping(value = "/reload")
|
public FebsResponse reload(@RequestBody @Validated ApiMemberTalkReloadStreamDto dto) {
|
|
return apiMemberTalkStreamService.reload(dto);
|
}
|
|
@ApiOperation(value = "对话记录分页查询", notes = "对话记录分页查询")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiMemberTalkItemVo.class)
|
})
|
@PostMapping(value = "/historyPage")
|
public FebsResponse historyPage(@RequestBody @Validated ApiMemberTalkItemPageDto dto) {
|
|
return apiMemberTalkStreamService.historyPage(dto);
|
}
|
|
@ApiOperation("回答(流式)")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "流式响应", response = cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo.class),
|
})
|
@PostMapping("/answer")
|
public Flux<FebsResponse> answer(@RequestBody @Validated AiTalkAnswerStreamDto dto) {
|
if (StrUtil.isEmpty(dto.getId()) || StrUtil.isEmpty(dto.getReqContext())|| StrUtil.isEmpty(dto.getReqContext())){
|
return Flux.just(new FebsResponse().fail().message("参数异常"));
|
}
|
return apiMemberTalkStreamService.answer(dto);
|
}
|
|
@ApiOperation(value = "保存答案", notes = "保存答案")
|
@PostMapping(value = "/saveAnswer")
|
public FebsResponse saveAnswer(@RequestBody @Validated ApiMemberTalkAnswerSavaDto dto) {
|
|
return apiMemberTalkStreamService.saveAnswer(dto);
|
}
|
|
}
|