1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| @Operation(summary = "多模态对话功能") @PostMapping(value = "/vision", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Flux<String> visionChat( @RequestParam("files") List<MultipartFile> files, @RequestParam("question") String question ) throws IOException {
Result<List<DrugImgVO>> result = drugFeign.batchUpload(files);
if (result == null || result.getData() == null || result.getData().isEmpty()) { return Flux.just("图片上传失败,无法进行分析"); }
String ossUrl = result.getData().getFirst().getExternalPath(); log.info("OSS 图片 URL: {}", ossUrl);
Resource resource = new UrlResource(ossUrl);
return chatClient .prompt() .system("你是一个医学影像分析助手,请根据图片内容进行诊断建议。") .user(u -> u.text(question) .media(MimeTypeUtils.IMAGE_PNG, resource)) .advisors(a -> a.param(ChatMemory.DEFAULT_CONVERSATION_ID, conversationId)) .stream() .content(); }
|