spring-ai-alibaba 1.0.0.2 学习(十六)——多模态
踩坑记录
在spring-ai-alibaba的官方文档中,多模态章节与spring-ai基本一样,主要是以下代码:
ChatClient.create(chatModel).prompt()
.user(u -> u.text("Explain what do you see on this picture?")
.media(MimeTypeUtils.IMAGE_PNG, new ClassPathResource("/multimodal.test.png")))
.call()
.content();
但是调用会报如下错误:
org.springframework.ai.retry.NonTransientAiException: HTTP 400 - {"request_id":"64359c98-f67d-94de-90fc-83f4df8a4572","code":"InvalidParameter","message":"url error, please check url!"}
修复建议
实际在使用spring-ai-alibaba时需要有一些调整
chatClient.prompt().user(u -> {try {u.text(input).media(MediaType.IMAGE_PNG,URI.create("图片网址").toURL());} catch (MalformedURLException e) {throw new RuntimeException(e);}}).options(DashScopeChatOptions.builder().withModel("qwen-vl-max").withMultiModel(true).build()).call().content();
1.需要调整使用的模型,具体可用模型可以参考百炼模型文本生成模型下的多模态模型(大模型服务平台百炼控制台),例如qwen-vl-max
2.需要打开多模态开关 withMultiModel(true)
之后就可以正常使用了,比如让大模型描述图片中的内容等
扩展知识
曾想尝试着上传图片和视频之外的种类,例如pdf文档等,发现走不通
每个模型支持的多模态
每一个大模型平台支持哪些格式可以查看其ChatModel的实现类,一般call方法都会调用一个createRequest方法,在里面会对UserMessage进行转换
比如DashScopeChatModel,转换时支持video和image两种格式
spring-ai的Deepseek包中,转换只取了text,说明并不支持多模态
spring-ai的ZhiPuAiChatModel中,转换时则只支持image。
当然,这只是spring-ai或者spring-ai-alibaba的扩展包,具体大模型本身是否支持其他种类,还是要查看官方文档或使用官方sdk。