spring-ai-alibaba 1.0.0.2 学习(十六)——多模态

踩坑记录

在spring-ai-alibaba的官方文档中,多模态章节与spring-ai基本一样,主要是以下代码:

java 复制代码
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时需要有一些调整

java 复制代码
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(默认是按图片处理)

java 复制代码
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。

相关推荐
世人万千丶1 天前
Flutter 框架跨平台鸿蒙开发 - 恐惧清单应用
学习·flutter·华为·开源·harmonyos·鸿蒙
美酒没故事°1 天前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
yuzhuanhei1 天前
Visual Studio 配置C++opencv
c++·学习·visual studio
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
AI攻城狮1 天前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟1 天前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd1231 天前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡1 天前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate1 天前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai1 天前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学