spring-ai-alibaba 1.0.0.2 学习(十六)——多模态
摘要:使用spring-ai-alibaba多模态功能时,需注意:1.调用方式需调整,使用多模态模型(如qwen-vl-max)并开启withMultiModel(true)开关;2.不同模型支持的多模态格式不同(如DashScope支持视频/图片,ZhiPu仅支持图片。
踩坑记录
在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)
3.如果是视频还需要在metadata中添加messageFormat(默认是按图片处理)
message.getMetadata().put(DashScopeApiConstants.MESSAGE_FORMAT, MessageFormat.VIDEO);
之后就可以正常使用了,比如让大模型描述图片中的内容等
扩展知识
曾想尝试着上传图片和视频之外的种类,例如pdf文档等,发现走不通
每个模型支持的多模态
每一个大模型平台支持哪些格式可以查看其ChatModel的实现类,一般call方法都会调用一个createRequest方法,在里面会对UserMessage进行转换
比如DashScopeChatModel,转换时支持video和image两种格式
spring-ai的Deepseek包中,转换只取了text,说明并不支持多模态
spring-ai的ZhiPuAiChatModel中,转换时则只支持image。
当然,这只是spring-ai或者spring-ai-alibaba的扩展包,具体大模型本身是否支持其他种类,还是要查看官方文档或使用官方sdk。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)