| | |
| | | |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; |
| | | import cc.mrbird.febs.ai.req.memberTalkStream.*; |
| | | import cc.mrbird.febs.ai.req.talk.AiTalkAnswerStream; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkMemberAnswerSavaVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVoOld; |
| | | 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.ai.service.AiMemberTalkStreamService; |
| | | 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 |
| | |
| | | @Api(value = "ApiMemberTalkStreamController", tags = "AI-用户陪练(流式)") |
| | | public class ApiMemberTalkStreamController { |
| | | |
| | | private final ApiMemberTalkStreamService apiMemberTalkStreamService; |
| | | private final AiMemberTalkStreamService aiMemberTalkStreamService; |
| | | |
| | | @ApiOperation("生成题目") |
| | | @ApiResponses({ |
| | |
| | | }) |
| | | @PostMapping("/start") |
| | | public FebsResponse start(@RequestBody @Validated ApiMemberTalkStreamDto dto) { |
| | | return apiMemberTalkStreamService.start(dto); |
| | | return aiMemberTalkStreamService.start(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "再练一次(重新回答)", notes = "再练一次(重新回答)") |
| | |
| | | @PostMapping(value = "/reload") |
| | | public FebsResponse reload(@RequestBody @Validated ApiMemberTalkReloadStreamDto dto) { |
| | | |
| | | return apiMemberTalkStreamService.reload(dto); |
| | | return aiMemberTalkStreamService.reload(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "对话记录分页查询", notes = "对话记录分页查询") |
| | |
| | | @PostMapping(value = "/historyPage") |
| | | public FebsResponse historyPage(@RequestBody @Validated ApiMemberTalkItemPageDto dto) { |
| | | |
| | | return apiMemberTalkStreamService.historyPage(dto); |
| | | return aiMemberTalkStreamService.historyPage(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "保存用户回答", notes = "保存答案") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "success", response = ApiMemberTalkMemberAnswerSavaVo.class) |
| | | }) |
| | | @PostMapping(value = "/saveMemberAnswer") |
| | | public FebsResponse saveMemberAnswer(@RequestBody @Validated ApiMemberTalkMemberAnswerSavaDto dto) { |
| | | |
| | | return apiMemberTalkStreamService.saveMemberAnswer(dto); |
| | | return aiMemberTalkStreamService.saveMemberAnswer(dto); |
| | | } |
| | | |
| | | @ApiOperation("回答(流式)") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "流式响应", response = cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo.class), |
| | | @ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVoOld.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); |
| | | return aiMemberTalkStreamService.answer(dto); |
| | | } |
| | | |
| | | @ApiOperation("回答(流式)") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "流式响应", response = cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo.class), |
| | | @ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVoOld.class), |
| | | }) |
| | | @PostMapping("/answerV2") |
| | | public Flux<FebsResponse> answerV2(@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.answerV2(dto); |
| | | return aiMemberTalkStreamService.answerV2(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "保存AI回答", notes = "保存AI回答") |
| | | @PostMapping(value = "/saveAnswer") |
| | | public FebsResponse saveAnswer(@RequestBody @Validated ApiMemberTalkAnswerSavaDto dto) { |
| | | |
| | | return apiMemberTalkStreamService.saveAnswer(dto); |
| | | return aiMemberTalkStreamService.saveAnswer(dto); |
| | | } |
| | | |
| | | @ApiOperation(value = "保存AI陪练总结报告", notes = "保存AI陪练总结报告") |
| | | @PostMapping(value = "/saveReport") |
| | | public FebsResponse saveReport(@RequestBody @Validated ApiMemberTalkReportSavaDto dto) { |
| | | |
| | | return aiMemberTalkStreamService.saveReport(dto); |
| | | } |
| | | |
| | | } |