| | |
| | | import cc.mrbird.febs.ai.enumerates.AiTalkOutputEnum; |
| | | import cc.mrbird.febs.ai.enumerates.AiTypeEnum; |
| | | import cc.mrbird.febs.ai.mapper.AiMemberTalkMapper; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiTalkMemberListDto; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiTalkReportListDto; |
| | | import cc.mrbird.febs.ai.req.memberTalk.*; |
| | | import cc.mrbird.febs.ai.req.memberTalkStream.*; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto; |
| | | import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkStreamDto; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkMemberAnswerSavaVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberProductTalkVo; |
| | | import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo; |
| | | import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo; |
| | | import cc.mrbird.febs.ai.service.*; |
| | |
| | | import com.alibaba.dashscope.common.Role; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | } |
| | | |
| | | AiProduct aiProduct = aiProductService.getById(productId); |
| | | Integer questionCount = aiProduct.getQuestionCount(); |
| | | Integer talkCnt = aiProduct.getTalkCnt(); |
| | | |
| | | String companyId = aiProductRoleLink.getCompanyId(); |
| | | |
| | |
| | | query.eq(AiMemberTalk::getState,AiTypeEnum.AI_MEMBER_TALK_STATE_ING.getCode()); |
| | | query.orderByDesc(AiMemberTalk::getCreatedTime); |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = aiMemberTalkService.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | aiMemberTalk = aiMemberTalkService.add(memberUuid,companyId,productId,nowTime,questionCount); |
| | | } |
| | | |
| | | ApiMemberTalkStreamVo apiMemberTalkVo = new ApiMemberTalkStreamVo(); |
| | | |
| | | AiMemberTalk aiMemberTalk = aiMemberTalkService.getByQuery(query); |
| | | String title = "加载时间过程,请重试!"; |
| | | AiProductQuestion question = aiProductQuestionService.createQuestion(productId); |
| | | if (ObjectUtil.isNotNull(question)){ |
| | | title = question.getTitle(); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 1, title, nowTime); |
| | | apiMemberTalkVo.setMemberTalkItemId(aiMemberTalkItem.getId()); |
| | | aiMemberTalkService.updateTimeUpdate(nowTime,aiMemberTalk.getId()); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | aiMemberTalk = aiMemberTalkService.add(memberUuid,companyId,productId,nowTime,talkCnt); |
| | | AiProductQuestion question = aiProductQuestionService.createQuestion(productId); |
| | | if (ObjectUtil.isNotNull(question)){ |
| | | title = question.getTitle(); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 1, title, nowTime); |
| | | apiMemberTalkVo.setMemberTalkItemId(aiMemberTalkItem.getId()); |
| | | aiMemberTalkService.updateTimeUpdate(nowTime,aiMemberTalk.getId()); |
| | | } |
| | | }else{ |
| | | AiMemberTalkItem oneByQuery = aiMemberTalkItemService.getOneByQuery( |
| | | Wrappers.lambdaQuery(AiMemberTalkItem.class) |
| | | .eq(AiMemberTalkItem::getMemberTalkId, aiMemberTalk.getId()) |
| | | .eq(AiMemberTalkItem::getType, 1) |
| | | .orderByDesc(AiMemberTalkItem::getCreatedTime) |
| | | .last("limit 1") |
| | | ); |
| | | if (ObjectUtil.isNotNull(oneByQuery)){ |
| | | title = oneByQuery.getContext(); |
| | | apiMemberTalkVo.setMemberTalkItemId(oneByQuery.getId()); |
| | | } |
| | | } |
| | | apiMemberTalkVo.setMemberTalkId(aiMemberTalk.getId()); |
| | | apiMemberTalkVo.setType(1); |
| | |
| | | public Flux<FebsResponse> startV2(ApiMemberTalkStreamV2Dto dto) { |
| | | |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | String memberTalkId = dto.getId(); |
| | | AiMemberTalk aiMemberTalk = this.getById(memberTalkId); |
| | | String memberTalkId = dto.getMemberTalkId(); |
| | | AiMemberTalk aiMemberTalk = aiMemberTalkMapper.selectById(memberTalkId); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | throw new FebsException("对话不存在"); |
| | | } |
| | |
| | | String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType()); |
| | | |
| | | return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse myTalkList(ApiMemberProductTalkPageDto dto) { |
| | | |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | dto.setMemberUuid(memberUuid); |
| | | |
| | | |
| | | String companyId = LoginUserUtil.getLoginUser().getCompanyId(); |
| | | dto.setCompanyId(companyId); |
| | | // 创建分页对象,传入当前页和每页大小 |
| | | Page<ApiMemberProductTalkVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); |
| | | Page<ApiMemberProductTalkVo> pageListByQuery = aiMemberTalkMapper.getPageMyTalkListByQuery(page, dto); |
| | | |
| | | return new FebsResponse().success().data(pageListByQuery); |
| | | } |
| | | |
| | | @Override |
| | |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.getOneByQuery(memberTalkItemQuery); |
| | | |
| | | String question = aiMemberTalkItem.getContext(); |
| | | String promptHead = aiProductRole.getPromptHead(); |
| | | String promptHead = aiProductRole.getModelId(); |
| | | String answer = dto.getReqContext(); |
| | | |
| | | List<LlmStrategyDto> llmStrategyDtoList = new ArrayList<>(); |