| | |
| | | import cc.mrbird.febs.ai.req.memberTalkStream.*; |
| | | import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkMemberAnswerSavaVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiTalkReportListVo; |
| | | import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo; |
| | | import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo; |
| | | import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkListVo; |
| | | import cc.mrbird.febs.ai.service.*; |
| | | import cc.mrbird.febs.ai.strategy.LlmStrategyFactory; |
| | | import cc.mrbird.febs.ai.strategy.enumerates.LlmApplicationAppIdEnum; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Flux<FebsResponse> startV2(ApiMemberTalkStreamV2Dto dto) { |
| | | |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | String memberTalkId = dto.getId(); |
| | | AiMemberTalk aiMemberTalk = this.getById(memberTalkId); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | throw new FebsException("对话不存在"); |
| | | } |
| | | |
| | | LambdaQueryWrapper<AiProductRoleLink> productLinkQuery = Wrappers.lambdaQuery(AiProductRoleLink.class); |
| | | productLinkQuery.eq(AiProductRoleLink::getProductId,aiMemberTalk.getProductId()); |
| | | productLinkQuery.last("limit 1"); |
| | | AiProductRoleLink aiProductRoleLink = aiProductRoleLinkService.getByQuery(productLinkQuery); |
| | | if(ObjectUtil.isNull(aiProductRoleLink)){ |
| | | throw new FebsException("产品没有关联AI陪练"); |
| | | } |
| | | |
| | | String productRoleId = aiProductRoleLink.getProductRoleId(); |
| | | AiProductRole aiProductRole = aiProductRoleService.getById(productRoleId); |
| | | if (ObjectUtil.isNull(aiProductRole)){ |
| | | throw new FebsException("产品AI陪练不存在"); |
| | | } |
| | | |
| | | String promptHead = aiProductRole.getModelId(); |
| | | |
| | | List<LlmStrategyDto> llmStrategyDtoList = new ArrayList<>(); |
| | | LlmStrategyDto llmStrategyDto = this.buildLlmStrategyDtoList(promptHead, 1); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | llmStrategyDto = this.buildLlmStrategyDtoList("请按照上下文内容,进行对话的延续,例如提出一个相关的问题或者对内容进行一个延续", 2); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | |
| | | AiCompanyWorkflow aiCompanyWorkflow = aiCompanyWorkflowService.getByTypeAndCompanyId(LlmApplicationAppIdEnum.CONTEXT_TALK.getCode(),aiMemberTalk.getCompanyId()); |
| | | if (ObjectUtil.isNull(aiCompanyWorkflow)){ |
| | | throw new FebsException("工作流配置异常,请联系管理员"); |
| | | } |
| | | llmStrategyDto = this.buildLlmStrategyDtoList(aiCompanyWorkflow.getCode(), 4); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | |
| | | LlmStrategyDto llmStrategyDtoMessage = buildMessages(memberTalkId); |
| | | llmStrategyDtoList.add(llmStrategyDtoMessage); |
| | | String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType()); |
| | | |
| | | return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse talkList(ApiMemberTalkListDto dto) { |
| | | |
| | | return new FebsResponse().success().data(aiMemberTalkService.getPageByDto(dto)); |