Orange 开源项目 - 集成阿里云大模型

时间:2025-02-25 09:29:34
@Override public Flux<Result<ConversationReplyVO>> conversationStream(ConversationParam param, List<ChatSessionRecordVO> contextMessageList) { List<Message> messages = new ArrayList<>(MessageConverter.toMessageList(contextMessageList)); messages.add(new UserMessage(param.getPrompt())); Prompt prompt = new Prompt(messages, DashScopeChatOptions.builder() .withModel(param.getModelCode()) .build()); Flux<ChatResponse> stream = chatModel.stream(prompt); return stream .takeWhile(chatResponse -> Objects.nonNull(chatResponse) && Objects.nonNull(chatResponse.getResult()) && Objects.nonNull(chatResponse.getResult().getOutput())) .map(chatResponse -> { if (log.isDebugEnabled()) { log.debug("chatResponse: {}", chatResponse); } Usage usage = chatResponse.getMetadata().getUsage(); String content = chatResponse.getResult().getOutput().getContent(); String finishReason = chatResponse.getResult().getMetadata().getFinishReason(); ConversationReplyVO replyVO = ConversationReplyVO.builder() .event("STOP".equalsIgnoreCase(finishReason) ? ConverstationEventEnum.FINISHED : ConverstationEventEnum.REPLY) .content(content) .tokenUsage(TokenUsageVO.builder() .promptTokens(usage.getPromptTokens()) .generationTokens(usage.getGenerationTokens()) .totalTokens(usage.getTotalTokens()) .build()) .build(); return ResultWrapper.ok(replyVO); }); }