| | |
| | | return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList); |
| | | } |
| | | |
| | | @Override |
| | | public Flux<FebsResponse> answerV2(AiTalkAnswerStreamDto dto) { |
| | | |
| | | |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | Integer type = dto.getType(); |
| | | 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陪练不存在"); |
| | | } |
| | | LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery = Wrappers.lambdaQuery(AiMemberTalkItem.class); |
| | | memberTalkItemQuery.eq(AiMemberTalkItem::getMemberId,memberUuid); |
| | | memberTalkItemQuery.eq(AiMemberTalkItem::getMemberTalkId,memberTalkId); |
| | | memberTalkItemQuery.eq(AiMemberTalkItem::getType,1); |
| | | memberTalkItemQuery.orderByDesc(AiMemberTalkItem::getCreatedTime); |
| | | memberTalkItemQuery.last("limit 1"); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.getByQuery(memberTalkItemQuery); |
| | | |
| | | String question = aiMemberTalkItem.getContext(); |
| | | String promptHead = aiProductRole.getPromptHead(); |
| | | String answer = dto.getReqContext(); |
| | | |
| | | List<LlmStrategyDto> llmStrategyDtoList = new ArrayList<>(); |
| | | LlmStrategyDto llmStrategyDto = this.buildLlmStrategyDtoList(promptHead, 1); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | llmStrategyDto = this.buildLlmStrategyDtoList(question, 3); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | llmStrategyDto = this.buildLlmStrategyDtoList(answer, 2); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | llmStrategyDto = this.buildLlmStrategyDtoList(String.valueOf(type), 4); |
| | | llmStrategyDtoList.add(llmStrategyDto); |
| | | String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType()); |
| | | |
| | | return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList); |
| | | } |
| | | |
| | | private String buildPrompt(String question,String answer,String promptHead, String promptTemplate,Integer type){ |
| | | AiPromptJsonReq aiPromptJsonReq = new AiPromptJsonReq(); |
| | | // aiPromptJsonReq.setQuestion( question); |
| | |
| | | if (type == 3){ |
| | | llmStrategyDto.setRole(Role.ASSISTANT.getValue()); |
| | | } |
| | | if (type == 4){ |
| | | llmStrategyDto.setRole(Role.TOOL.getValue()); |
| | | } |
| | | llmStrategyDto.setContent(Str); |
| | | |
| | | return llmStrategyDto; |